Skip to content

Commit 17120b7

Browse files
committed
create collections via bulk api, off by default
Change-Id: I042b6d0fc43c9f84cd67156faf7ea916c1cb8baf Reviewed-on: http://review.couchbase.org/c/perfrunner/+/149225 Tested-by: Build Bot <[email protected]> Reviewed-by: Bo-Chun Wang <[email protected]>
1 parent 2532bfd commit 17120b7

File tree

3 files changed

+35
-16
lines changed

3 files changed

+35
-16
lines changed

perfrunner/helpers/cluster.py

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -298,23 +298,34 @@ def create_collections(self):
298298
collection_map = self.test_config.collection.collection_map
299299
for master in self.cluster_spec.masters:
300300
if collection_map is not None:
301-
for bucket in collection_map.keys():
302-
delete_default = True
303-
for scope in collection_map[bucket]:
304-
if scope == '_default':
301+
if self.test_config.collection.use_bulk_api:
302+
for bucket in collection_map.keys():
303+
create_scopes = []
304+
for scope in collection_map[bucket]:
305+
scope_collections = []
305306
for collection in collection_map[bucket][scope]:
306-
if collection == "_default":
307-
delete_default = False
308-
if delete_default:
309-
self.rest.delete_collection(master, bucket, '_default', '_default')
310-
311-
for bucket in collection_map.keys():
312-
for scope in collection_map[bucket]:
313-
if scope != '_default':
314-
self.rest.create_scope(master, bucket, scope)
315-
for collection in collection_map[bucket][scope]:
316-
if collection != '_default':
317-
self.rest.create_collection(master, bucket, scope, collection)
307+
scope_collections.append({"name": collection})
308+
create_scopes.append({"name": scope, "collections": scope_collections})
309+
print(str({"scopes": create_scopes}))
310+
self.rest.set_collection_map(master, bucket, {"scopes": create_scopes})
311+
else:
312+
for bucket in collection_map.keys():
313+
delete_default = True
314+
for scope in collection_map[bucket]:
315+
if scope == '_default':
316+
for collection in collection_map[bucket][scope]:
317+
if collection == "_default":
318+
delete_default = False
319+
if delete_default:
320+
self.rest.delete_collection(master, bucket, '_default', '_default')
321+
322+
for bucket in collection_map.keys():
323+
for scope in collection_map[bucket]:
324+
if scope != '_default':
325+
self.rest.create_scope(master, bucket, scope)
326+
for collection in collection_map[bucket][scope]:
327+
if collection != '_default':
328+
self.rest.create_collection(master, bucket, scope, collection)
318329

319330
def create_eventing_buckets(self):
320331
if not self.test_config.cluster.eventing_bucket_mem_quota:

perfrunner/helpers/rest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,6 +1026,12 @@ def delete_collection(self, host, bucket, scope, collection):
10261026
.format(host, bucket, scope, collection)
10271027
self.delete(url=api)
10281028

1029+
def set_collection_map(self, host, bucket, collection_map):
1030+
logger.info("Setting collection map on {} via bulk api".format(bucket))
1031+
api = 'http://{}:8091/pools/default/buckets/{}/collections' \
1032+
.format(host, bucket)
1033+
self.put(url=api, data=json.dumps(collection_map))
1034+
10291035

10301036
class KubernetesRestHelper(RestBase):
10311037

perfrunner/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,10 +453,12 @@ class CollectionSettings:
453453

454454
CONFIG = None
455455
COLLECTION_MAP = None
456+
USE_BULK_API = 0
456457

457458
def __init__(self, options: dict):
458459
self.config = options.get('config', self.CONFIG)
459460
self.collection_map = self.COLLECTION_MAP
461+
self.use_bulk_api = int(options.get('use_bulk_api', self.USE_BULK_API))
460462
if self.config is not None:
461463
with open(self.config) as f:
462464
self.collection_map = json.load(f)

0 commit comments

Comments
 (0)