def testOutputResultsSmoketest(self): """Test that nothing blows up when outputting.""" expectation_map = { 'foo': { data_types.Expectation('foo', ['win', 'intel'], 'RetryOnFailure'): { 'stale': { 'all_pass': uu.CreateStatsWithPassFails(2, 0), }, }, data_types.Expectation('foo', ['linux'], 'Failure'): { 'semi_stale': { 'all_pass': uu.CreateStatsWithPassFails(2, 0), 'some_pass': uu.CreateStatsWithPassFails(1, 1), 'none_pass': uu.CreateStatsWithPassFails(0, 2), }, }, data_types.Expectation('foo', ['mac'], 'Failure'): { 'active': { 'none_pass': uu.CreateStatsWithPassFails(0, 2), }, }, }, } unmatched_results = { 'builder': [ data_types.Result('foo', ['win', 'intel'], 'Failure', 'step_name', 'build_id'), ], } unmatched_expectations = [ data_types.Expectation('foo', ['linux'], 'RetryOnFailure') ] stale, semi_stale, active = expectations.SplitExpectationsByStaleness( expectation_map) result_output.OutputResults(stale, semi_stale, active, {}, [], 'print', self._file_handle) result_output.OutputResults(stale, semi_stale, active, unmatched_results, [], 'print', self._file_handle) result_output.OutputResults(stale, semi_stale, active, {}, unmatched_expectations, 'print', self._file_handle) result_output.OutputResults(stale, semi_stale, active, unmatched_results, unmatched_expectations, 'print', self._file_handle) result_output.OutputResults(stale, semi_stale, active, {}, [], 'html', self._file_handle) result_output.OutputResults(stale, semi_stale, active, unmatched_results, [], 'html', self._file_handle) result_output.OutputResults(stale, semi_stale, active, {}, unmatched_expectations, 'html', self._file_handle) result_output.OutputResults(stale, semi_stale, active, unmatched_results, unmatched_expectations, 'html', self._file_handle)
def testSemiStaleExpectations(self): """Tests output when only semi-stale expectations are provided.""" expectation_map = data_types.TestExpectationMap({ 'foo': data_types.ExpectationBuilderMap({ data_types.Expectation('foo', ['win'], ['Failure']): data_types.BuilderStepMap({ 'foo_builder': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(1, 0), 'step2': uu.CreateStatsWithPassFails(2, 2), }), 'bar_builder': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(3, 0), 'step2': uu.CreateStatsWithPassFails(0, 4) }), }), data_types.Expectation('foo', ['linux'], ['RetryOnFailure']): data_types.BuilderStepMap({ 'foo_builder': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(5, 0), 'step2': uu.CreateStatsWithPassFails(6, 6), }), }), }), 'bar': data_types.ExpectationBuilderMap({ data_types.Expectation('bar', ['win'], ['Failure']): data_types.BuilderStepMap({ 'foo_builder': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(7, 0), }), 'bar_builder': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(0, 8), }), }), }), }) expected_semi_stale_dict = copy.deepcopy(expectation_map) stale_dict, semi_stale_dict, active_dict =\ expectations.SplitExpectationsByStaleness(expectation_map) self.assertEqual(stale_dict, {}) self.assertEqual(semi_stale_dict, expected_semi_stale_dict) self.assertEqual(active_dict, {})
def testActiveExpectations(self): """Tests output when only active expectations are provided.""" expectation_map = { 'foo': { data_types.Expectation('foo', ['win'], ['Failure']): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(0, 1), 'step2': uu.CreateStatsWithPassFails(0, 2), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(0, 3), 'step2': uu.CreateStatsWithPassFails(0, 4) }, }, data_types.Expectation('foo', ['linux'], ['RetryOnFailure']): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(0, 5), 'step2': uu.CreateStatsWithPassFails(0, 6), }, }, }, 'bar': { data_types.Expectation('bar', ['win'], ['Failure']): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(0, 7), }, }, }, } expected_active_dict = copy.deepcopy(expectation_map) stale_dict, semi_stale_dict, active_dict =\ expectations.SplitExpectationsByStaleness(expectation_map) self.assertEqual(stale_dict, {}) self.assertEqual(semi_stale_dict, {}) self.assertEqual(active_dict, expected_active_dict)
def testAllExpectations(self): """Tests output when all three types of expectations are provided.""" expectation_map = { 'foo': { data_types.Expectation('foo', ['stale'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 0), 'step2': uu.CreateStatsWithPassFails(2, 0), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 0), 'step2': uu.CreateStatsWithPassFails(4, 0) }, }, data_types.Expectation('foo', ['semistale'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 0), 'step2': uu.CreateStatsWithPassFails(2, 2), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 0), 'step2': uu.CreateStatsWithPassFails(0, 4) }, }, data_types.Expectation('foo', ['active'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 1), 'step2': uu.CreateStatsWithPassFails(2, 2), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 3), 'step2': uu.CreateStatsWithPassFails(0, 4) }, }, }, } expected_stale = { 'foo': { data_types.Expectation('foo', ['stale'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 0), 'step2': uu.CreateStatsWithPassFails(2, 0), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 0), 'step2': uu.CreateStatsWithPassFails(4, 0) }, }, }, } expected_semi_stale = { 'foo': { data_types.Expectation('foo', ['semistale'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 0), 'step2': uu.CreateStatsWithPassFails(2, 2), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 0), 'step2': uu.CreateStatsWithPassFails(0, 4) }, }, }, } expected_active = { 'foo': { data_types.Expectation('foo', ['active'], 'Failure'): { 'foo_builder': { 'step1': uu.CreateStatsWithPassFails(1, 1), 'step2': uu.CreateStatsWithPassFails(2, 2), }, 'bar_builder': { 'step1': uu.CreateStatsWithPassFails(3, 3), 'step2': uu.CreateStatsWithPassFails(0, 4) }, }, }, } stale_dict, semi_stale_dict, active_dict =\ expectations.SplitExpectationsByStaleness(expectation_map) self.assertEqual(stale_dict, expected_stale) self.assertEqual(semi_stale_dict, expected_semi_stale) self.assertEqual(active_dict, expected_active)
def testBasic(self): """Tests that a map is properly converted.""" builder_map = data_types.BuilderStepMap({ 'fully pass': data_types.StepBuildStatsMap({ 'step1': uu.CreateStatsWithPassFails(1, 0), }), 'never pass': data_types.StepBuildStatsMap({ 'step3': uu.CreateStatsWithPassFails(0, 1), }), 'partial pass': data_types.StepBuildStatsMap({ 'step5': uu.CreateStatsWithPassFails(1, 1), }), 'mixed': data_types.StepBuildStatsMap({ 'step7': uu.CreateStatsWithPassFails(1, 0), 'step8': uu.CreateStatsWithPassFails(0, 1), 'step9': uu.CreateStatsWithPassFails(1, 1), }), }) output = expectations._ConvertBuilderMapToPassOrderedStringDict( builder_map) expected_output = collections.OrderedDict() expected_output[result_output.FULL_PASS] = { 'fully pass': [ 'step1 (1/1)', ], 'mixed': [ 'step7 (1/1)', ], } expected_output[result_output.NEVER_PASS] = { 'never pass': [ 'step3 (0/1)', ], 'mixed': [ 'step8 (0/1)', ], } expected_output[result_output.PARTIAL_PASS] = { 'partial pass': { 'step5 (1/2)': [ 'http://ci.chromium.org/b/build_id0', ], }, 'mixed': { 'step9 (1/2)': [ 'http://ci.chromium.org/b/build_id0', ], }, } self.assertEqual(output, expected_output)
def testSemiStaleMap(self): """Tests that everything functions when regular data is provided.""" expectation_map = data_types.TestExpectationMap({ 'foo': data_types.ExpectationBuilderMap({ data_types.Expectation('foo', ['win', 'intel'], ['RetryOnFailure']): data_types.BuilderStepMap({ 'builder': data_types.StepBuildStatsMap({ 'all_pass': uu.CreateStatsWithPassFails(2, 0), 'all_fail': uu.CreateStatsWithPassFails(0, 2), 'some_pass': uu.CreateStatsWithPassFails(1, 1), }), }), data_types.Expectation('foo', ['linux', 'intel'], [ 'RetryOnFailure' ]): data_types.BuilderStepMap({ 'builder': data_types.StepBuildStatsMap({ 'all_pass': uu.CreateStatsWithPassFails(2, 0), }), }), data_types.Expectation('foo', ['mac', 'intel'], ['RetryOnFailure']): data_types.BuilderStepMap({ 'builder': data_types.StepBuildStatsMap({ 'all_fail': uu.CreateStatsWithPassFails(0, 2), }), }), }), }) expected_ouput = { 'foo': { '"RetryOnFailure" expectation on "win intel"': { 'builder': { 'Fully passed in the following': [ 'all_pass (2/2)', ], 'Never passed in the following': [ 'all_fail (0/2)', ], 'Partially passed in the following': { 'some_pass (1/2)': [ data_types.BuildLinkFromBuildId('build_id0'), ], }, }, }, '"RetryOnFailure" expectation on "intel linux"': { 'builder': { 'Fully passed in the following': [ 'all_pass (2/2)', ], }, }, '"RetryOnFailure" expectation on "mac intel"': { 'builder': { 'Never passed in the following': [ 'all_fail (0/2)', ], }, }, }, } str_dict = result_output._ConvertTestExpectationMapToStringDict( expectation_map) self.assertEqual(str_dict, expected_ouput)