def testUpdateFirstFailureOnTestLevelFlaky(self): master_name = 'm' builder_name = 'b' build_number = 223 step_name = 'abc_test' failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 223, 'base_test_name': 'Unittest2.Subtest1' } } } step = WfStep.Create(master_name, builder_name, 222, step_name) step.isolated = True step.log_data = 'flaky' step.put() pipeline = DetectFirstFailurePipeline() pipeline._UpdateFirstFailureOnTestLevel(master_name, builder_name, build_number, step_name, failed_step, HttpClientAppengine()) expected_failed_step = { 'current_failure': 223, 'first_failure': 223, 'last_pass': 222, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 222, 'base_test_name': 'Unittest2.Subtest1' } } } self.assertEqual(expected_failed_step, failed_step)
def testUpdateFirstFailureOnTestLevelFlaky(self): master_name = 'm' builder_name = 'b' build_number = 223 step_name = 'abc_test' failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 223 } } } step = WfStep.Create(master_name, builder_name, 222, step_name) step.isolated = True step.log_data = 'flaky' step.put() pipeline = DetectFirstFailurePipeline() pipeline._UpdateFirstFailureOnTestLevel( master_name, builder_name, build_number, step_name, failed_step, HttpClient()) expected_failed_step = { 'current_failure': 223, 'first_failure': 223, 'last_pass': 222, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 222 } } } self.assertEqual(expected_failed_step, failed_step)
def testUpdateFirstFailureOnTestLevelThenUpdateStepLevel(self): master_name = 'm' builder_name = 'b' build_number = 223 step_name = 'abc_test' failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 223, 'base_test_name': 'Unittest2.Subtest1' }, 'Unittest3.Subtest2': { 'current_failure': 223, 'first_failure': 223, 'base_test_name': 'Unittest3.Subtest2' } } } for n in xrange(222, 220, -1): # Mock retrieving data from swarming server for a single step. self._MockUrlFetchWithSwarmingData(master_name, builder_name, n, 'abc_test') # Mock retrieving hash to output.json from isolated server. isolated_data = { 'isolatedserver': 'https://isolateserver.appspot.com', 'namespace': { 'namespace': 'default-gzip' }, 'digest': 'isolatedhashabctest-%d' % n } self._MockUrlfetchWithIsolatedData(isolated_data, build_number=n) # Mock retrieving url to output.json from isolated server. file_hash_data = { 'isolatedserver': 'https://isolateserver.appspot.com', 'namespace': { 'namespace': 'default-gzip' }, 'digest': 'abctestoutputjsonhash-%d' % n } self._MockUrlfetchWithIsolatedData(file_hash_data, build_number=n) # Mock downloading output.json from isolated server. self._MockUrlfetchWithIsolatedData( None, ('https://isolateserver.storage.googleapis.com/default-gzip/' 'm_b_%d_abc_test' % n), '%s_%s_%d_%s.json' % (master_name, builder_name, n, 'abc_test')) pipeline = DetectFirstFailurePipeline() pipeline._UpdateFirstFailureOnTestLevel(master_name, builder_name, build_number, step_name, failed_step, HttpClientAppengine()) expected_failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 222, 'last_pass': 221, 'base_test_name': 'Unittest2.Subtest1' }, 'Unittest3.Subtest2': { 'current_failure': 223, 'first_failure': 221, 'base_test_name': 'Unittest3.Subtest2' } } } self.assertEqual(expected_failed_step, failed_step)
def testUpdateFirstFailureOnTestLevelThenUpdateStepLevel(self): master_name = 'm' builder_name = 'b' build_number = 223 step_name = 'abc_test' failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 223, 'last_pass': 223 }, 'Unittest3.Subtest2': { 'current_failure': 223, 'first_failure': 223 } } } for n in xrange(222, 220, -1): # Mock retrieving data from swarming server for a single step. self._MockUrlFetchWithSwarmingData( master_name, builder_name, n, 'abc_test') # Mock retrieving hash to output.json from isolated server. isolated_data = { 'isolatedserver': 'https://isolateserver.appspot.com', 'namespace': { 'namespace': 'default-gzip' }, 'digest': 'isolatedhashabctest-%d' % n } self._MockUrlfetchWithIsolatedData( isolated_data, build_number=n) # Mock retrieving url to output.json from isolated server. file_hash_data = { 'isolatedserver': 'https://isolateserver.appspot.com', 'namespace': { 'namespace': 'default-gzip' }, 'digest': 'abctestoutputjsonhash-%d' % n } self._MockUrlfetchWithIsolatedData( file_hash_data, build_number=n) # Mock downloading output.json from isolated server. self._MockUrlfetchWithIsolatedData( None, ('https://isolateserver.storage.googleapis.com/default-gzip/' 'm_b_%d_abc_test' % n), '%s_%s_%d_%s.json' % (master_name, builder_name, n, 'abc_test')) pipeline = DetectFirstFailurePipeline() pipeline._UpdateFirstFailureOnTestLevel( master_name, builder_name, build_number, step_name, failed_step, HttpClient()) expected_failed_step = { 'current_failure': 223, 'first_failure': 221, 'tests': { 'Unittest2.Subtest1': { 'current_failure': 223, 'first_failure': 222, 'last_pass': 221 }, 'Unittest3.Subtest2': { 'current_failure': 223, 'first_failure': 221 } } } self.assertEqual(expected_failed_step, failed_step)