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

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: . Created 4 years, 10 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..fdb9b04619c19ad6d9d233e93a8b58b3011ebaf2 100644
--- a/appengine/findit/waterfall/test/try_job_util_test.py
+++ b/appengine/findit/waterfall/test/try_job_util_test.py
@@ -9,6 +9,7 @@ from model.wf_analysis import WfAnalysis
from model.wf_try_job import WfTryJob
from waterfall import try_job_util
from waterfall import waterfall_config
+from waterfall.try_job_type import TryJobType
class _MockRootPipeline(object):
@@ -127,25 +128,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 +145,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 +157,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(TryJobType.COMPILE, try_job_type)
+ self.assertIsNone(targeted_tests)
def testNeedANewTryJobIfExistingOneHasError(self):
master_name = 'm'
@@ -190,8 +176,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 +187,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(TryJobType.COMPILE, try_job_type)
+ self.assertIsNone(targeted_tests)
def testNotNeedANewTryJobIfLastPassCannotDetermine(self):
master_name = 'm'
@@ -215,12 +205,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(TryJobType.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'
@@ -274,4 +378,3 @@ class TryJobUtilTest(testing.AppengineTestCase):
self.assertEqual(
try_job_util._GetFailedTargetsFromSignals(signals), ['a.exe'])
-
« no previous file with comments | « appengine/findit/waterfall/test/try_job_pipeline_test.py ('k') | appengine/findit/waterfall/try_job_pipeline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698