Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Unified Diff: appengine/findit/waterfall/test/try_job_util_test.py

Issue 1591003002: [Findit] Modify tryjob pipelines to trigger try jobs for test failure. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: If different tests within the same step fail in different revisions, all revisions should be culpri… Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/findit/waterfall/test/try_job_util_test.py
diff --git a/appengine/findit/waterfall/test/try_job_util_test.py b/appengine/findit/waterfall/test/try_job_util_test.py
index 59cd51c9d737690da5d76a0da1a2c904d49e3a67..fab3aaa9f618fce5d67dccc90c1886e7b37a95eb 100644
--- a/appengine/findit/waterfall/test/try_job_util_test.py
+++ b/appengine/findit/waterfall/test/try_job_util_test.py
@@ -127,25 +127,6 @@ class TryJobUtilTest(testing.AppengineTestCase):
self.assertFalse(_MockRootPipeline.STARTED)
- def testNotNeedANewTryJobIfNotCompileFailure(self):
- master_name = 'm'
- builder_name = 'b'
- build_number = 223
- failed_steps = {
- 'a': {
- 'current_failure': 223,
- 'first_failure': 223,
- 'last_pass': 222
- }
- }
-
- need_try_job, failure_result_map, last_pass = try_job_util._NeedANewTryJob(
- master_name, builder_name, build_number, failed_steps)
-
- self.assertFalse(need_try_job)
- self.assertEqual({}, failure_result_map)
- self.assertIsNone(last_pass)
-
def testNotNeedANewTryJobIfOneWithResultExists(self):
master_name = 'm'
builder_name = 'b'
@@ -163,8 +144,10 @@ class TryJobUtilTest(testing.AppengineTestCase):
try_job.status = wf_analysis_status.ANALYZED
try_job.put()
- need_try_job, failure_result_map, last_pass = try_job_util._NeedANewTryJob(
- master_name, builder_name, build_number, failed_steps)
+ failure_result_map = {}
+ need_try_job, last_pass, try_job_type, targeted_tests = (
+ try_job_util._NeedANewTryJob(master_name, builder_name, build_number,
+ failed_steps, failure_result_map))
expected_failure_result_map = {
'compile': 'm/b/223'
@@ -173,6 +156,8 @@ class TryJobUtilTest(testing.AppengineTestCase):
self.assertFalse(need_try_job)
self.assertEqual(expected_failure_result_map, failure_result_map)
self.assertEqual(220, last_pass)
+ self.assertEqual('compile', try_job_type)
+ self.assertIsNone(targeted_tests)
def testNeedANewTryJobIfExistingOneHasError(self):
master_name = 'm'
@@ -190,8 +175,10 @@ class TryJobUtilTest(testing.AppengineTestCase):
try_job.status = wf_analysis_status.ERROR
try_job.put()
- need_try_job, failure_result_map, last_pass = try_job_util._NeedANewTryJob(
- master_name, builder_name, build_number, failed_steps)
+ failure_result_map = {}
+ need_try_job, last_pass, try_job_type, targeted_tests = (
+ try_job_util._NeedANewTryJob(master_name, builder_name, build_number,
+ failed_steps, failure_result_map))
expected_failure_result_map = {
'compile': 'm/b/223'
@@ -199,6 +186,8 @@ class TryJobUtilTest(testing.AppengineTestCase):
self.assertTrue(need_try_job)
self.assertEqual(expected_failure_result_map, failure_result_map)
self.assertEqual(220, last_pass)
+ self.assertEqual('compile', try_job_type)
+ self.assertIsNone(targeted_tests)
def testNotNeedANewTryJobIfLastPassCannotDetermine(self):
master_name = 'm'
@@ -215,12 +204,126 @@ class TryJobUtilTest(testing.AppengineTestCase):
try_job.status = wf_analysis_status.ERROR
try_job.put()
- need_try_job, failure_result_map, last_pass = try_job_util._NeedANewTryJob(
- master_name, builder_name, build_number, failed_steps)
+ failure_result_map = {}
+ need_try_job, last_pass, try_job_type, targeted_tests = (
+ try_job_util._NeedANewTryJob(master_name, builder_name, build_number,
+ failed_steps, failure_result_map))
self.assertFalse(need_try_job)
self.assertEqual({}, failure_result_map)
self.assertIsNone(last_pass)
+ self.assertEqual('compile', try_job_type)
+ self.assertIsNone(targeted_tests)
+
+ def testNeedANewTryJobIfTestFailureNonSwarming(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 223
+ failed_steps = {
+ 'a': {
+ 'current_failure': 223,
+ 'first_failure': 223,
+ 'last_pass': 222
+ },
+ 'b': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221
+ }
+ }
+
+ failure_result_map = {}
+ need_try_job, last_pass, try_job_type, targeted_tests = (
+ try_job_util._NeedANewTryJob(master_name, builder_name, build_number,
+ failed_steps, failure_result_map))
+
+ expected_failure_result_map = {
+ 'a': 'm/b/223',
+ 'b': 'm/b/222'
+ }
+
+ expected_targeted_tests = {
+ 'a': []
+ }
+
+ self.assertTrue(need_try_job)
+ self.assertEqual(expected_failure_result_map, failure_result_map)
+ self.assertEqual(222, last_pass)
+ self.assertEqual('test', try_job_type)
+ self.assertEqual(expected_targeted_tests, targeted_tests)
+
+ def testNeedANewTryJobIfTestFailureSwarming(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 223
+ failed_steps = {
+ 'a': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221,
+ 'tests': {
+ 'a.t1': {
+ 'current_failure': 223,
+ 'first_failure': 223,
+ 'last_pass': 221
+ },
+ 'a.t2': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221
+ },
+ 'a.t3': {
+ 'current_failure': 223,
+ 'first_failure': 223,
+ 'last_pass': 222
+ }
+ }
+ },
+ 'b': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221,
+ 'tests': {
+ 'b.t1': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221
+ },
+ 'b.t2': {
+ 'current_failure': 223,
+ 'first_failure': 222,
+ 'last_pass': 221
+ }
+ }
+ }
+ }
+
+ failure_result_map = {}
+ need_try_job, last_pass, try_job_type, targeted_tests = (
+ try_job_util._NeedANewTryJob(master_name, builder_name, build_number,
+ failed_steps, failure_result_map))
+
+ expected_failure_result_map = {
+ 'a': {
+ 'a.t1': 'm/b/223',
+ 'a.t2': 'm/b/222',
+ 'a.t3': 'm/b/223'
+ },
+ 'b': {
+ 'b.t1': 'm/b/222',
+ 'b.t2': 'm/b/222'
+ },
+ }
+
+ expected_targeted_tests = {
+ 'a': ['a.t1', 'a.t3']
+ }
+
+ self.assertTrue(need_try_job)
+ self.assertEqual(expected_failure_result_map, failure_result_map)
+ self.assertEqual(221, last_pass)
+ self.assertEqual('test', try_job_type)
+ self.assertEqual(expected_targeted_tests, targeted_tests)
def testNeedANewTryJob(self):
master_name = 'm'

Powered by Google App Engine
This is Rietveld 408576698