def run_cbq_query(self, query=None, min_output_size=10, server=None): if query is None: query = self.query if server is None: server = self.master if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port else: if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port if self.input.tuq_client and "client" in self.input.tuq_client: server = self.tuq_client query_params = {} cred_params = {'creds': []} rest = RestConnection(server) username = rest.username password = rest.password cred_params['creds'].append({'user': username, 'pass': password}) for bucket in self.buckets: if bucket.saslPassword: cred_params['creds'].append({'user': '******' % bucket.name, 'pass': bucket.saslPassword}) query_params.update(cred_params) if self.use_rest: query_params.update({'scan_consistency': self.scan_consistency}) self.log.info('RUN QUERY %s' % query) if self.analytics: query = query + ";" for bucket in self.buckets: query = query.replace(bucket.name,bucket.name+"_shadow") result = CBASHelper(self.cbas_node).execute_statement_on_cbas(query, "immediate") result = json.loads(result) else : result = rest.query_tool(query, self.n1ql_port, query_params=query_params) else: if self.version == "git_repo": output = self.shell.execute_commands_inside("$GOPATH/src/github.com/couchbase/query/" +\ "shell/cbq/cbq ","","","","","","") else: os = self.shell.extract_remote_info().type.lower() if not(self.isprepared): query = query.replace('"', '\\"') query = query.replace('`', '\\`') cmd = "%s/cbq -engine=http://%s:%s/ -q -u %s -p %s" % (self.path, server.ip, server.port, username, password) output = self.shell.execute_commands_inside(cmd,query,"","","","","") if not(output[0] == '{'): output1 = '{'+str(output) else: output1 = output result = json.loads(output1) if isinstance(result, str) or 'errors' in result: raise CBQError(result, server.ip) self.log.info("TOTAL ELAPSED TIME: %s" % result["metrics"]["elapsedTime"]) return result
def run_cbq_query(self, query=None, min_output_size=10, server=None): if query is None: query = self.query if server is None: server = self.master if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port else: if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port if self.input.tuq_client and "client" in self.input.tuq_client: server = self.tuq_client if self.n1ql_port == None or self.n1ql_port == '': self.n1ql_port = self.input.param("n1ql_port", 8093) if not self.n1ql_port: self.log.info( " n1ql_port is not defined, processing will not proceed further" ) raise Exception( "n1ql_port is not defined, processing will not proceed further" ) if self.use_rest: result = RestConnection(server).query_tool(query, self.n1ql_port) else: if self.version == "git_repo": output = self.shell.execute_commands_inside("$GOPATH/src/github.com/couchbaselabs/tuqtng/" +\ "tuq_client/tuq_client " +\ "-engine=http://%s:8093/" % server.ip, subcommands=[query,], min_output_size=20, end_msg='tuq_client>') else: output = self.shell.execute_commands_inside( "/tmp/tuq/cbq -engine=http://%s:8093/" % server.ip, subcommands=[ query, ], min_output_size=20, end_msg='cbq>') result = self._parse_query_output(output) if isinstance(result, str) or 'errors' in result: raise CBQError(result, server.ip) self.log.info("TOTAL ELAPSED TIME: %s" % result["metrics"]["elapsedTime"]) return result
def run_cbq_query(self, query=None, min_output_size=10, server=None, query_params={}, is_prepared=False, scan_consistency=None, scan_vector=None, verbose=True): if query is None: query = self.query if server is None: server = self.master if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port else: if server.ip == "127.0.0.1": self.n1ql_port = server.n1ql_port if self.input.tuq_client and "client" in self.input.tuq_client: server = self.tuq_client if self.n1ql_port == None or self.n1ql_port == '': self.n1ql_port = self.input.param("n1ql_port", 90) if not self.n1ql_port: self.log.info( " n1ql_port is not defined, processing will not proceed further" ) raise Exception( "n1ql_port is not defined, processing will not proceed further" ) if self.use_rest: query_params = {} if scan_consistency: query_params['scan_consistency'] = scan_consistency if scan_vector: query_params['scan_vector'] = str(scan_vector).replace( "'", '"') if verbose: self.log.info('RUN QUERY %s' % query) result = RestConnection(server).query_tool( query, self.n1ql_port, query_params=query_params, is_prepared=is_prepared, verbose=verbose) else: # if self.version == "git_repo": # output = self.shell.execute_commands_inside("$GOPATH/src/github.com/couchbaselabs/tuqtng/" +\ # "tuq_client/tuq_client " +\ # "-engine=http://%s:8093/" % server.ip, # subcommands=[query,], # min_output_size=20, # end_msg='tuq_client>') # else: #os = self.shell.extract_remote_info().type.lower() shell = RemoteMachineShellConnection(server) #query = query.replace('"', '\\"') #query = query.replace('`', '\\`') #if os == "linux": cmd = "%s/cbq -engine=http://%s:8093/" % ( testconstants.LINUX_COUCHBASE_BIN_PATH, server.ip) output = shell.execute_commands_inside(cmd, query, "", "", "", "", "") print( "--------------------------------------------------------------------------------------------------------------------------------" ) print(output) result = json.loads(output) print(result) result = self._parse_query_output(output) if isinstance(result, str) or 'errors' in result: error_result = str(result) length_display = len(error_result) if length_display > 500: error_result = error_result[:500] raise CBQError(error_result, server.ip) self.log.info("TOTAL ELAPSED TIME: %s" % result["metrics"]["elapsedTime"]) return result
def run_analytics_query(self, query=None, min_output_size=10, server=None, query_params={}, is_prepared=False, scan_consistency=None, scan_vector=None, verbose=False): if query is None: query = self.query if server is None: server = self.master if server.ip == "127.0.0.1": self.analytics_port = server.analytics_port else: if server.ip == "127.0.0.1": self.analytics_port = server.analytics_port if self.input.tuq_client and "client" in self.input.tuq_client: server = self.tuq_client if self.analytics_port == None or self.analytics_port == '': self.analytics_port = self.input.param("analytics_port", 8095) if not self.analytics_port: self.log.info( " analytics_port is not defined, processing will not proceed further" ) raise Exception( "analytics_port is not defined, processing will not proceed further" ) if self.use_rest: query_params = {} if scan_consistency: query_params['scan_consistency'] = scan_consistency if scan_vector: query_params['scan_vector'] = str(scan_vector).replace( "'", '"') if verbose: self.log.info('RUN QUERY %s' % query) query = query + ";" if "USE INDEX" in query: query = query.replace("USE INDEX(`#primary` USING GSI)", " ") for bucket in self.buckets: query = query.replace(bucket.name + " ", bucket.name + "_shadow ") self.log.info(" CBAS QUERY :: {0}".format(query)) result = RestConnection(server).analytics_tool( query, self.analytics_port, query_params=query_params, verbose=verbose) if isinstance(result, str) or 'errors' in result: error_result = str(result) length_display = len(error_result) if length_display > 500: error_result = error_result[:500] raise CBQError(error_result, server.ip) self.log.info("TOTAL ELAPSED TIME: %s" % result["metrics"]["elapsedTime"]) return result
def run_cbq_query(self, query=None, min_output_size=10, server=None, query_params={}, is_prepared=False, encoded_plan=None): self.log.info("-" * 100) if query is None: query = self.query if server is None: server = self.master if self.input.tuq_client and "client" in self.input.tuq_client: server = self.tuq_client cred_params = {'creds': []} for bucket in self.buckets: if bucket.saslPassword: cred_params['creds'].append({ 'user': '******' % bucket.name, 'pass': bucket.saslPassword }) query_params.update(cred_params) if self.use_rest: query_params.update({'scan_consistency': self.scan_consistency}) self.log.info('RUN QUERY %s' % query) if hasattr(self, 'query_params') and self.query_params: query_params = self.query_params if self.analytics: query = query + ";" for bucket in self.buckets: query = query.replace(bucket.name, bucket.name + "_shadow") self.log.info('RUN QUERY %s' % query) result = RestConnection(server).analytics_tool( query, 8095, query_params=query_params, is_prepared=is_prepared, named_prepare=self.named_prepare, encoded_plan=encoded_plan, servers=self.servers) else: result = RestConnection(server).query_tool( query, self.n1ql_port, query_params=query_params, is_prepared=is_prepared, named_prepare=self.named_prepare, encoded_plan=encoded_plan, servers=self.servers) else: if self.version == "git_repo": output = self.shell.execute_commands_inside("$GOPATH/src/github.com/couchbase/query/" +\ "shell/cbq/cbq ","","","","","","") else: if not (self.isprepared): query = query.replace('"', '\\"') query = query.replace('`', '\\`') if "system" in query: cmd = "%s/cbq -engine=http://%s:8091/ -q -u Administrator -p password" % ( self.path, server.ip) else: cmd = "%s/cbq -engine=http://%s:8091/ -q" % ( self.path, server.ip) output = self.shell.execute_commands_inside( cmd, query, "", "", "", "", "") if not (output[0] == '{'): output1 = '{' + str(output) else: output1 = output result = json.loads(output1) if isinstance(result, str) or 'errors' in result: raise CBQError(result, server.ip) if 'metrics' in result: self.log.info("TOTAL ELAPSED TIME: %s" % result["metrics"]["elapsedTime"]) return result