コード例 #1
0
 def test_peek_with_auth_error(self):
     self.mock_cannot(user.Action.SEARCH_BUILDS)
     build = self.classic_build(
         builder=dict(project='chromium', bucket='try'))
     build.put()
     with self.assertRaises(auth.AuthorizationError):
         service.peek(bucket_ids=['chromium/try'])
コード例 #2
0
    def test_peek_with_paging(self):
        self.put_many_builds(builder=dict(project='chromium', bucket='try'))
        first_page, next_cursor = service.peek(bucket_ids=['chromium/try'],
                                               max_builds=10)
        self.assertTrue(first_page)
        self.assertTrue(next_cursor)

        second_page, _ = service.peek(bucket_ids=['chromium/try'],
                                      start_cursor=next_cursor)

        self.assertTrue(all(b not in second_page for b in first_page))
コード例 #3
0
ファイル: service_test.py プロジェクト: eunchong/infra
  def test_peek_with_paging(self):
    self.put_many_builds()
    first_page, next_cursor = service.peek(
      buckets=[self.test_build.bucket])
    self.assertTrue(first_page)
    self.assertTrue(next_cursor)

    second_page, _ = service.peek(
      buckets=[self.test_build.bucket], start_cursor=next_cursor)

    self.assertTrue(all(b not in second_page for b in first_page))
コード例 #4
0
    def test_pause_bucket(self):
        config.put_bucket(
            'chromium',
            'a' * 40,
            test_util.parse_bucket_cfg('name: "master.foo"'),
        )
        config.put_bucket(
            'chromium',
            'a' * 40,
            test_util.parse_bucket_cfg('name: "master.bar"'),
        )

        self.put_many_builds(5,
                             builder=dict(project='chromium',
                                          bucket='master.foo'))
        self.put_many_builds(5,
                             builder=dict(project='chromium',
                                          bucket='master.bar'))

        service.pause('chromium/master.foo', True)
        builds, _ = service.peek(
            ['chromium/master.foo', 'chromium/master.bar'])
        self.assertEqual(len(builds), 5)
        self.assertTrue(
            all(b.bucket_id == 'chromium/master.bar' for b in builds))
コード例 #5
0
 def peek(self, request):
     """Returns available builds."""
     assert isinstance(request.bucket, list)
     builds, next_cursor = service.peek(
         request.bucket,
         max_builds=request.max_builds,
         start_cursor=request.start_cursor,
     )
     return self.SearchResponseMessage(builds=map(build_to_message, builds),
                                       next_cursor=next_cursor)
コード例 #6
0
    def test_pause_then_unpause(self):
        build = self.classic_build(
            builder=dict(project='chromium', bucket='try'))
        build.put()

        config.put_bucket(
            'chromium',
            'a' * 40,
            test_util.parse_bucket_cfg('name: "ci"'),
        )

        service.pause(build.bucket_id, True)
        service.pause(build.bucket_id, True)  # Again, to cover equality case.
        builds, _ = service.peek([build.bucket_id])
        self.assertEqual(len(builds), 0)

        service.pause(build.bucket_id, False)
        builds, _ = service.peek([build.bucket_id])
        self.assertEqual(len(builds), 1)
コード例 #7
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_multi(self):
   self.test_build.key = ndb.Key(model.Build, model.new_build_id())
   self.test_build.put()
   # We test that peek returns builds in decreasing order of the build key. The
   # build key is derived from the inverted current time, so later builds get
   # smaller ids. Only exception: if the time is the same, randomness decides
   # the order. So artificially create an id here to avoid flakiness.
   build2 = model.Build(id=self.test_build.key.id() - 1, bucket='bucket2')
   build2.put()
   builds, _ = service.peek(buckets=[self.test_build.bucket, 'bucket2'])
   self.assertEqual(builds, [self.test_build, build2])
コード例 #8
0
ファイル: api.py プロジェクト: eunchong/infra
 def peek(self, request):
   """Returns available builds."""
   assert isinstance(request.bucket, list)
   builds, next_cursor = service.peek(
     request.bucket,
     max_builds=request.max_builds,
     start_cursor=request.start_cursor,
   )
   return self.SearchResponseMessage(
     builds=map(build_to_message, builds),
     next_cursor=next_cursor)
コード例 #9
0
 def test_peek_multi(self):
     build1 = self.classic_build(
         id=1,
         builder=dict(project='chromium', bucket='try'),
     )
     build2 = self.classic_build(
         id=2,
         builder=dict(project='chromium', bucket='try'),
     )
     assert build1.bucket_id == build2.bucket_id
     ndb.put_multi([build1, build2])
     builds, _ = service.peek(bucket_ids=['chromium/try'])
     self.assertEqual(builds, [build2, build1])
コード例 #10
0
    def test_pause_all_requested_buckets(self):
        config.put_bucket(
            'chromium',
            'a' * 40,
            test_util.parse_bucket_cfg('name: "master.foo"'),
        )
        self.put_many_builds(5,
                             builder=dict(project='chromium',
                                          bucket='master.foo'))

        service.pause('chromium/master.foo', True)
        builds, _ = service.peek(['chromium/master.foo'])
        self.assertEqual(len(builds), 0)
コード例 #11
0
 def test_peek_does_not_return_leased_builds(self):
     self.new_leased_build(builder=dict(project='chromium', bucket='try'))
     builds, _ = service.peek(['chromium/try'])
     self.assertFalse(builds)
コード例 #12
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_with_bad_cursor(self):
   self.put_many_builds()
   with self.assertRaises(errors.InvalidInputError):
     service.peek(buckets=[self.test_build.bucket], start_cursor='abc')
コード例 #13
0
 def test_peek_without_buckets(self):
     with self.assertRaises(errors.InvalidInputError):
         service.peek(bucket_ids=[])
コード例 #14
0
 def test_peek_with_bad_cursor(self):
     self.put_many_builds(builder=dict(project='chromium', bucket='try'))
     with self.assertRaises(errors.InvalidInputError):
         service.peek(bucket_ids=['chromium/try'], start_cursor='abc')
コード例 #15
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_without_buckets(self):
   with self.assertRaises(errors.InvalidInputError):
     service.peek(buckets=[])
コード例 #16
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_200_builds(self):
   for _ in xrange(200):
     model.Build(bucket=self.test_build.bucket).put()
   builds, _ = service.peek([self.test_build.bucket], max_builds=200)
   self.assertTrue(len(builds) <= 100)
コード例 #17
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_does_not_return_leased_builds(self):
   self.test_build.put()
   self.lease()
   builds, _ = service.peek([self.test_build.bucket])
   self.assertFalse(builds)
コード例 #18
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek_with_auth_error(self):
   self.mock_cannot(acl.Action.SEARCH_BUILDS)
   self.test_build.put()
   with self.assertRaises(auth.AuthorizationError):
     service.peek(buckets=[self.test_build.bucket])
コード例 #19
0
 def test_peek(self):
     build = self.classic_build()
     build.put()
     builds, _ = service.peek(bucket_ids=[build.bucket_id])
     self.assertEqual(builds, [build])
コード例 #20
0
ファイル: service_test.py プロジェクト: eunchong/infra
 def test_peek(self):
   self.test_build.put()
   builds, _ = service.peek(buckets=[self.test_build.bucket])
   self.assertEqual(builds, [self.test_build])