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)
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)
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
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)
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()
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()