def warmup(self, collect_stats=True, flush_os_cache=False): """ Restart cluster and wait for it to warm up. In current version, affect the master node only. """ if not self.input.servers: print "[warmup error] empty server list" return if collect_stats: client_id = self.parami("prefix", 0) test_params = {'test_time': time.time(), 'test_name': self.id(), 'json': 0} sc = self.start_stats(self.spec_reference + ".warmup", test_params=test_params, client_id=client_id) print "[warmup] preparing to warmup cluster ..." server = self.input.servers[0] shell = RemoteMachineShellConnection(server) start_time = time.time() print "[warmup] stopping couchbase ... ({0}, {1})"\ .format(server.ip, time.strftime(PerfDefaults.strftime)) shell.stop_couchbase() print "[warmup] couchbase stopped ({0}, {1})"\ .format(server.ip, time.strftime(PerfDefaults.strftime)) if flush_os_cache: print "[warmup] flushing os cache ..." shell.flush_os_caches() shell.start_couchbase() print "[warmup] couchbase restarted ({0}, {1})"\ .format(server.ip, time.strftime(PerfDefaults.strftime)) self.wait_until_warmed_up() print "[warmup] warmup finished" end_time = time.time() ops = {'tot-sets': 0, 'tot-gets': 0, 'tot-items': 0, 'tot-creates': 0, 'tot-misses': 0, "start-time": start_time, "end-time": end_time} if collect_stats: self.end_stats(sc, ops, self.spec_reference + ".warmup")
def warmup(self, collect_stats=True, flush_os_cache=False): """ Restart cluster and wait for it to warm up. In current version, affect the master node only. """ if not self.input.servers: self.log.error("empty server list") return if collect_stats: client_id = self.parami("prefix", 0) test_params = {'test_time': time.time(), 'test_name': self.id(), 'json': 0} sc = self.start_stats(self.spec_reference + ".warmup", test_params=test_params, client_id=client_id) self.log.info("preparing to warmup cluster ...") server = self.input.servers[0] shell = RemoteMachineShellConnection(server) start_time = time.time() self.log.info("stopping couchbase ... ({0})".format(server.ip)) shell.stop_couchbase() self.log.info("couchbase stopped ({0})".format(server.ip)) if flush_os_cache: self.log.info("flushing os cache ...") shell.flush_os_caches() shell.start_couchbase() self.log.info("couchbase restarted ({0})".format(server.ip)) self.wait_until_warmed_up() self.log.info("warmup finished") end_time = time.time() ops = {'tot-sets': 0, 'tot-gets': 0, 'tot-items': 0, 'tot-creates': 0, 'tot-misses': 0, "start-time": start_time, "end-time": end_time} if collect_stats: self.end_stats(sc, ops, self.spec_reference + ".warmup")
def kill_erlang_service(self, server): remote_client = RemoteMachineShellConnection(server) os_info = remote_client.extract_remote_info() log.info("os_info : {0}", os_info) if os_info.type.lower() == "windows": remote_client.kill_erlang(os="windows") else: remote_client.kill_erlang() remote_client.start_couchbase() remote_client.disconnect() # wait for restart and warmup on all node self.sleep(self.wait_timeout * 2) # wait till node is ready after warmup ClusterOperationHelper.wait_for_ns_servers_or_assert([server], self, wait_if_warmup=True)
def test_nodes_ejection(self): eject_nodes_structure = self._input.param("eject_nodes", None) eject_type = self._input.param("eject_type", None) initial_query_zones = self._input.param("query_zone_before_eject", None).split("|") post_eject_query_zones = self._input.param("query_zone_after_eject", None).split("|") self.build_cluster() self.load_data() idx = self.build_index() fts_nodes = [] for initial_query_zone in initial_query_zones: fts_nodes.extend( self.get_zone_healthy_fts_nodes(zone=initial_query_zone)) initial_hits = self.query_node(index=idx, node=fts_nodes[0]) for node in fts_nodes[1:]: hits = self.query_node(index=idx, node=node) self.assertEqual( initial_hits, hits, "Difference in search results before node eject detected.") ejected_nodes = self.eject_nodes( eject_nodes_structure=eject_nodes_structure, eject_type=eject_type) post_eject_query_nodes = [] for post_eject_query_zone in post_eject_query_zones: fts_nodes = self.get_zone_healthy_fts_nodes( zone=post_eject_query_zone) post_eject_query_nodes.extend(fts_nodes) self._maybe_rebalance() try: for healthy_fts_node in post_eject_query_nodes: post_eject_hits, _, _, _ = idx.execute_query( self.fts_query, node=healthy_fts_node) self.assertEqual( initial_hits, post_eject_hits, "Hits are different after server groups modification!") finally: if eject_type == "shutdown": for ejected_node in ejected_nodes: remote = RemoteMachineShellConnection(ejected_node) remote.start_couchbase()
def test_tls_1_dot_2_blocking(self): """ 1. Set tls version = 1.3 2. Restart couchbase server 3. Verify tls version = 1.3 and not set to 1.2(default) """ rest = RestConnection(self.master) rest.set_min_tls_version(version="tlsv1.3") self.test_tls_min_version() try: for node in self.servers: shell = RemoteMachineShellConnection(node) shell.stop_couchbase() time.sleep(10) shell.start_couchbase() shell.disconnect() except Exception as e: self.fail(e) self.test_tls_min_version()