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

Unified Diff: appengine/findit/handlers/test/handlers_util_test.py

Issue 1797093002: [Findit] Fix bug when display try job result for non-swarming step. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: . Created 4 years, 9 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
« no previous file with comments | « appengine/findit/handlers/swarming_task.py ('k') | appengine/findit/handlers/test/swarming_task_test.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/findit/handlers/test/handlers_util_test.py
diff --git a/appengine/findit/handlers/test/try_job_result_test.py b/appengine/findit/handlers/test/handlers_util_test.py
similarity index 65%
copy from appengine/findit/handlers/test/try_job_result_test.py
copy to appengine/findit/handlers/test/handlers_util_test.py
index b229af1bf4dddbb3a6ca3de34261a1fe5591bc54..f0c6230339b779a0fb896fee14c9f4bc7ebdde75 100644
--- a/appengine/findit/handlers/test/try_job_result_test.py
+++ b/appengine/findit/handlers/test/handlers_util_test.py
@@ -1,36 +1,184 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
+# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-import webapp2
-
from testing_utils import testing
-from handlers import try_job_result
+from handlers import handlers_util
from model.wf_analysis import WfAnalysis
from model import wf_analysis_status
from model.wf_swarming_task import WfSwarmingTask
from model.wf_try_job import WfTryJob
from waterfall import buildbot
+from waterfall import waterfall_config
-class TryJobResultTest(testing.AppengineTestCase):
- app_module = webapp2.WSGIApplication([
- ('/try-job-result', try_job_result.TryJobResult),], debug=True)
+class HandlersUtilResultTest(testing.AppengineTestCase):
def setUp(self):
- super(TryJobResultTest, self).setUp()
+ super(HandlersUtilResultTest, self).setUp()
self.master_name = 'm'
self.builder_name = 'b'
self.build_number = 121
- self.mock_current_user(user_email='test@chromium.org', is_admin=True)
+
+ def MockedGetSwarmingSettings():
+ return {'server_host': 'chromium-swarm.appspot.com'}
+ self.mock(
+ waterfall_config, 'GetSwarmingSettings', MockedGetSwarmingSettings)
+
+ def testGenerateSwarmingTasksDataNoAnalysis(self):
+ data = handlers_util.GenerateSwarmingTasksData(
+ self.master_name, self.builder_name, self.build_number)
+
+ self.assertEqual({}, data)
+
+ def testGenerateSwarmingTasksDataReturnEmptyIfNoFailureMap(self):
+ WfAnalysis.Create(
+ self.master_name, self.builder_name, self.build_number).put()
+
+ data = handlers_util.GenerateSwarmingTasksData(
+ self.master_name, self.builder_name, self.build_number)
+
+ self.assertEqual({}, data)
+
+ def testGenerateSwarmingTasksDataReturnEmptyIfNoSwarmingTests(self):
+ analysis = WfAnalysis.Create(
+ self.master_name, self.builder_name, self.build_number)
+ analysis.failure_result_map = {
+ 'step1': '%s/%s/%s' % (self.master_name, self.builder_name, 120),
+ 'step2': '%s/%s/%s' % (
+ self.master_name, self.builder_name, self.build_number)
+ }
+ analysis.put()
+
+ data = handlers_util.GenerateSwarmingTasksData(
+ self.master_name, self.builder_name, self.build_number)
+
+ self.assertEqual({}, data)
+
+ def testGenerateSwarmingTasksDataIfNoSwarmingTask(self):
+ analysis = WfAnalysis.Create(
+ self.master_name, self.builder_name, self.build_number)
+ analysis.failure_result_map = {
+ 'step1': {
+ 'test1': '%s/%s/%s' % (self.master_name, self.builder_name, 120),
+ 'test2': '%s/%s/%s' % (
+ self.master_name, self.builder_name, self.build_number)
+ },
+ 'step2': {
+ 'test1': '%s/%s/%s' % (self.master_name, self.builder_name, 120)
+ }
+ }
+ analysis.put()
+
+ data = handlers_util.GenerateSwarmingTasksData(
+ self.master_name, self.builder_name, self.build_number)
+
+ expected_data = {
+ 'step1': {
+ 'swarming_tasks': [],
+ 'tests': {}
+ },
+ 'step2': {
+ 'swarming_tasks': [],
+ 'tests': {}
+ }
+ }
+ self.assertEqual(expected_data, data)
+
+ def testGenerateSwarmingTasksData(self):
+ analysis = WfAnalysis.Create(
+ self.master_name, self.builder_name, self.build_number)
+ analysis.failure_result_map = {
+ 'step1': {
+ 'test1': '%s/%s/%s' % (self.master_name, self.builder_name, 120),
+ 'test2': '%s/%s/%s' % (
+ self.master_name, self.builder_name, self.build_number)
+ },
+ 'step2': {
+ 'test1': '%s/%s/%s' % (
+ self.master_name, self.builder_name, self.build_number)
+ }
+ }
+ analysis.put()
+
+ task0 = WfSwarmingTask.Create(
+ self.master_name, self.builder_name, 120, 'step1')
+ task0.task_id = 'task0'
+ task0.status = wf_analysis_status.ANALYZED
+ task0.put()
+
+ task1 = WfSwarmingTask.Create(
+ self.master_name, self.builder_name, self.build_number, 'step1')
+ task1.task_id = 'task1'
+ task1.status = wf_analysis_status.ANALYZED
+ task1.put()
+
+ task2 = WfSwarmingTask.Create(
+ self.master_name, self.builder_name, self.build_number, 'step2')
+ task2.put()
+
+ data = handlers_util.GenerateSwarmingTasksData(
+ self.master_name, self.builder_name, self.build_number)
+
+ expected_data = {
+ 'step1': {
+ 'swarming_tasks': [
+ {
+ 'status': 'Completed',
+ 'task_id': 'task1',
+ 'task_url': (
+ 'https://chromium-swarm.appspot.com/user/task/task1')
+ },
+ {
+ 'status': 'Completed',
+ 'task_id': 'task0',
+ 'task_url': (
+ 'https://chromium-swarm.appspot.com/user/task/task0')
+ }
+ ],
+ 'tests': {
+ 'test1': {
+ 'status': 'Completed',
+ 'task_id': 'task0',
+ 'task_url': (
+ 'https://chromium-swarm.appspot.com/user/task/task0')
+ },
+ 'test2': {
+ 'status': 'Completed',
+ 'task_id': 'task1',
+ 'task_url': (
+ 'https://chromium-swarm.appspot.com/user/task/task1')
+ }
+ }
+ },
+ 'step2': {
+ 'swarming_tasks': [
+ {
+ 'status': 'Pending'
+ }
+ ],
+ 'tests': {
+ 'test1': {
+ 'status': 'Pending'
+ }
+ }
+ }
+ }
+ self.assertEqual(expected_data, data)
+
+ def testGetAllTryJobResultsNoAnalysis(self):
+ data = handlers_util.GetAllTryJobResults(
+ self.master_name, self.builder_name, self.build_number)
+
+ self.assertEqual({}, data)
def testGetTryJobResultReturnNoneIfNoFailureResultMap(self):
analysis = WfAnalysis.Create(
self.master_name, self.builder_name, self.build_number)
analysis.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
self.assertEqual({}, result)
@@ -43,7 +191,7 @@ class TryJobResultTest(testing.AppengineTestCase):
}
analysis.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -68,7 +216,7 @@ class TryJobResultTest(testing.AppengineTestCase):
self.master_name, self.builder_name, self.build_number)
try_job.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -102,7 +250,7 @@ class TryJobResultTest(testing.AppengineTestCase):
]
try_job.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -136,7 +284,7 @@ class TryJobResultTest(testing.AppengineTestCase):
]
try_job.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -181,7 +329,7 @@ class TryJobResultTest(testing.AppengineTestCase):
]
try_job.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -225,7 +373,7 @@ class TryJobResultTest(testing.AppengineTestCase):
]
try_job.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -243,15 +391,6 @@ class TryJobResultTest(testing.AppengineTestCase):
self.assertEqual(expected_result, result)
- def testTryJobResultHandler(self):
- build_url = buildbot.CreateBuildUrl(
- self.master_name, self.builder_name, self.build_number)
- response = self.test_app.get('/try-job-result', params={'url': build_url})
- expected_results = {}
-
- self.assertEqual(200, response.status_int)
- self.assertEqual(expected_results, response.json_body)
-
def testGetTryJobResultWhenTryJobForTestCompleted(self):
analysis = WfAnalysis.Create(
self.master_name, self.builder_name, self.build_number)
@@ -415,7 +554,7 @@ class TryJobResultTest(testing.AppengineTestCase):
]
try_job_122.put()
- result = try_job_result._GetAllTryJobResults(
+ result = handlers_util.GetAllTryJobResults(
self.master_name, self.builder_name, self.build_number)
expected_result = {
@@ -492,3 +631,72 @@ class TryJobResultTest(testing.AppengineTestCase):
}
}
self.assertEqual(expected_result, result)
+
+ def testUpdateFlakinessNoTask(self):
+ step_name = 's'
+ failure_key_set = ['m/b/1']
+ culprits_info = None
+ handlers_util._UpdateFlakiness(step_name, failure_key_set, culprits_info)
+ self.assertIsNone(culprits_info)
+
+ def testGetCulpritInfoForTryJobResultStep(self):
+ try_job_key = 'm/b/120'
+ culprits_info = {
+ 'a_test': {
+ 'step': 'a_test',
+ 'test': 'N/A',
+ 'try_job_key': try_job_key
+ }
+ }
+
+ try_job_120 = WfTryJob.Create(
+ self.master_name, self.builder_name, 120)
+ try_job_120.status = wf_analysis_status.ANALYZED
+ try_job_120.test_results = [
+ {
+ 'result': {
+ 'rev0': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test3']
+ }
+ }
+ },
+ 'url': ('http://build.chromium.org/p/tryserver.chromium.linux/'
+ 'builders/linux_chromium_variable/builds/120'),
+ 'try_job_id': '0',
+ 'culprit': {
+ 'a_test': {
+ 'tests': {
+ 'a_test3': {
+ 'revision': 'rev0',
+ 'commit_position': '0',
+ 'review_url': 'url_0'
+ }
+ }
+ }
+ }
+ }
+ ]
+ try_job_120.put()
+
+ handlers_util._GetCulpritInfoForTryJobResult(try_job_key, culprits_info)
+
+ expected_culprits_info = {
+ 'a_test-a_test3': {
+ 'step': 'a_test',
+ 'test': 'a_test3',
+ 'try_job_key': 'm/b/120',
+ 'try_job_build_number': 120,
+ 'status': 'Completed',
+ 'try_job_url': (
+ 'http://build.chromium.org/p/tryserver.chromium.linux/'
+ 'builders/linux_chromium_variable/builds/120'),
+ 'revision': 'rev0',
+ 'commit_position': '0',
+ 'review_url': 'url_0'
+ }
+ }
+
+ self.assertEqual(expected_culprits_info, culprits_info)
« no previous file with comments | « appengine/findit/handlers/swarming_task.py ('k') | appengine/findit/handlers/test/swarming_task_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698