class TestCCMLib(ccmtest.Tester): def test2(self): self.cluster = Cluster(CLUSTER_PATH, "test2", cassandra_version='2.0.3') self.cluster.populate(2) self.cluster.start() self.cluster.set_log_level("ERROR") class FakeNode: name = "non-existing node" self.cluster.remove(FakeNode()) [node1, node2] = self.cluster.nodelist() self.cluster.remove(node1) self.cluster.show(True) self.cluster.show(False) #self.cluster.stress([]) self.cluster.compact() self.cluster.drain() self.cluster.stop() def test3(self): self.cluster = Cluster(CLUSTER_PATH, "test3", cassandra_version='2.0.3') self.cluster.populate(2) self.cluster.start() self.cluster.cleanup() self.cluster.clear() self.cluster.stop()
class TestCCMIssues(Tester): def issue_150_test(self): self.cluster = Cluster(CLUSTER_PATH, "150", cassandra_version='2.0.9') self.cluster.populate([1, 2], use_vnodes=True) self.cluster.start() dcs = [node.data_center for node in self.cluster.nodelist()] dcs.append('dc2') node4 = Node('node4', self.cluster, True, ('127.0.0.4', 9160), ('127.0.0.4', 7000), '7400', '2000', None) self.cluster.add(node4, False, 'dc2') node4.start() dcs_2 = [node.data_center for node in self.cluster.nodelist()] self.assertItemsEqual(dcs, dcs_2) node4.nodetool('status')
def test1(): cluster = Cluster(CLUSTER_PATH, "test1", cassandra_version='2.0.3') cluster.show(False) cluster.populate(2) cluster.set_partitioner("Murmur3") cluster.start() cluster.set_configuration_options(None, None) cluster.set_configuration_options({}, True) cluster.set_configuration_options({"a": "b"}, False) [node1, node2] = cluster.nodelist() node2.compact() cluster.flush() cluster.remove() cluster.stop()
def test2(): cluster = Cluster(CLUSTER_PATH, "test2", cassandra_version='2.0.3') cluster.populate(2) cluster.start() cluster.set_log_level("ERROR") class FakeNode: name = "non-existing node" cluster.remove(FakeNode()) [node1, node2] = cluster.nodelist() cluster.remove(node1) cluster.show(True) cluster.show(False) #cluster.stress([]) cluster.compact() cluster.drain() cluster.stop()
class TestRunCqlsh(ccmtest.Tester): def setUp(self): '''Create a cluster for cqlsh tests. Assumes that ccmtest.Tester's teardown() method will safely stop and remove self.cluster.''' self.cluster = Cluster(CLUSTER_PATH, "run_cqlsh", cassandra_version='git:trunk') self.cluster.populate(1).start(wait_for_binary_proto=True) [self.node] = self.cluster.nodelist() def run_cqlsh_printing(self, return_output, show_output): '''Parameterized test. Runs run_cqlsh with options to print the output and to return it as a string, or with these options combined, depending on the values of the arguments.''' # redirect run_cqlsh's stdout to a string buffer old_stdout, sys.stdout = sys.stdout, StringIO() rv = self.node.run_cqlsh('DESCRIBE keyspaces;', return_output=return_output, show_output=show_output) # put stdout back where it belongs and get the built string value sys.stdout, printed_output = old_stdout, sys.stdout.getvalue() if return_output: # we should see names of system keyspaces self.assertIn('system', rv[0]) # stderr should be empty self.assertEqual('', rv[1]) else: # implicitly-returned None self.assertEqual(rv, None) if show_output: self.assertIn('system', printed_output) else: # nothing should be printed if (not show_output) self.assertEqual(printed_output, '') if return_output and show_output: self.assertEqual(printed_output, rv[0])
class TestCCMLib(ccmtest.Tester): def simple_test(self, version='2.0.9'): self.cluster = Cluster(CLUSTER_PATH, "simple", cassandra_version=version) self.cluster.populate(3) self.cluster.start() node1, node2, node3 = self.cluster.nodelist() if version < '2.1': node1.stress() else: node1.stress(['write', 'n=1000000']) self.cluster.flush() def simple_test_across_versions(self): self.simple_test(version='1.2.18') self.cluster.remove() self.simple_test(version='2.0.9') self.cluster.remove() self.simple_test(version='2.1.0-rc5') def restart_test(self): self.cluster = Cluster(CLUSTER_PATH, "restart", cassandra_version='2.0.9') self.cluster.populate(3) self.cluster.start() self.cluster.stop() self.cluster.start() self.cluster.show(True) def multi_dc_test(self): self.cluster = Cluster(CLUSTER_PATH, "multi_dc", cassandra_version='2.0.9') self.cluster.populate([1, 2]) self.cluster.start() dcs = [node.data_center for node in self.cluster.nodelist()] self.cluster.set_configuration_options(None, None) self.cluster.stop() self.cluster.start() dcs_2 = [node.data_center for node in self.cluster.nodelist()] self.assertListEqual(dcs, dcs_2) def test1(self): self.cluster = Cluster(CLUSTER_PATH, "test1", cassandra_version='2.0.3') self.cluster.show(False) self.cluster.populate(2) self.cluster.set_partitioner("Murmur3") self.cluster.start() self.cluster.set_configuration_options(None, None) self.cluster.set_configuration_options({}, True) self.cluster.set_configuration_options({"a": "b"}, False) [node1, node2] = self.cluster.nodelist() node2.compact() self.cluster.flush() self.cluster.stop() def test2(self): self.cluster = Cluster(CLUSTER_PATH, "test2", cassandra_version='2.0.3') self.cluster.populate(2) self.cluster.start() self.cluster.set_log_level("ERROR") class FakeNode: name = "non-existing node" self.cluster.remove(FakeNode()) [node1, node2] = self.cluster.nodelist() self.cluster.remove(node1) self.cluster.show(True) self.cluster.show(False) #self.cluster.stress([]) self.cluster.compact() self.cluster.drain() self.cluster.stop() def test3(self): self.cluster = Cluster(CLUSTER_PATH, "test3", cassandra_version='2.0.3') self.cluster.populate(2) self.cluster.start() self.cluster.cleanup() self.cluster.clear() self.cluster.stop()
class TestRunCqlsh(ccmtest.Tester): def setUp(self): '''Create a cluster for cqlsh tests. Assumes that ccmtest.Tester's teardown() method will safely stop and remove self.cluster.''' self.cluster = Cluster(CLUSTER_PATH, "run_cqlsh", cassandra_version='git:trunk') self.cluster.populate(1).start(wait_for_binary_proto=True) [self.node] = self.cluster.nodelist() def test_run_cqlsh(self): '''run_cqlsh works with a simple example input''' self.node.run_cqlsh( ''' CREATE KEYSPACE ks WITH replication = { 'class' :'SimpleStrategy', 'replication_factor': 1}; USE ks; CREATE TABLE test (key int PRIMARY KEY); INSERT INTO test (key) VALUES (1); ''') rv = self.node.run_cqlsh('SELECT * from ks.test', return_output=True) for s in ['(1 rows)', 'key', '1']: self.assertIn(s, rv[0]) self.assertEqual(rv[1], '') def run_cqlsh_printing(self, return_output, show_output): '''Parameterized test. Runs run_cqlsh with options to print the output and to return it as a string, or with these options combined, depending on the values of the arguments.''' # redirect run_cqlsh's stdout to a string buffer old_stdout, sys.stdout = sys.stdout, StringIO() rv = self.node.run_cqlsh('DESCRIBE keyspaces;', return_output=return_output, show_output=show_output) # put stdout back where it belongs and get the built string value sys.stdout, printed_output = old_stdout, sys.stdout.getvalue() if return_output: # we should see names of system keyspaces self.assertIn('system', rv[0]) # stderr should be empty self.assertEqual('', rv[1]) else: # implicitly-returned None self.assertEqual(rv, None) if show_output: self.assertIn('system', printed_output) else: # nothing should be printed if (not show_output) self.assertEqual(printed_output, '') if return_output and show_output: self.assertEqual(printed_output, rv[0]) def test_no_output(self): self.run_cqlsh_printing(return_output=False, show_output=False) def test_print_output(self): self.run_cqlsh_printing(return_output=True, show_output=False) def test_return_output(self): self.run_cqlsh_printing(return_output=False, show_output=True) def test_print_and_return_output(self): self.run_cqlsh_printing(return_output=True, show_output=True)
class TestRunCqlsh(ccmtest.Tester): def setUp(self): '''Create a cluster for cqlsh tests. Assumes that ccmtest.Tester's teardown() method will safely stop and remove self.cluster.''' self.cluster = Cluster(CLUSTER_PATH, "run_cqlsh", cassandra_version='git:trunk') self.cluster.populate(1).start(wait_for_binary_proto=True) [self.node] = self.cluster.nodelist() def test_run_cqlsh(self): '''run_cqlsh works with a simple example input''' self.node.run_cqlsh(''' CREATE KEYSPACE ks WITH replication = { 'class' :'SimpleStrategy', 'replication_factor': 1}; USE ks; CREATE TABLE test (key int PRIMARY KEY); INSERT INTO test (key) VALUES (1); ''') rv = self.node.run_cqlsh('SELECT * from ks.test', return_output=True) for s in ['(1 rows)', 'key', '1']: self.assertIn(s, rv[0]) self.assertEqual(rv[1], '') def run_cqlsh_printing(self, return_output, show_output): '''Parameterized test. Runs run_cqlsh with options to print the output and to return it as a string, or with these options combined, depending on the values of the arguments.''' # redirect run_cqlsh's stdout to a string buffer old_stdout, sys.stdout = sys.stdout, StringIO() rv = self.node.run_cqlsh('DESCRIBE keyspaces;', return_output=return_output, show_output=show_output) # put stdout back where it belongs and get the built string value sys.stdout, printed_output = old_stdout, sys.stdout.getvalue() if return_output: # we should see names of system keyspaces self.assertIn('system', rv[0]) # stderr should be empty self.assertEqual('', rv[1]) else: # implicitly-returned None self.assertEqual(rv, None) if show_output: self.assertIn('system', printed_output) else: # nothing should be printed if (not show_output) self.assertEqual(printed_output, '') if return_output and show_output: self.assertEqual(printed_output, rv[0]) def test_no_output(self): self.run_cqlsh_printing(return_output=False, show_output=False) def test_print_output(self): self.run_cqlsh_printing(return_output=True, show_output=False) def test_return_output(self): self.run_cqlsh_printing(return_output=False, show_output=True) def test_print_and_return_output(self): self.run_cqlsh_printing(return_output=True, show_output=True)
class TestCCMLib(ccmtest.Tester): def test2(self): self.cluster = Cluster(CLUSTER_PATH, "test2", version='git:trunk') self.cluster.populate(2) self.cluster.start() self.cluster.set_log_level("ERROR") class FakeNode: name = "non-existing node" self.cluster.remove(FakeNode()) node1 = self.cluster.nodelist()[0] self.cluster.remove(node1) self.cluster.show(True) self.cluster.show(False) self.cluster.compact() self.cluster.drain() self.cluster.stop() def test3(self): self.cluster = Cluster(CLUSTER_PATH, "test3", version='git:trunk') self.cluster.populate(2) self.cluster.start() node1 = self.cluster.nodelist()[0] self.cluster.stress( ['write', 'n=100', 'no-warmup', '-rate', 'threads=4']) self.cluster.stress([ 'write', 'n=100', 'no-warmup', '-rate', 'threads=4', '-node', node1.ip_addr ]) self.cluster.cleanup() self.cluster.clear() self.cluster.stop() def test_node_start_with_non_default_timeout(self): self.cluster = Cluster(CLUSTER_PATH, "nodestarttimeout", cassandra_version='git:trunk') self.cluster.populate(1) node = self.cluster.nodelist()[0] try: node.start(wait_for_binary_proto=0) self.fail("timeout expected with 0s startup timeout") except ccmlib.node.TimeoutError: pass finally: self.cluster.cleanup() self.cluster.clear() self.cluster.stop() def test_fast_error_on_cluster_start_failure(self): self.cluster = Cluster(CLUSTER_PATH, 'clusterfaststop', cassandra_version='git:trunk') self.cluster.populate(1) self.cluster.set_configuration_options({'invalid_option': 0}) self.check_log_errors = False node = self.cluster.nodelist()[0] start_time = time.time() try: self.cluster.start(use_vnodes=True) self.assertFalse(node.is_running()) self.assertLess(time.time() - start_time, 30) except NodeError: self.assertLess(time.time() - start_time, 30) finally: self.cluster.clear() self.cluster.stop() def test_fast_error_on_node_start_failure(self): self.cluster = Cluster(CLUSTER_PATH, 'nodefaststop', cassandra_version='git:trunk') self.cluster.populate(1) self.cluster.set_configuration_options({'invalid_option': 0}) self.check_log_errors = False node = self.cluster.nodelist()[0] start_time = time.time() try: node.start(wait_for_binary_proto=45) self.assertFalse(node.is_running()) self.assertLess(time.time() - start_time, 30) except NodeError: self.assertLess(time.time() - start_time, 30) finally: self.cluster.clear() self.cluster.stop() def test_dc_mandatory_on_multidc(self): self.cluster = Cluster(CLUSTER_PATH, "mandatorydc", cassandra_version='git:trunk') self.cluster.populate([1, 1]) node3 = self.cluster.create_node(name='node3', auto_bootstrap=True, thrift_interface=('127.0.0.3', 9160), storage_interface=('127.0.0.3', 7000), jmx_port='7300', remote_debug_port='0', initial_token=None, binary_interface=('127.0.0.3', 9042)) with self.assertRaisesRegexp( ccmlib.common.ArgumentError, 'Please specify the DC this node should be added to'): self.cluster.add(node3, is_seed=False)