def setUp(self): super(V1ApiTest, self).setUp() gae_ts_mon.reset_for_unittest(disable=True) auth.disable_process_cache() user.clear_request_cache() self.patch( 'components.utils.utcnow', return_value=datetime.datetime(2017, 1, 1) ) self.future_date = utils.utcnow() + datetime.timedelta(days=1) # future_ts is str because INT64 values are formatted as strings. self.future_ts = str(utils.datetime_to_timestamp(self.future_date)) config.put_bucket( 'chromium', 'a' * 40, test_util.parse_bucket_cfg( ''' name: "luci.chromium.try" acls { role: SCHEDULER identity: "anonymous:anonymous" } ''' ), ) self.build_infra = test_util.build_bundle(id=1).infra self.build_infra.put()
def setUp(self): super(AccessApiTest, self).setUp() self.servicer = api.AccessServicer() user.clear_request_cache() self.patch('components.auth.is_admin', autospec=True, return_value=False) self.patch('components.auth.is_group_member', autospec=True, return_value=True)
def test_get_role(self, is_group_member): is_group_member.side_effect = lambda g, _=None: g == 'a-writers' self.assertEqual(self.get_role('p1/a'), Acl.WRITER) self.assertEqual(self.get_role('p2/a'), None) self.assertEqual(self.get_role('p3/c'), Acl.READER) self.assertEqual(self.get_role('p1/non.existing'), None) # Memcache test. user.clear_request_cache() self.assertEqual(self.get_role('p1/a'), Acl.WRITER)
def setUp(self): super(BaseTest, self).setUp() user.clear_request_cache() self.patch('tq.enqueue_async', autospec=True, return_value=future(None)) self.now = NOW self.patch( 'components.utils.utcnow', autospec=True, side_effect=lambda: self.now ) self.settings = service_config_pb2.SettingsCfg( swarming=dict( milo_hostname='milo.example.com', bbagent_package=dict( package_name='infra/tools/bbagent', version='luci-runner-version', version_canary='luci-runner-version-canary', builders=service_config_pb2.BuilderPredicate( regex=['chromium/try/linux'], ), ), kitchen_package=dict( package_name='infra/tools/kitchen', version='kitchen-version', version_canary='kitchen-version-canary', ), user_packages=[ dict( package_name='infra/tools/git', version='git-version', version_canary='git-version-canary', ), dict( package_name='infra/cpython/python', version='py-version', subdir='python', ), dict( package_name='infra/excluded', version='excluded-version', builders=service_config_pb2.BuilderPredicate( regex_exclude=['.*'], ), ), ], ), known_public_gerrit_hosts=['chromium-review.googlesource.com'], ) self.patch( 'config.get_settings_async', autospec=True, return_value=future(self.settings) )
def setUp(self): super(ConvertBucketTest, self).setUp() user.clear_request_cache() config.put_bucket( 'chromium', 'a' * 40, test_util.parse_bucket_cfg(''' name: "luci.chromium.try" acls { role: READER identity: "anonymous:anonymous" } '''), )
def test_get_accessible_buckets_async(self, is_group_member): is_group_member.side_effect = lambda g, _=None: g in ('xxx', 'yyy') config.get_buckets_async.return_value = future({ 'p1/available_bucket1': Bucket( name='available_bucket1', acls=[ Acl(role=Acl.READER, group='xxx'), Acl(role=Acl.WRITER, group='yyy') ], ), 'p2/available_bucket2': Bucket( name='available_bucket2', acls=[ Acl(role=Acl.READER, group='xxx'), Acl(role=Acl.WRITER, group='zzz') ], ), 'p3/available_bucket3': Bucket( name='available_bucket3', acls=[ Acl(role=Acl.READER, identity='user:[email protected]'), ], ), 'p4/not_available_bucket': Bucket( name='not_available_bucket', acls=[Acl(role=Acl.WRITER, group='zzz')], ), }) # call twice for per-request caching of futures. user.get_accessible_buckets_async() availble_buckets = user.get_accessible_buckets_async().get_result() expected = { 'p1/available_bucket1', 'p2/available_bucket2', 'p3/available_bucket3', } self.assertEqual(availble_buckets, expected) # call again for memcache coverage. user.clear_request_cache() availble_buckets = user.get_accessible_buckets_async().get_result() self.assertEqual(availble_buckets, expected)
def setUp(self): super(UserTest, self).setUp() self.current_identity = auth.Identity.from_bytes('user:[email protected]') self.patch('components.auth.get_current_identity', autospec=True, side_effect=lambda: self.current_identity) user.clear_request_cache() self.patch('components.auth.is_admin', autospec=True, return_value=False) bucket_a = Bucket(name='a', acls=[ Acl(role=Acl.WRITER, group='a-writers'), Acl(role=Acl.READER, group='a-readers'), ]) bucket_b = Bucket(name='b', acls=[ Acl(role=Acl.WRITER, group='b-writers'), Acl(role=Acl.READER, group='b-readers'), ]) bucket_c = Bucket(name='c', acls=[ Acl(role=Acl.READER, group='c-readers'), Acl(role=Acl.READER, identity='user:[email protected]'), Acl(role=Acl.WRITER, group='c-writers'), Acl(role=Acl.READER, identity='project:p1'), ]) all_buckets = [('p1', bucket_a), ('p2', bucket_b), ('p3', bucket_c)] self.patch('config.get_buckets_async', autospec=True, return_value=future(all_buckets)) bucket_map = { config.format_bucket_id(pid, b.name): b for pid, b in all_buckets } self.patch('config.get_bucket_async', autospec=True, side_effect=lambda bid: future( ('deadbeef', bucket_map.get(bid))))
def setUp(self): super(BuildBucketServiceTest, self).setUp() user.clear_request_cache() self.current_identity = auth.Identity('service', 'unittest') self.patch('components.auth.get_current_identity', side_effect=lambda: self.current_identity) self.patch('user.can_async', return_value=future(True)) self.now = datetime.datetime(2015, 1, 1) self.patch('components.utils.utcnow', side_effect=lambda: self.now) config.put_bucket( 'chromium', 'a' * 40, test_util.parse_bucket_cfg(''' name: "try" acls { role: READER identity: "anonymous:anonymous" } '''), ) config.put_bucket( 'chromium', 'a' * 40, test_util.parse_bucket_cfg(''' name: "luci" acls { role: READER identity: "anonymous:anonymous" } swarming { builders { name: "linux" swarming_host: "chromium-swarm.appspot.com" build_numbers: YES recipe { cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" name: "recipe" } } } '''), ) self.patch('swarming.cancel_task_async', return_value=future(None)) self.patch( 'google.appengine.api.app_identity.get_default_version_hostname', autospec=True, return_value='buildbucket.example.com') self.patch('tq.enqueue_async', autospec=True, return_value=future(None)) self.patch('config.get_settings_async', autospec=True, return_value=future(service_config_pb2.SettingsCfg())) self.patch('swarming.cancel_task_transactionally_async', autospec=True, return_value=future(None)) self.patch('search.TagIndex.random_shard_index', return_value=0)
def setUp(self): super(SwarmbucketApiTest, self).setUp() self.patch('components.utils.utcnow', autospec=True, return_value=datetime.datetime(2015, 11, 30)) self.patch( 'google.appengine.api.app_identity.get_default_version_hostname', return_value='cr-buildbucket.appspot.com') self.patch('creation._should_be_canary', side_effect=lambda p: p > 50) auth_testing.reset_local_state() auth.bootstrap_group('all', [auth.Anonymous]) user.clear_request_cache() chromium_cfg = test_util.parse_bucket_cfg(''' name: "luci.chromium.try" acls { role: SCHEDULER group: "all" } swarming { hostname: "swarming.example.com" builders { name: "linux" swarming_host: "swarming.example.com" category: "Chromium" build_numbers: YES recipe { cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" name: "presubmit" properties: "foo:bar" properties_j: "baz:1" } dimensions: "foo:bar" dimensions: "baz:baz" auto_builder_dimension: YES # Override builder cache without timeout to make tests # simpler. caches { path: "builder" name: "builder_cache_name" } } builders { name: "windows" category: "Chromium" swarming_host: "swarming.example.com" recipe { cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" name: "presubmit" } # Override builder cache without timeout to make tests # simpler. caches { path: "builder" name: "builder_cache_name" } } } ''') config.put_bucket('chromium', 'deadbeef', chromium_cfg) v8_cfg = test_util.parse_bucket_cfg(''' name: "luci.v8.try" acls { role: READER group: "all" } ''') config.put_bucket('v8', 'deadbeef', v8_cfg) props_def = { 'extra_args': [ 'cook', '-recipe', '${recipe}', '-properties', '${properties_json}', '-logdog-project', '${project}', ], 'cipd_input': { 'packages': [ { 'package_name': 'infra/test/bar/${os_ver}', 'path': '.', 'version': 'latest', }, { 'package_name': 'infra/test/foo/${platform}', 'path': 'third_party', 'version': 'stable', }, ], }, } self.task_template = { 'name': 'bb-${build_id}-${project}-${builder}', 'task_slices': [{ 'properties': props_def, 'wait_for_capacity': False, }], } self.patch( 'swarming._get_task_template', autospec=True, return_value=('rev', self.task_template), ) self.settings = service_config_pb2.SettingsCfg( swarming=dict( milo_hostname='milo.example.com', luci_runner_package=dict( package_name='infra/tools/luci_runner', version='luci-runner-version', ), kitchen_package=dict( package_name='infra/tools/kitchen', version='kitchen-version', ), user_packages=[ dict( package_name='infra/tools/git', version='git-version', ), ], ), logdog=dict(hostname='logdog.example.com'), ) self.patch( 'config.get_settings_async', autospec=True, return_value=future(self.settings), )
def setUp(self): super(CreationTest, self).setUp() user.clear_request_cache() self.current_identity = auth.Identity('service', 'unittest') self.patch('components.auth.get_current_identity', side_effect=lambda: self.current_identity) self.patch('user.can_async', return_value=future(True)) self.now = datetime.datetime(2015, 1, 1) self.patch('components.utils.utcnow', side_effect=lambda: self.now) self.chromium_try = test_util.parse_bucket_cfg(''' name: "luci.chromium.try" swarming { builders { name: "linux" build_numbers: YES swarming_host: "chromium-swarm.appspot.com" recipe { name: "recipe" cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" } } builders { name: "mac" swarming_host: "chromium-swarm.appspot.com" recipe { name: "recipe" cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" } } builders { name: "win" swarming_host: "chromium-swarm.appspot.com" recipe { name: "recipe" cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" } } } ''') config.put_bucket('chromium', 'a' * 40, self.chromium_try) self.create_sync_task = self.patch( 'swarming.create_sync_task', autospec=True, return_value={'is_payload': True}, ) self.patch('swarming.cancel_task_async', return_value=future(None)) self.patch( 'google.appengine.api.app_identity.get_default_version_hostname', autospec=True, return_value='buildbucket.example.com') self.patch('tq.enqueue_async', autospec=True, return_value=future(None)) self.settings = service_config_pb2.SettingsCfg( swarming=dict(global_caches=[dict(path='git')]), logdog=dict(hostname='logs.example.com'), ) self.patch('config.get_settings_async', autospec=True, return_value=future(self.settings)) self.patch('creation._should_update_builder', side_effect=lambda p: p > 0.5) self.patch('creation._should_be_canary', side_effect=lambda p: p > 50) self.patch('search.TagIndex.random_shard_index', return_value=0)
def setUp(self): super(SwarmbucketApiTest, self).setUp() self.patch('components.utils.utcnow', autospec=True, return_value=datetime.datetime(2015, 11, 30)) self.patch( 'google.appengine.api.app_identity.get_default_version_hostname', return_value='cr-buildbucket.appspot.com') self.patch('creation._should_be_canary', side_effect=lambda p: p > 50) auth_testing.reset_local_state() auth.bootstrap_group('all', [auth.Anonymous]) user.clear_request_cache() chromium_cfg = test_util.parse_bucket_cfg(''' name: "luci.chromium.try" acls { role: SCHEDULER group: "all" } swarming { hostname: "swarming.example.com" builders { name: "linux" swarming_host: "swarming.example.com" category: "Chromium" build_numbers: YES recipe { cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" name: "presubmit" properties: "foo:bar" properties_j: "baz:1" } dimensions: "foo:bar" dimensions: "baz:baz" auto_builder_dimension: YES # Override builder cache without timeout to make tests # simpler. caches { path: "builder" name: "builder_cache_name" } } builders { name: "windows" category: "Chromium" swarming_host: "swarming.example.com" recipe { cipd_package: "infra/recipe_bundle" cipd_version: "refs/heads/master" name: "presubmit" } # Override builder cache without timeout to make tests # simpler. caches { path: "builder" name: "builder_cache_name" } } } ''') config.put_bucket('chromium', 'deadbeef', chromium_cfg) v8_cfg = test_util.parse_bucket_cfg(''' name: "luci.v8.try" acls { role: READER group: "all" } ''') config.put_bucket('v8', 'deadbeef', v8_cfg) self.settings = service_config_pb2.SettingsCfg( swarming=dict( milo_hostname='milo.example.com', bbagent_package=dict( package_name='infra/tools/bbagent', version='luci-runner-version', ), kitchen_package=dict( package_name='infra/tools/kitchen', version='kitchen-version', ), user_packages=[ dict( package_name='infra/tools/git', version='git-version', ), ], ), logdog=dict(hostname='logdog.example.com'), ) self.patch( 'config.get_settings_async', autospec=True, return_value=future(self.settings), )