def test_diff_run_tags(self): """Test for diff runs by run tags.""" run_id = self._update_runid def get_run_tag_id(tag_name): run_history_filter = RunHistoryFilter(tagNames=[tag_name]) run_tags = self._cc_client.getRunHistory([run_id], None, None, run_history_filter) self.assertEqual(len(run_tags), 1) return run_tags[0].id base_tag_id = get_run_tag_id('t1') new_tag_id = get_run_tag_id('t2') tag_filter = ReportFilter(runTag=[base_tag_id]) cmp_data = CompareData(runIds=[run_id], diffType=DiffType.NEW, runTag=[new_tag_id]) diff_res = self._cc_client.getRunResults([run_id], 500, 0, [], tag_filter, cmp_data, False) # 5 new core.CallAndMessage issues. self.assertEqual(len(diff_res), 5) cmp_data.diffType = DiffType.RESOLVED diff_res = self._cc_client.getRunResults([run_id], 500, 0, [], tag_filter, cmp_data, False) self.assertEqual(len(diff_res), 3) cmp_data.diffType = DiffType.UNRESOLVED diff_res = self._cc_client.getRunResults([run_id], 500, 0, [], tag_filter, cmp_data, False) self.assertEqual(len(diff_res), 26)
def test_get_diff_res_types_unresolved_filter(self): """ Test diff result types for unresolved results with filter. """ base_run_id = self._base_runid new_run_id = self._new_runid diff_res_types_filter = self._testproject_data[self._clang_to_test][ 'diff_res_types_filter'] cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) for level in diff_res_types_filter: for checker_name, test_result_count in level.items(): checker_filter = ReportFilter(checkerName=[checker_name]) diff_res = \ self._cc_client.getCheckerCounts([base_run_id], checker_filter, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) # There should be only one result for each checker name. self.assertEqual(test_result_count, diff_dict[checker_name])
def test_get_diff_res_types_unresolved(self): """ Test diff result types for unresolved results with no filter on the api. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) diff_res = \ self._cc_client.getCheckerCounts([base_run_id], None, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) test_res = {'unix.Malloc': 1, 'cplusplus.NewDelete': 5, 'deadcode.DeadStores': 6, 'core.StackAddressEscape': 3, 'core.DivideZero': 10} self.assertDictEqual(diff_dict, test_res)
def test_get_diff_res_count_unresolved(self): """ Count the unresolved results with no filter. """ base_run_id = self._base_runid new_run_id = self._new_runid base_count = self._cc_client.getRunResultCount([base_run_id], None, None) print("Base run id: %d", base_run_id) print("Base count: %d", base_count) base_run_res = get_all_run_results(self._cc_client, base_run_id) print_run_results(base_run_res) new_count = self._cc_client.getRunResultCount([new_run_id], None, None) print("New run id: %d", new_run_id) print("New count: %d", new_count) new_run_res = get_all_run_results(self._cc_client, new_run_id) print_run_results(new_run_res) cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) diff_res = self._cc_client.getRunResultCount([base_run_id], None, cmp_data) self.assertEqual(diff_res, 25)
def test_get_diff_res_count_unresolved_filter(self): base_run_id = self._base_runid new_run_id = self._new_runid filter_severity_levels = [{ "MEDIUM": 1 }, { "LOW": 6 }, { "HIGH": 15 }, { "STYLE": 0 }, { "UNSPECIFIED": 3 }, { "CRITICAL": 0 }] cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) for level in filter_severity_levels: for severity_level, test_result_count in level.items(): sev = get_severity_level(severity_level) sev_filter = ReportFilter(severity=[sev]) diff_result_count = self._cc_client.getRunResultCount( [base_run_id], sev_filter, cmp_data) self.assertEqual(test_result_count, diff_result_count)
def test_get_diff_res_count_new_no_base(self): """ Count the new results with no filter and no baseline run ids. """ new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.NEW) diff_res = self._cc_client.getRunResultCount([], None, cmp_data) # No differences. self.assertEqual(diff_res, 0)
def test_get_diff_severity_counts_all_new(self): """ Test diff result types for all unresolved checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.NEW) sev_res = self._cc_client.getSeverityCounts([base_run_id], None, cmp_data) test_res = {Severity.HIGH: 4} self.assertDictEqual(sev_res, test_res)
def test_get_diff_results_unresolved(self): """ Get the unresolved results with no filter. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) diff_res = self._cc_client.getRunResults([base_run_id], 500, 0, [], None, cmp_data, False) self.assertEqual(len(diff_res), 25)
def test_get_diff_results_new(self): """ Get the new results with no filter. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.NEW) diff_res = self._cc_client.getRunResults([base_run_id], 500, 0, [], None, cmp_data, False) # 4 new core.NullDereference issues. self.assertEqual(len(diff_res), 4)
def test_get_diff_new_review_status_counts(self): """ Test diff result types for all unresolved checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.NEW) res = self._cc_client.getReviewStatusCounts([base_run_id], None, cmp_data) test_res = {ReviewStatus.UNREVIEWED: 4} self.assertDictEqual(res, test_res)
def test_get_diff_res_types_resolved(self): """ Test diff result types for resolved results. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.RESOLVED) diff_res = self._cc_client.getCheckerCounts([base_run_id], None, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) test_res = {'core.CallAndMessage': 5} self.assertDictEqual(diff_dict, test_res)
def test_get_diff_checker_counts(self): """ Test diff result types for new results. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.NEW) diff_res = self._cc_client.getCheckerCounts([base_run_id], None, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) # core.CallAndMessage is the new checker. test_res = {"core.NullDereference": 4} self.assertDictEqual(diff_dict, test_res)
def test_get_diff_checker_counts_core_resolved(self): """ Test diff result types for resolved core checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid report_filter = ReportFilter(checkerName=["*core*"]) cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.RESOLVED) diff_res = self._cc_client.getCheckerCounts([base_run_id], report_filter, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) # Resolved core checkers. test_res = {'core.CallAndMessage': 5} self.assertDictEqual(diff_dict, test_res)
def test_get_diff_checker_counts_core_unresolved(self): """ Test diff result types for resolved unix checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid report_filter = ReportFilter(checkerName=["*core*"]) cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) diff_res = self._cc_client.getCheckerCounts([base_run_id], report_filter, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) # Unresolved core checkers. test_res = {'core.StackAddrEscapeBase': 3, 'core.DivideZero': 10} self.assertDictContainsSubset(test_res, diff_dict)
def test_get_diff_severity_counts_all_unresolved(self): """ Test diff result types for all unresolved checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) sev_res = self._cc_client.getSeverityCounts([base_run_id], None, cmp_data) test_res = { Severity.HIGH: 15, Severity.LOW: 6, Severity.MEDIUM: 1, Severity.UNSPECIFIED: 3 } self.assertDictEqual(sev_res, test_res)
def test_get_diff_checker_counts_all_unresolved(self): """ Test diff result types for all unresolved checker counts. """ base_run_id = self._base_runid new_run_id = self._new_runid cmp_data = CompareData(runIds=[new_run_id], diffType=DiffType.UNRESOLVED) diff_res = self._cc_client.getCheckerCounts([base_run_id], None, cmp_data, None, 0) diff_dict = dict((res.name, res.count) for res in diff_res) # All unresolved checkers. test_res = { 'unix.Malloc': 1, 'cplusplus.NewDelete': 5, 'deadcode.DeadStores': 6, 'core.StackAddrEscapeBase': 3, 'core.DivideZero': 10 } self.assertDictContainsSubset(diff_dict, test_res)