Пример #1
0
def run_all(tiers):
    summary = ""
    tiers_to_run = []

    for tier in tiers.get_tiers():
        if (len(tier.get_tests()) != 0
                and re.search(CONST.CI_LOOP, tier.get_ci_loop()) is not None):
            tiers_to_run.append(tier)
            summary += ("\n    - %s:\n\t   %s" %
                        (tier.get_name(), tier.get_test_names()))

    logger.info("Tests to be executed:%s" % summary)
    GlobalVariables.EXECUTED_TEST_CASES = generate_report.init(tiers_to_run)
    for tier in tiers_to_run:
        run_tier(tier)

    generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
Пример #2
0
def run_all(tiers):
    summary = ""
    BUILD_TAG = ft_constants.CI_BUILD_TAG
    if BUILD_TAG is not None and re.search("daily", BUILD_TAG) is not None:
        CI_LOOP = "daily"
    else:
        CI_LOOP = "weekly"

    tiers_to_run = []

    for tier in tiers.get_tiers():
        if (len(tier.get_tests()) != 0
                and re.search(CI_LOOP, tier.get_ci_loop()) is not None):
            tiers_to_run.append(tier)
            summary += ("\n    - %s:\n\t   %s" %
                        (tier.get_name(), tier.get_test_names()))

    logger.info("Tests to be executed:%s" % summary)
    GlobalVariables.EXECUTED_TEST_CASES = generate_report.init(tiers_to_run)
    for tier in tiers_to_run:
        run_tier(tier)

    generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
Пример #3
0
def run_test(test, tier_name):
    result_str = "PASS"
    start = datetime.datetime.now()
    test_name = test.get_name()
    logger.info("\n")  # blank line
    print_separator("=")
    logger.info("Running test case '%s'..." % test_name)
    print_separator("=")
    logger.debug("\n%s" % test)

    if GlobalVariables.CLEAN_FLAG:
        generate_os_snapshot()

    flags = (" -t %s" % (test_name))
    if GlobalVariables.REPORT_FLAG:
        flags += " -r"

    result = testcase_base.TestcaseBase.EX_RUN_ERROR
    run_dict = get_run_dict_if_defined(test_name)
    if run_dict:
        try:
            module = importlib.import_module(run_dict['module'])
            cls = getattr(module, run_dict['class'])
            test_case = cls()
            result = test_case.run()
            if (result == testcase_base.TestCasesBase.EX_OK
                    and GlobalVariables.REPORT_FLAG):
                result = test_case.push_to_db()
        except ImportError:
            logger.exception("Cannot import module {}".format(
                run_dict['module']))
        except AttributeError:
            logger.exception("Cannot get class {}".format(run_dict['class']))
    else:
        cmd = ("%s%s" % (EXEC_SCRIPT, flags))
        logger.info("Executing command {} because {} "
                    "doesn't implement the new framework".format(
                        cmd, test_name))
        result = ft_utils.execute_command(cmd)

    if GlobalVariables.CLEAN_FLAG:
        cleanup()
    end = datetime.datetime.now()
    duration = (end - start).seconds
    duration_str = ("%02d:%02d" % divmod(duration, 60))
    logger.info("Test execution time: %s" % duration_str)

    if result != 0:
        logger.error("The test case '%s' failed. " % test_name)
        OVERALL_RESULT = -1
        result_str = "FAIL"

        if test.is_blocking():
            if not args.test or args.test == "all":
                logger.info("This test case is blocking. Aborting overall "
                            "execution.")
                # if it is a single test we don't print the whole results table
                update_test_info(test_name, result_str, duration_str)
                generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
            logger.info("Execution exit value: %s" % OVERALL_RESULT)
            sys.exit(OVERALL_RESULT)

    update_test_info(test_name, result_str, duration_str)
Пример #4
0
def run_test(test, tier_name, testcases=None):
    result_str = "PASS"
    start = datetime.datetime.now()
    test_name = test.get_name()
    logger.info("\n")  # blank line
    print_separator("=")
    logger.info("Running test case '%s'..." % test_name)
    print_separator("=")
    logger.debug("\n%s" % test)
    source_rc_file()

    if test.needs_clean() and GlobalVariables.CLEAN_FLAG:
        generate_os_snapshot()

    flags = (" -t %s" % (test_name))
    if GlobalVariables.REPORT_FLAG:
        flags += " -r"

    result = testcase.TestCase.EX_RUN_ERROR
    run_dict = get_run_dict(test_name)
    if run_dict:
        try:
            module = importlib.import_module(run_dict['module'])
            cls = getattr(module, run_dict['class'])
            test_case = cls(case_name=test_name)

            try:
                kwargs = run_dict['args']
                result = test_case.run(**kwargs)
            except KeyError:
                result = test_case.run()
            if result == testcase.TestCase.EX_OK:
                if GlobalVariables.REPORT_FLAG:
                    test_case.push_to_db()
                result = test_case.check_criteria()
        except ImportError:
            logger.exception("Cannot import module {}".format(
                run_dict['module']))
        except AttributeError:
            logger.exception("Cannot get class {}".format(run_dict['class']))
    else:
        raise Exception("Cannot import the class for the test case.")

    if test.needs_clean() and GlobalVariables.CLEAN_FLAG:
        cleanup()

    end = datetime.datetime.now()
    duration = (end - start).seconds
    duration_str = ("%02d:%02d" % divmod(duration, 60))
    logger.info("Test execution time: %s" % duration_str)

    if result != 0:
        logger.error("The test case '%s' failed. " % test_name)
        GlobalVariables.OVERALL_RESULT = Result.EX_ERROR
        result_str = "FAIL"

        if test.is_blocking():
            if not testcases or testcases == "all":
                # if it is a single test we don't print the whole results table
                update_test_info(test_name, result_str, duration_str)
                generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
            raise BlockingTestFailed(
                "The test case {} failed and is blocking".format(
                    test.get_name()))

    update_test_info(test_name, result_str, duration_str)
Пример #5
0
 def test_main_with_build_tag(self, mock_method):
     CONST.BUILD_TAG = 'test_build_tag'
     gen_report.main()
     mock_method.assert_called_once_with(test_utils.
                                         SubstrMatch('BUILD TAG'))
Пример #6
0
 def test_main_with_scenario(self, mock_method):
     CONST.DEPLOY_SCENARIO = 'test_scenario'
     gen_report.main()
     mock_method.assert_called_once_with(test_utils.SubstrMatch('SCENARIO'))
Пример #7
0
 def test_main_with_ci_loop(self, mock_method):
     CONST.CI_LOOP = 'daily'
     gen_report.main()
     mock_method.assert_called_once_with(test_utils.SubstrMatch('CI LOOP'))
Пример #8
0
 def test_main_with_ci_run(self, mock_method):
     CONST.IS_CI_RUN = True
     gen_report.main()
     mock_method.assert_called_once_with(test_utils.SubstrMatch('URL'))