def verify_infer_schema_on_documents_with_overlapping_types_same_keys(self): self.log.info('Create unique documents') client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) documents = [ '{ "array": 20, "integer": 300.34345, "float":false, "boolean":["a", "b", "c"], "null":null, "string":"300"}' '{ "array": 300, "integer": ["a", "b", "c"], "float":1012.56756, "boolean":300, "null":null, "string":10345665}' '{ "array": [1, 2, 3], "integer": 10345665, "float":"Steve", "boolean":[[1, 2], [3, 4], []], "null":null, "string":20.343}' '{ "array": 20.343, "integer": [[1, 2], [3, 4], []], "float":0.00011, "boolean":[1, 1.1, 1.0, 0], "null":null, "string":[1, 1.1, 1.0, 0]}' '{ "array": 10345665, "integer": 1012.56756, "float":1012.56756, "boolean":false, "null":null, "string":[1, "hello", ["a", 1], 2.22]}' '{ "array": "Steve", "integer": 1, "float":[1, 2, 3], "boolean":false, "null":null, "string":1}' '{ "array": true, "integer": 1.1, "float":20.343, "boolean":["a", "b", "c"], "null":null, "string":300}' '{ "array": true, "integer": "Alex", "float":10345665, "boolean":1.1, "null":null, "string":0.00011}' '{ "array": 20.343, "integer": 20.343, "float":300, "boolean":true, "null":null, "string":true}' '{ "array": 1, "integer": 10345665, "float":300.34345, "boolean":1, "null":null, "string":true}' ] for index, document in enumerate(documents): client.insert_document(str(index), document) self.log.info('Create primary index on %s' % self.cb_bucket_name) self.rest.query_tool('CREATE PRIMARY INDEX idx on %s' % self.cb_bucket_name) self.log.info('Create dataset') self.cbas_util.createConn(self.cb_bucket_name) self.cbas_util.create_dataset_on_bucket(self.cb_bucket_name, self.cbas_dataset_name) self.log.info('Connect link') self.cbas_util.connect_link() self.log.info('Verify dataset count') self.cbas_util.validate_cbas_dataset_items_count(self.cbas_dataset_name, len(documents)) self.validate_infer_schema_response(len(documents))
def verify_infer_schema_on_same_type_missing_fields(self): self.log.info('Create unique documents') client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) documents = [ '{ "array": [1,2,3,4,5,6], "integer": 10, "float":10.12, "boolean":true, "null":null, "object":{"array": [1,2,3,4,5,6], "integer": 10, "float":10.12, "boolean":true, "null":null}}', '{ "array": null, "integer": 10, "float":10.12, "boolean":true, "null":null, "object":{"array": [1,2,3,4,5,6], "integer": 10, "float":10.12, "boolean":true, "null":"null value"}}', '{ "array": [1,2,3,4,5,6], "integer": 10, "float":10.12, "boolean":true, "null":null, "object":{"array": null, "integer": null, "float":null, "boolean":null, "null":null}}' ] for index, document in enumerate(documents): client.insert_document(str(index), document) self.log.info('Create primary index on %s' % self.cb_bucket_name) self.rest.query_tool('CREATE PRIMARY INDEX idx on %s' % self.cb_bucket_name) self.log.info('Create dataset') self.cbas_util.createConn(self.cb_bucket_name) self.cbas_util.create_dataset_on_bucket(self.cb_bucket_name, self.cbas_dataset_name) self.log.info('Connect link') self.cbas_util.connect_link() self.log.info('Verify dataset count') self.cbas_util.validate_cbas_dataset_items_count(self.cbas_dataset_name, len(documents)) self.validate_infer_schema_response(len(documents))
def verify_infer_schema_on_unique_nested_documents(self): self.log.info('Create unique documents') client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) documents = [ '{"from": "user_512", "to": "user_768", "text": "Hey, that Beer you recommended is pretty fab, thx!", "sent_timestamp":476560}', '{"user_id": 512, "name": "Bob Likington", "email": "*****@*****.**", "sign_up_timestamp": 1224612317, "last_login_timestamp": 1245613101}', '{"user_id": 768, "name": "Simon Neal", "email": "*****@*****.**", "sign_up_timestamp": 1225554317, "last_login_timestamp": 1234166701, "country": "Scotland", "pro_account": true, "friends": [512, 666, 742, 1111]}', '{"photo_id": "ccbcdeadbeefacee", "size": { "w": 500, "h": 320, "unit": "px" }, "exposure": "1/1082", "aperture": "f/2.4", "flash": false, "camera": { "name": "iPhone 4S", "manufacturer": {"Company":"Apple", "Location": {"City":"California", "Country":"USA"} } }, "user_id": 512, "timestamp": [2011, 12, 13, 16, 31, 7]}' ] for index, document in enumerate(documents): client.insert_document(str(index), document) self.log.info('Create primary index on %s' % self.cb_bucket_name) self.rest.query_tool('CREATE PRIMARY INDEX idx on %s' % self.cb_bucket_name) self.log.info('Create dataset') self.cbas_util.createConn(self.cb_bucket_name) self.cbas_util.create_dataset_on_bucket(self.cb_bucket_name, self.cbas_dataset_name) self.log.info('Connect link') self.cbas_util.connect_link() self.log.info('Verify dataset count') self.cbas_util.validate_cbas_dataset_items_count(self.cbas_dataset_name, len(documents)) self.validate_infer_schema_response(len(documents), compare_with_n1ql=False)
def async_load_data_till_upgrade_completes(): self.log.info("Started doc operations on KV") client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) i = 0 while not self._STOP_INGESTION: client.insert_document( "key-id" + str(i), '{"name":"James_' + str(i) + '", "profession":"Pilot"}') i += 1
def async_load_data(): self.log.info( "Performing doc operations on KV until upgrade is in progress") client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) i = 0 while not _STOP_INGESTION: client.insert_document( "key-id" + str(i), '{"name":"James_' + str(i) + '", "profession":"Pilot"}') i += 1
def test_nru_eviction_impact_on_cbas(self): self.log.info("Create dataset") self.cbas_util.create_dataset_on_bucket(self.cb_bucket_name, self.cbas_dataset_name) self.log.info("Connect to Local link") self.cbas_util.connect_link() self.log.info("Add documents until ram percentage") self.load_document_until_ram_percentage() self.log.info("Fetch current document count") bucket_helper = BucketHelper(self.master) item_count = bucket_helper.get_bucket( self.cb_bucket_name).stats.itemCount self.log.info("Completed base load with %s items" % item_count) self.log.info( "Fetch initial inserted 100 documents, so they are not removed") client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) for i in range(100): client.get("test_docs-" + str(i)) self.log.info("Add 20% more items to trigger NRU") for i in range(item_count, int(item_count * 1.2)): client.insert_document("key-id" + str(i), '{"name":"dave"}') self.log.info("Validate document count on CBAS") count_n1ql = self.rest.query_tool( 'select count(*) from %s' % (self.cb_bucket_name))['results'][0]['$1'] if self.cbas_util.validate_cbas_dataset_items_count( self.cbas_dataset_name, count_n1ql): pass else: self.log.info( "Document count mismatch might be due to ejection of documents on KV. Retry again" ) count_n1ql = self.rest.query_tool( 'select count(*) from %s' % (self.cb_bucket_name))['results'][0]['$1'] self.assertTrue(self.cbas_util.validate_cbas_dataset_items_count( self.cbas_dataset_name, count_n1ql), msg="Count mismatch on CBAS")
def test_no_eviction_impact_on_cbas(self): self.log.info("Create dataset") self.cbas_util.create_dataset_on_bucket(self.cb_bucket_name, self.cbas_dataset_name) self.log.info("Connect to Local link") self.cbas_util.connect_link() self.log.info("Add documents until ram percentage") self.load_document_until_ram_percentage() self.log.info("Fetch current document count") bucket_helper = BucketHelper(self.master) item_count = bucket_helper.get_bucket( self.cb_bucket_name).stats.itemCount self.log.info("Completed base load with %s items" % item_count) self.log.info("Load more until we are out of memory") client = SDKClient(hosts=[self.master.ip], bucket=self.cb_bucket_name, password=self.master.rest_password) i = item_count insert_success = True while insert_success: insert_success = client.insert_document("key-id" + str(i), '{"name":"dave"}') i += 1 self.log.info('Memory is full at {0} items'.format(i)) self.log.info("As a result added more %s items" % (i - item_count)) self.log.info("Fetch item count") stats = bucket_helper.get_bucket(self.cb_bucket_name).stats itemCountWhenOOM = stats.itemCount memoryWhenOOM = stats.memUsed self.log.info('Item count when OOM {0} and memory used {1}'.format( itemCountWhenOOM, memoryWhenOOM)) self.log.info("Validate document count on CBAS") count_n1ql = self.rest.query_tool( 'select count(*) from %s' % (self.cb_bucket_name))['results'][0]['$1'] self.assertTrue(self.cbas_util.validate_cbas_dataset_items_count( self.cbas_dataset_name, count_n1ql), msg="Count mismatch on CBAS")