Skip to content

Commit

Permalink
Fix for n1ql_stats tests + new function to set servicers
Browse files Browse the repository at this point in the history
Change-Id: Ia936f371a2a983e5c922f2479e2da92e39552df4
Reviewed-on: http://review.couchbase.org/c/testrunner/+/161536
Reviewed-by: Ajay Bhullar <ajay.bhullar@couchbase.com>
Tested-by: Pierre Regazzoni <pierre.regazzoni@couchbase.com>
  • Loading branch information
pierrecouch committed Sep 14, 2021
1 parent 5b36249 commit 28922a6
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
17 changes: 15 additions & 2 deletions lib/membase/api/rest_client.py
Expand Up @@ -3960,6 +3960,19 @@ def set_profiling(self, server, setting):
response, content = http.request(api, "POST", headers=headers, body=json.dumps(body))
return response, content

def set_query_servicers(self, server, setting):
http = httplib2.Http(disable_ssl_certificate_validation=True)
n1ql_port = CbServer.n1ql_port
protocol = "http"
if CbServer.use_https:
n1ql_port = str(CbServer.ssl_port_map.get(str(n1ql_port), str(n1ql_port)))
protocol = "https"
api = "%s://%s:%s/" % (protocol, server.ip, n1ql_port) + "admin/settings"
body = {"servicers": setting}
headers = self._create_headers_with_auth('Administrator', 'password')
response, content = http.request(api, "POST", headers=headers, body=json.dumps(body))
return response, content

def set_profiling_controls(self, server, setting):
http = httplib2.Http(disable_ssl_certificate_validation=True)
n1ql_port = CbServer.n1ql_port
Expand Down Expand Up @@ -4134,14 +4147,14 @@ def analytics_tool(self, query, port=8095, timeout=650, query_params={}, is_prep
except ValueError:
return content

def query_tool_stats(self):
def query_tool_stats(self, server):
n1ql_port = CbServer.n1ql_port
protocol = "http"
if CbServer.use_https:
n1ql_port = CbServer.ssl_n1ql_port
protocol = "https"
log.info('query n1ql stats')
api = "%s://%s:%s/admin/stats" % (protocol, str(n1ql_port), self.ip)
api = "%s://%s:%s/admin/stats" % (protocol, server.ip, str(n1ql_port))
status, content, header = self._http_request(api, 'GET')
log.info(content)
try:
Expand Down
30 changes: 15 additions & 15 deletions pytests/tuqquery/n1ql_stats.py
Expand Up @@ -21,89 +21,89 @@ def suite_tearDown(self):
super(StatsTests, self).suite_tearDown()

def test_cmd_line(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
self.assertTrue(stats['cmdline'][0].find('cbq-engine') != -1, 'command line is incorrect')
self.log.info('cmd line is checked')

def test_requests_select(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
for query_bucket in self.query_buckets:
self.query = "SELECT name, CASE WHEN join_mo < 3 OR join_mo > 11 THEN" + \
" 'winter' ELSE 'other' END AS period FROM %s WHERE CASE WHEN" % query_bucket + \
" join_mo < 3 OR join_mo > 11 THEN 'winter' ELSE 'other' END LIKE 'win%'"
self.run_cbq_query()
new_stats = self.rest.query_tool_stats()
new_stats = self.rest.query_tool_stats(self.master)
self.assertTrue(new_stats['requests.count'] == stats['requests.count'] + len(self.buckets),
'Request were not increased')
self.assertTrue(new_stats['selects.count'] == stats['selects.count'] + len(self.buckets),
'Selects count were not increased')
self.log.info('select count is checked')

def test_errors(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
for query_bucket in self.query_buckets:
self.query = "SELECT ALL FROM %s" % query_bucket
try:
self.run_cbq_query()
except:
pass
new_stats = self.rest.query_tool_stats()
new_stats = self.rest.query_tool_stats(self.master)
self.assertTrue(new_stats['requests.count'] == stats['requests.count'] + len(self.buckets),
'Request were not increased')
self.assertTrue(new_stats['errors.count'] == stats['errors.count'] + len(self.buckets),
'Selects count were not increased')
self.log.info('errors count is checked')

def test_requests_insert(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
for query_bucket in self.query_buckets:
self.query = 'INSERT into %s key "%s" VALUES %s' % (query_bucket, 'key', 'value')
self.run_cbq_query()
new_stats = self.rest.query_tool_stats()
new_stats = self.rest.query_tool_stats(self.master)
self.assertTrue(new_stats['requests.count'] == stats['requests.count'] + len(self.buckets),
'Request were not increased')
self.assertTrue(new_stats['inserts.count'] == stats['inserts.count'] + len(self.buckets),
'Inserts count were not increased')
self.log.info('insert count is checked')

def test_requests_update(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
for query_bucket in self.query_buckets:
self.query = 'INSERT into %s key "%s" VALUES %s' % (query_bucket, 'key', 'value')
self.query = "update %s use keys ['%s'] set name='new'" % (query_bucket, 'key')
self.run_cbq_query()
new_stats = self.rest.query_tool_stats()
new_stats = self.rest.query_tool_stats(self.master)
self.assertTrue(new_stats['requests.count'] == stats['requests.count'] + len(self.buckets),
'Request were not increased')
self.assertTrue(new_stats['updates.count'] == stats['updates.count'] + len(self.buckets),
'Updates count were not increased')
self.log.info('update count is checked')

def test_requests_delete(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
for query_bucket in self.query_buckets:
self.query = 'INSERT into %s key "%s" VALUES %s' % (query_bucket, 'key', 'value')
self.query = "delete from %s use keys ['%s']" % (query_bucket, 'key')
self.run_cbq_query()
new_stats = self.rest.query_tool_stats()
new_stats = self.rest.query_tool_stats(self.master)
self.assertTrue(new_stats['requests.count'] == stats['requests.count'] + len(self.buckets),
'Request were not increased')
self.assertTrue(new_stats['deletes.count'] == stats['deletes.count'] + len(self.buckets),
'Deletes count were not increased')
self.log.info('delete count is checked')

def test_audit_requests_total(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
self.assertTrue(stats['audit_requests_total.count'] >= 0, 'Audit requests total is unavailable')

def test_audit_requests_filtered(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
self.assertTrue(stats['audit_requests_filtered.count'] >= 0, 'Audit requests filtered is unavailable')

def test_audit_actions(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
self.assertTrue(stats['audit_actions.count'] >= 0, 'Audit actions is unavailable')

def test_audit_actions_failed(self):
stats = self.rest.query_tool_stats()
stats = self.rest.query_tool_stats(self.master)
self.assertTrue(stats['audit_actions_failed.count'] >= 0, 'Audit actions failed is unavailable')

0 comments on commit 28922a6

Please sign in to comment.