/
failoverbasetests.py
79 lines (75 loc) · 4.93 KB
/
failoverbasetests.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from TestInput import TestInputSingleton
from basetestcase import BaseTestCase
from membase.helper.cluster_helper import ClusterOperationHelper
from membase.api.rest_client import RestConnection, RestHelper
from couchbase.documentgenerator import BlobGenerator
from couchbase.document import View
from remote.remote_util import RemoteMachineShellConnection, RemoteUtilHelper
class FailoverBaseTest(BaseTestCase):
@staticmethod
def setUp(self):
self._cleanup_nodes = []
self._failed_nodes = []
super(FailoverBaseTest, self).setUp()
self.defaul_map_func = "function (doc) {\n emit(doc._id, doc);\n}"
self.default_view_name = "default_view"
self.default_view = View(self.default_view_name, self.defaul_map_func, None)
self.failoverMaster = self.input.param("failoverMaster", False)
self.total_vbuckets = self.input.param("total_vbuckets", 1024)
self.std_vbucket_dist = self.input.param("std_vbucket_dist", None)
self.withMutationOps = self.input.param("withMutationOps", False)
self.withViewsOps = self.input.param("withViewsOps", False)
self.createIndexesDuringFailover = self.input.param("createIndexesDuringFailover", False)
self.upr_check = self.input.param("upr_check", True)
self.withQueries = self.input.param("withQueries", False)
self.numberViews = self.input.param("numberViews", False)
self.gracefulFailoverFail = self.input.param("gracefulFailoverFail", False)
self.runRebalanceAfterFailover = self.input.param("runRebalanceAfterFailover", True)
self.failoverMaster = self.input.param("failoverMaster", False)
self.check_verify_failover_type = self.input.param("check_verify_failover_type", True)
self.recoveryType = self.input.param("recoveryType", "delta")
self.bidirectional = self.input.param("bidirectional", False)
self.stopGracefulFailover = self.input.param("stopGracefulFailover", False)
self._value_size = self.input.param("value_size", 256)
self.doc_ops = self.input.param("doc_ops", [])
self.deltaRecoveryBuckets = self.input.param("deltaRecoveryBuckets", None)
if self.doc_ops:
self.doc_ops = self.doc_ops.split(":")
self.num_failed_nodes = self.input.param("num_failed_nodes", 0)
self.dgm_run = self.input.param("dgm_run", True)
credentials = self.input.membase_settings
self.add_back_flag = False
self.during_ops = self.input.param("during_ops", None)
self.graceful = self.input.param("graceful", True)
if self.recoveryType:
self.recoveryType=self.recoveryType.split(":")
if self.deltaRecoveryBuckets:
self.deltaRecoveryBuckets=self.deltaRecoveryBuckets.split(":")
# Defintions of Blod Generator used in tests
self.gen_initial_create = BlobGenerator('failover', 'failover', self.value_size, end=self.num_items)
self.gen_create = BlobGenerator('failover', 'failover', self.value_size, start=self.num_items + 1 , end=self.num_items * 1.5)
self.gen_update = BlobGenerator('failover', 'failover', self.value_size, start=self.num_items / 2, end=self.num_items)
self.gen_delete = BlobGenerator('failover', 'failover', self.value_size, start=self.num_items / 4, end=self.num_items / 2 - 1)
self.afterfailover_gen_create = BlobGenerator('failover', 'failover', self.value_size, start=self.num_items * 1.6 , end=self.num_items * 2)
self.afterfailover_gen_update = BlobGenerator('failover', 'failover', self.value_size, start=1 , end=self.num_items/4)
self.afterfailover_gen_delete = BlobGenerator('failover', 'failover', self.value_size, start=self.num_items * .5 , end=self.num_items* 0.75)
self.log.info("============== FailoverBaseTest setup was finished for test #{0} {1} =============="\
.format(self.case_number, self._testMethodName))
@staticmethod
def tearDown(self):
if hasattr(self, '_resultForDoCleanups') and len(self._resultForDoCleanups.failures) > 0 \
and 'stop-on-failure' in TestInputSingleton.input.test_params and \
str(TestInputSingleton.input.test_params['stop-on-failure']).lower() == 'true':
# supported starting with python2.7
log.warn("CLEANUP WAS SKIPPED")
self.cluster.shutdown(force=True)
self._log_finish(self)
else:
try:
self.log.info("============== tearDown was started for test #{0} {1} =============="\
.format(self.case_number, self._testMethodName))
RemoteUtilHelper.common_basic_setup(self.servers)
self.log.info("============== tearDown was finished for test #{0} {1} =============="\
.format(self.case_number, self._testMethodName))
finally:
super(FailoverBaseTest, self).tearDown()