コード例 #1
0
ファイル: perf.py プロジェクト: mschoch/testrunner
    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")
コード例 #2
0
    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")
コード例 #3
0
 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)
コード例 #4
0
ファイル: eventing_base.py プロジェクト: membase/testrunner
 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)
コード例 #5
0
    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()
コード例 #6
0
ファイル: testssl.py プロジェクト: couchbase/testrunner
 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()