Esempio n. 1
0
def generateCoverReport(path, env, level):

    from vector.apps.ReportBuilder.custom_report import CustomReport
    from vector.apps.DataAPI.cover_api import CoverApi

    api = CoverApi(path)

    report_name = "management/" + level + "_" + env + ".html"

    try:
        CustomReport.report_from_api(api,
                                     report_type="Demo",
                                     formats=["HTML"],
                                     output_file=report_name,
                                     sections=[
                                         "CUSTOM_HEADER", "REPORT_TITLE",
                                         "TABLE_OF_CONTENTS", "CONFIG_DATA",
                                         "METRICS", "MCDC_TABLES",
                                         "AGGREGATE_COVERAGE", "CUSTOM_FOOTER"
                                     ])

        fixup_css(report_name)
    except Exception as e:
        build_dir = path.replace("\\", "/")
        build_dir = build_dir.rsplit("/", 1)[0]

        parse_traceback.parse(traceback.format_exc(), print_exc,
                              level.split("_")[0],
                              level.split("_")[2], env, build_dir)
Esempio n. 2
0
    def was_test_case_skipped(self, tc, searchName, isSystemTest):
        import sys, pprint
        try:
            if isSystemTest:
                compoundTests, initTests, simpleTestcases = self.cbtDict[
                    self.hashCode]
                # use tc.name because system tests aren't for a specific unit/function
                if tc.name in simpleTestcases.keys():
                    return [
                        False, simpleTestcases[tc.name][0],
                        simpleTestcases[tc.name][1]
                    ]
                else:
                    self.__print_test_case_was_skipped(searchName, tc.passed)
                    return [True, None, None]
            else:
                #Failed import TCs don't get any indication in the build.log
                if tc.testcase_status == "TCR_STRICT_IMPORT_FAILED":
                    return [False, None, None]

                compoundTests, initTests, simpleTestcases = self.cbtDict[
                    self.hashCode]

                #Recursive Compound don't get any named indication in the build.log
                if tc.kind == TestCase.KINDS['compound'] and (
                        tc.testcase_status == "TCR_RECURSIVE_COMPOUND"
                        or searchName in compoundTests.keys()):
                    return [
                        False, compoundTests[searchName][0],
                        compoundTests[searchName][1]
                    ]
                elif tc.kind == TestCase.KINDS[
                        'init'] and searchName in initTests.keys():
                    return [
                        False, initTests[searchName][0],
                        initTests[searchName][1]
                    ]
                elif searchName in simpleTestcases.keys(
                ) or tc.testcase_status == "TCR_NO_EXPECTED_VALUES":
                    #print ("found" , self.hashCode, searchName, str( simpleTestcases[searchName][1] - simpleTestcases[searchName][0]))
                    return [
                        False, simpleTestcases[searchName][0],
                        simpleTestcases[searchName][1]
                    ]
                else:
                    self.__print_test_case_was_skipped(searchName, tc.passed)
                    return [True, None, None]
        except KeyError:
            self.__print_test_case_was_skipped(tc.name, tc.passed)
            return [True, None, None]
        except Exception as e:
            parse_traceback.parse(traceback.format_exc(), self.print_exc,
                                  self.compiler, self.testsuite, self.env,
                                  self.build_dir)
            if self.print_exc:
                pprint.pprint("CBT Dictionary: \n" + self.cbtDict, width=132)
Esempio n. 3
0
def genDataApiReports(FullManageProjectName, entry, cbtDict,
                      generate_exec_rpt_each_testcase, use_archive_extract,
                      report_only_failures):
    xml_file = ""

    try:
        from generate_xml import GenerateXml

        # Compiler/TestSuite
        env = entry["env"]
        level = entry["compiler"] + "_" + entry["testsuite"]

        jobNameDotted = '.'.join(
            [entry["compiler"], entry["testsuite"], entry["env"]])
        jenkins_name = level + "_" + env
        jenkins_link = env + "_" + level
        xmlUnitReportName = os.getcwd(
        ) + os.sep + "xml_data" + os.sep + "test_results_" + level + "_" + env + ".xml"
        xmlCoverReportName = os.getcwd(
        ) + os.sep + "xml_data" + os.sep + "coverage_results_" + level + "_" + env + ".xml"

        xml_file = GenerateXml(FullManageProjectName, entry["build_dir"],
                               entry["env"], entry["compiler"],
                               entry["testsuite"], xmlCoverReportName,
                               jenkins_name, xmlUnitReportName, jenkins_link,
                               jobNameDotted, verbose, cbtDict,
                               generate_exec_rpt_each_testcase,
                               use_archive_extract, report_only_failures)

        if xml_file.api != None:
            if verbose:
                print("   Generate Jenkins testcase report: {}".format(
                    xmlUnitReportName))
            xml_file.generate_unit()

            if verbose:
                print("   Generate Jenkins coverage report: {}".format(
                    xmlCoverReportName))
            xml_file.generate_cover()
        else:
            print("   Skipping environment: " + jobNameDotted)

    except Exception as e:
        parse_traceback.parse(traceback.format_exc(), print_exc,
                              entry["compiler"], entry["testsuite"],
                              entry["env"], entry["build_dir"])

    try:
        return xml_file.failed_count
    except:
        return 0
Esempio n. 4
0
def generateUTReport(path, env, level):
    global verbose

    def _dummy(*args, **kwargs):
        return True

    api = UnitTestApi(path)
    report_name = "management/" + level + "_" + env + ".html"
    try:
        api.commit = _dummy
        api.report(report_type="FULL_REPORT",
                   formats=["HTML"],
                   output_file=report_name)
        fixup_css(report_name)
    except Exception as e:
        build_dir = path.replace("\\", "/")
        build_dir = build_dir.rsplit("/", 1)[0]

        parse_traceback.parse(traceback.format_exc(), print_exc,
                              level.split("_")[0],
                              level.split("_")[2], env, build_dir)
Esempio n. 5
0
    def generate_cover(self):
        self.units = []
        if self.using_cover:
            self.units = self.api.File.all()
            self.units.sort(key=lambda x: (x.coverage_type, x.unit_index))
        else:
            self.units = self.api.Unit.all()

        # unbuilt (re: Error) Ada environments causing a crash
        try:
            cov_type = self.api.environment.coverage_type_text
        except Exception as e:
            parse_traceback.parse(traceback.format_exc(), self.print_exc,
                                  self.compiler, self.testsuite, self.env,
                                  self.build_dir)
            return

        self._generate_cover(cov_type)

        self.start_cov_file_environment()
        self.write_cov_units()
        self.end_cov_file_environment()
Esempio n. 6
0
    def generate_unit(self):

        if isinstance(self.api, CoverApi):
            try:
                from vector.apps.DataAPI.vcproject_api import VCProjectApi
                self.start_system_test_file()
                api = VCProjectApi(self.FullManageProjectName)

                for env in api.Environment.all():
                    if env.compiler.name == self.compiler and env.testsuite.name == self.testsuite and env.name == self.env and env.system_tests:
                        for st in env.system_tests:
                            #pprint(vars(st))
                            pass_fail_rerun = ""
                            if st.run_needed and st.type == 2:  #SystemTestType.MANUAL:
                                pass_fail_rerun = ": Manual system tests can't be run in Jenkins"
                            elif st.run_needed:
                                pass_fail_rerun = ": Needs to be executed"
                            elif st.passed:
                                pass_fail_rerun = ": Passed"
                            else:
                                pass_fail_rerun = ": Failed"

                            level = env.compiler.name + "/" + env.testsuite.name + "/" + env.name
                            if self.verbose:
                                print(level, st.name, pass_fail_rerun)
                            self.write_testcase(st, level, st.name)
                from generate_qa_results_xml import saveQATestStatus
                saveQATestStatus(self.FullManageProjectName)

                api.close()

            except ImportError as e:
                from generate_qa_results_xml import genQATestResults
                self.failed_count += genQATestResults(
                    self.FullManageProjectName,
                    self.compiler + "/" + self.testsuite, self.env, True)
                return

        else:
            try:
                self.start_unit_test_file()
                self.add_compound_tests()
                self.add_init_tests()
                for unit in self.api.Unit.all():
                    if unit.is_uut:
                        for func in unit.functions:
                            if not func.is_non_testable_stub:
                                for tc in func.testcases:
                                    try:
                                        vctMap = tc.is_vct_map
                                    except:
                                        vctMap = False
                                    if not tc.is_csv_map and not vctMap:
                                        if not tc.for_compound_only or tc.testcase_status == "TCR_STRICT_IMPORT_FAILED":
                                            self.write_testcase(
                                                tc, tc.function.unit.name,
                                                tc.function.display_name)

            except AttributeError as e:
                parse_traceback.parse(traceback.format_exc(), self.verbose,
                                      self.compiler, self.testsuite, self.env,
                                      self.build_dir)

        self.end_test_results_file()