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

Unified Diff: appengine/cr-buildbucket/test/service_test.py

Issue 2170673002: buildbucket: add longest_pending_time API (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: nits Created 4 years, 5 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/cr-buildbucket/test/api_test.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/cr-buildbucket/test/service_test.py
diff --git a/appengine/cr-buildbucket/test/service_test.py b/appengine/cr-buildbucket/test/service_test.py
index 588306707880cc47c6ad59fbe6ea5bab88d5691a..7c6184d1e1fb47ac9cb766a1b754e6a663aa32d2 100644
--- a/appengine/cr-buildbucket/test/service_test.py
+++ b/appengine/cr-buildbucket/test/service_test.py
@@ -48,7 +48,8 @@ class BuildBucketServiceTest(testing.AppengineTestCase):
self.current_identity = auth.Identity('service', 'unittest')
self.mock(auth, 'get_current_identity', lambda: self.current_identity)
self.mock(acl, 'can_async', lambda *_: future(True))
- self.mock(utils, 'utcnow', lambda: datetime.datetime(2015, 1, 1))
+ self.now = datetime.datetime(2015, 1, 1)
+ self.mock(utils, 'utcnow', lambda: self.now)
self.mock(swarming, 'is_for_swarming_async', mock.Mock())
self.mock(swarming, 'create_task_async', mock.Mock())
swarming.is_for_swarming_async.return_value = ndb.Future()
@@ -822,3 +823,43 @@ class BuildBucketServiceTest(testing.AppengineTestCase):
with self.assertRaises(errors.InvalidInputError):
service.delete_many_builds(
self.test_build.bucket, model.BuildStatus.COMPLETED)
+
+ ########################### LONGEST_PENDING_TIME ############################
+
+ def test_longest_pending_time(self):
+ builds = [
+ model.Build(
+ bucket='chromium',
+ tags=['builder:x'],
+ create_time=self.now - datetime.timedelta(minutes=10),
+ ),
+ model.Build(
+ bucket='chromium',
+ tags=['builder:x'],
+ create_time=self.now - datetime.timedelta(minutes=20),
+ ),
+ model.Build(
+ bucket='chromium',
+ tags=['builder:y'],
+ create_time=self.now - datetime.timedelta(minutes=30),
+ ),
+ ]
+ for b in builds:
+ b.put()
+ actual = service.longest_pending_time('chromium', 'x')
+ self.assertEqual(actual, datetime.timedelta(minutes=20))
+
+ def test_longest_pending_time_invalid_input(self):
+ with self.assertRaises(errors.InvalidInputError):
+ service.longest_pending_time('', 'x')
+ with self.assertRaises(errors.InvalidInputError):
+ service.longest_pending_time('chromium', '')
+
+ def test_longest_pending_time_no_builds(self):
+ actual = service.longest_pending_time('chromium', 'x')
+ self.assertEqual(actual, datetime.timedelta(0))
+
+ def test_longest_pending_time_without_permissions(self):
+ self.mock_cannot(acl.Action.ACCESS_BUCKET)
+ with self.assertRaises(auth.AuthorizationError):
+ service.longest_pending_time('chromium', 'x')
« no previous file with comments | « appengine/cr-buildbucket/test/api_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698