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

Unified Diff: appengine/findit/test/findit_api_test.py

Issue 2435983003: [Findit] Asynchronously process flake reports from chromium-try-flakes. (Closed)
Patch Set: Rebase to resolve conflict Created 4 years, 2 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/queue.yaml ('k') | appengine/findit/waterfall-backend.yaml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/findit/test/findit_api_test.py
diff --git a/appengine/findit/test/findit_api_test.py b/appengine/findit/test/findit_api_test.py
index b2e109362a1580b0e890ab02e4e0741dcd0adb8c..4655a234802a4a97acdd05621e00a29eb46897ab 100644
--- a/appengine/findit/test/findit_api_test.py
+++ b/appengine/findit/test/findit_api_test.py
@@ -4,6 +4,7 @@
import json
import mock
+import pickle
import re
import endpoints
@@ -14,16 +15,16 @@ from testing_utils import testing
from common.waterfall import failure_type
import findit_api
-from findit_api import FindItApi
+from model import analysis_status
+from model.flake.flake_analysis_request import FlakeAnalysisRequest
from model.wf_analysis import WfAnalysis
from model.wf_swarming_task import WfSwarmingTask
from model.wf_try_job import WfTryJob
-from model import analysis_status
from waterfall import waterfall_config
class FinditApiTest(testing.EndpointsTestCase):
- api_service_cls = FindItApi
+ api_service_cls = findit_api.FindItApi
def setUp(self):
super(FinditApiTest, self).setUp()
@@ -706,10 +707,8 @@ class FinditApiTest(testing.EndpointsTestCase):
expected_payload_json,
json.loads(self.taskqueue_requests[0].get('payload')))
- @mock.patch.object(
- findit_api.flake_analysis_service,
- 'ScheduleAnalysisForFlake', return_value=None)
- def testUnauthorizedRequestToAnalyzeFlake(self, _mocked_object):
+ @mock.patch.object(findit_api, '_AsyncProcessFlakeReport', return_value=None)
+ def testUnauthorizedRequestToAnalyzeFlake(self, mocked_func):
self.mock_current_user(user_email='test@chromium.org', is_admin=False)
flake = {
@@ -731,11 +730,11 @@ class FinditApiTest(testing.EndpointsTestCase):
re.compile('.*401 Unauthorized.*',
re.MULTILINE | re.DOTALL),
self.call_api, 'AnalyzeFlake', body=flake)
+ mocked_func.assert_not_called()
@mock.patch.object(
- findit_api.flake_analysis_service,
- 'ScheduleAnalysisForFlake', return_value=True)
- def testAuthorizedRequestToAnalyzeFlake(self, _mocked_object):
+ findit_api, '_AsyncProcessFlakeReport', side_effect=Exception())
+ def testAuthorizedRequestToAnalyzeFlakeNotQueued(self, mocked_func):
self.mock_current_user(user_email='test@chromium.org', is_admin=True)
flake = {
@@ -754,4 +753,41 @@ class FinditApiTest(testing.EndpointsTestCase):
response = self.call_api('AnalyzeFlake', body=flake)
self.assertEqual(200, response.status_int)
- self.assertTrue(response.json_body.get('analysis_triggered'))
+ self.assertFalse(response.json_body.get('queued'))
+ self.assertEqual(1, mocked_func.call_count)
+ self.assertEqual(0, len(self.taskqueue_requests))
+
+ def testAuthorizedRequestToAnalyzeFlakeQueued(self):
+ self.mock_current_user(user_email='test@chromium.org', is_admin=True)
+
+ flake = {
+ 'name': 'suite.test',
+ 'is_step': False,
+ 'bug_id': 123,
+ 'build_steps': [
+ {
+ 'master_name': 'm',
+ 'builder_name': 'b',
+ 'build_number': 456,
+ 'step_name': 'name (with patch) on Windows-7-SP1',
+ }
+ ]
+ }
+
+ response = self.call_api('AnalyzeFlake', body=flake)
+ self.assertEqual(200, response.status_int)
+ self.assertTrue(response.json_body.get('queued'))
+ self.assertEqual(1, len(self.taskqueue_requests))
+ request, user_email, is_admin = pickle.loads(
+ self.taskqueue_requests[0]['payload'])
+ self.assertEqual('suite.test', request.name)
+ self.assertFalse(request.is_step)
+ self.assertEqual(123, request.bug_id)
+ self.assertEqual(1, len(request.build_steps))
+ self.assertEqual('m', request.build_steps[0].master_name)
+ self.assertEqual('b', request.build_steps[0].builder_name)
+ self.assertEqual(456, request.build_steps[0].build_number)
+ self.assertEqual('name (with patch) on Windows-7-SP1',
+ request.build_steps[0].step_name)
+ self.assertEqual('test@chromium.org', user_email)
+ self.assertTrue(is_admin)
« no previous file with comments | « appengine/findit/queue.yaml ('k') | appengine/findit/waterfall-backend.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698