import contextlib import logging import pprint import sys import click import lnt.formats from lnt.lnttool.common import submit_options, init_logger from lnt.server.db.rules_manager import register_hooks @click.command("import") @click.argument("instance_path", type=click.UNPROCESSED) @click.argument("files", nargs=-1, type=click.Path(exists=True), required=True) @click.option("--database", default="default", show_default=True, help="database to modify") @click.option("--format", "output_format", show_default=True, type=click.Choice(lnt.formats.format_names + ['']), default='', help="input format") @click.option("--show-sql", is_flag=True, help="show SQL statements") @click.option("--show-sample-count", is_flag=True) @click.option("--show-raw-result", is_flag=True) @click.option("--testsuite", "-s", default='nts') @click.option("--verbose", "-v", is_flag=True, help="show verbose test results") @click.option("--quiet", "-q", is_flag=True, help="don't show test results") @click.option("--no-email", is_flag=True, help="don't send e-mail") @click.option("--no-report", is_flag=True, help="don't generate report") @submit_options def action_import(instance_path, files, database, output_format, show_sql, show_sample_count, show_raw_result, testsuite, verbose, quiet, no_email, no_report, select_machine, merge): """import test data into a database""" import lnt.server.instance import lnt.util.ImportData init_logger(logging.INFO if verbose or show_sql else logging.WARNING, show_sql=show_sql) # Load the LNT instance. instance = lnt.server.instance.Instance.frompath(instance_path) config = instance.config register_hooks() # Get the database. with contextlib.closing(config.get_database(database)) as db: session = db.make_session() # Load the database. success = True for file_name in files: result = lnt.util.ImportData.import_and_report( config, database, db, session, file_name, output_format, testsuite, show_sample_count, no_email, no_report, select_machine=select_machine, merge_run=merge) success &= result.get('success', False) if quiet: continue if show_raw_result: pprint.pprint(result) else: lnt.util.ImportData.print_report_result(result, sys.stdout, sys.stderr, verbose) if not success: raise SystemExit(1)