Skip to content

Commit cd94fb4

Browse files
committed
fix for operator restore
Change-Id: I5e48bd2737ef38b61749792f73f3515e1cd6c874 Reviewed-on: http://review.couchbase.org/c/perfrunner/+/152492 Tested-by: Build Bot <[email protected]> Reviewed-by: Korrigan Clark <[email protected]>
1 parent adeef97 commit cd94fb4

File tree

3 files changed

+21
-46
lines changed

3 files changed

+21
-46
lines changed

perfrunner/helpers/rest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,3 +1110,9 @@ def get_bucket_info(self, host: str, bucket: str) -> List[str]:
11101110
api = 'http://{}:{}/pools/default/buckets/{}'\
11111111
.format(host, port, bucket)
11121112
return self.get(url=api).json()
1113+
1114+
def flush_bucket(self, host: str, bucket: str):
1115+
logger.info('Flushing bucket: {}'.format(bucket))
1116+
host, port = self.translate_host_and_port(host, '8091')
1117+
api = 'http://{}:{}/pools/default/buckets/{}/controller/doFlush'.format(host, port, bucket)
1118+
self.post(url=api)

perfrunner/remote/kubernetes.py

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ def __init__(self, cluster_spec, os):
2626
self.restore_file = 'restore.yaml'
2727
self.operator_version = None
2828

29-
def kubectl(self, params, kube_config, split_lines=True, max_attempts=3):
29+
def kubectl(self, params, kube_config=None, split_lines=True, max_attempts=3):
30+
if not kube_config:
31+
kube_config = self.kube_config_path
3032
params = params.split()
3133
if params[0] == 'exec':
3234
params = params[0:5] + [" ".join(params[5::])]
@@ -668,42 +670,6 @@ def create_restore(self):
668670
restore_template_path = self.get_restore_template_path()
669671
self.create_from_file(restore_template_path)
670672

671-
def wait_for_restore_complete(self):
672-
logger.info('waiting for restore')
673-
running = False
674-
tries = 0
675-
while not running and tries < 60:
676-
try:
677-
running = self.get_restore('my-restore')['status']['running']
678-
except Exception:
679-
logger.info("restore not started")
680-
tries += 1
681-
time.sleep(1)
682-
if not running:
683-
raise Exception('failed to see running restore')
684-
logger.info("restore started")
685-
tries = 0
686-
start = time.time()
687-
while tries < 7200:
688-
try:
689-
self.get_restore('my-restore')
690-
except Exception as ex:
691-
break
692-
tries += 1
693-
time.sleep(1)
694-
end = time.time()
695-
if tries >= 3600:
696-
raise Exception('failed complete restore')
697-
logger.info("restore finished")
698-
return end - start
699-
700-
def recreate_bucket(self, bucket_name):
701-
bucket_path = self.get_bucket_path(bucket_name)
702-
self.delete_from_file(bucket_path)
703-
time.sleep(60)
704-
self.create_from_file("cloud/operator/2/1/{}.yaml".format(bucket_name))
705-
time.sleep(60)
706-
707673
def istioctl(self, params, kube_config=None, split_lines=True, max_attempts=1):
708674
kube_config = kube_config or self.kube_config_path
709675
params = params.split()

perfrunner/tests/operator.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import datetime
22

33
from logger import logger
4-
from perfrunner.helpers.cbmonitor import with_stats
4+
from perfrunner.helpers.cbmonitor import timeit, with_stats
55
from perfrunner.tests import PerfTest
66

77

@@ -30,9 +30,9 @@ def parse_backup_status(self, backup_status):
3030
time_elapsed = time_elapsed.total_seconds()
3131
capacity_used = backup_status['capacityUsed']
3232
if "Mi" in capacity_used:
33-
backup_size = float(backup_status['capacityUsed'].strip("Mi"))/1024
33+
backup_size = round(float(backup_status['capacityUsed'].strip("Mi"))/1024, 2)
3434
if "Gi" in capacity_used:
35-
backup_size = float(backup_status['capacityUsed'].strip("Gi"))
35+
backup_size = round(float(backup_status['capacityUsed'].strip("Gi")), 2)
3636
return time_elapsed, backup_size
3737

3838
def _report_kpi(self, time_elapsed, backup_size):
@@ -67,15 +67,18 @@ def run(self):
6767
class OperatorBackupRestoreTest(OperatorBackupTest):
6868

6969
@with_stats
70+
@timeit
7071
def restore(self):
7172
logger.info('Running restore')
7273
self.remote.create_restore()
73-
elapsed_time = self.remote.wait_for_restore_complete()
74-
return elapsed_time
74+
self.check_num_items()
7575

76-
def recreate_bucket(self):
77-
logger.info('Recreating bucket')
78-
self.remote.recreate_bucket("bucket-1")
76+
def flush_buckets(self):
77+
logger.info('Flushing bucket')
78+
for i in range(self.test_config.cluster.num_buckets):
79+
bucket = 'bucket-{}'.format(i + 1)
80+
self.rest.flush_bucket(self.master_node, bucket)
81+
self.check_num_items(bucket_items={bucket: 0})
7982

8083
def _report_kpi(self, time_elapsed_backup, time_elapsed_restore, backup_size):
8184
edition = 'Operator'
@@ -114,6 +117,6 @@ def run(self):
114117
self.backup()
115118
backup_status = self.remote.get_backup('my-backup')['status']
116119
time_elapsed_backup, backup_size = self.parse_backup_status(backup_status)
117-
self.recreate_bucket()
120+
self.flush_buckets()
118121
time_elapsed_restore = self.restore()
119122
self.report_kpi(time_elapsed_backup, time_elapsed_restore, backup_size)

0 commit comments

Comments
 (0)