Skip to content

Commit 510ee55

Browse files
jtgrabowskijacek-lewandowski
authored andcommitted
STAR-452: add EverywhereStrategy smoke test (#10)
(cherry picked from commit eb3049c) (cherry picked from commit fe23e0b) (cherry picked from commit af5e094) (cherry picked from commit caaa548) (cherry picked from commit 31b6a86) (cherry picked from commit c32760d) (cherry picked from commit abc36a8)
1 parent 8080990 commit 510ee55

File tree

2 files changed

+52
-0
lines changed

2 files changed

+52
-0
lines changed

bootstrap_test.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,56 @@ def test_bootstrap_binary_disabled(self):
10191019
assert_bootstrap_state(self, node3, 'COMPLETED', user='cassandra', password='cassandra')
10201020
node3.wait_for_binary_interface()
10211021

1022+
@since('4.0')
1023+
@pytest.mark.no_vnodes
1024+
def test_simple_bootstrap_with_everywhere_strategy(self):
1025+
cluster = self.cluster
1026+
tokens = cluster.balanced_tokens(2)
1027+
cluster.set_configuration_options(values={'num_tokens': 1})
1028+
1029+
logger.debug("[node1, node2] tokens: %r" % (tokens,))
1030+
1031+
keys = 10000
1032+
1033+
# Create a single node cluster
1034+
cluster.populate(1)
1035+
node1 = cluster.nodelist()[0]
1036+
node1.set_configuration_options(values={'initial_token': tokens[0]})
1037+
cluster.start()
1038+
1039+
session = self.patient_cql_connection(node1)
1040+
create_ks(session, 'ks', 'EverywhereStrategy')
1041+
create_cf(session, 'cf', columns={'c1': 'text', 'c2': 'text'})
1042+
1043+
insert_statement = session.prepare("INSERT INTO ks.cf (key, c1, c2) VALUES (?, 'value1', 'value2')")
1044+
execute_concurrent_with_args(session, insert_statement, [['k%d' % k] for k in range(keys)])
1045+
1046+
node1.flush()
1047+
node1.compact()
1048+
1049+
# Reads inserted data all during the bootstrap process. We shouldn't
1050+
# get any error
1051+
query_c1c2(session, random.randint(0, keys - 1), ConsistencyLevel.ONE)
1052+
session.shutdown()
1053+
1054+
# Bootstrapping a new node in the current version
1055+
node2 = new_node(cluster)
1056+
node2.set_configuration_options(values={'initial_token': tokens[1]})
1057+
node2.start(wait_for_binary_proto=True)
1058+
node2.compact()
1059+
1060+
node1.cleanup()
1061+
logger.debug("node1 size for ks.cf after cleanup: %s" % float(data_size(node1,'ks','cf')))
1062+
node1.compact()
1063+
logger.debug("node1 size for ks.cf after compacting: %s" % float(data_size(node1,'ks','cf')))
1064+
1065+
logger.debug("node2 size for ks.cf after compacting: %s" % float(data_size(node2,'ks','cf')))
1066+
1067+
size1 = float(data_size(node1,'ks','cf'))
1068+
size2 = float(data_size(node2,'ks','cf'))
1069+
assert_almost_equal(size1, size2, error=0.3)
1070+
1071+
assert_bootstrap_state(self, node2, 'COMPLETED')
10221072

10231073
class TestBootstrap(BootstrapTester):
10241074
"""

dtest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ def create_ks(session, name, rf):
364364
if isinstance(rf, int):
365365
# we assume simpleStrategy
366366
query = query % (name, "'class':'SimpleStrategy', 'replication_factor':%d" % rf)
367+
elif 'EverywhereStrategy' in rf:
368+
query = query % (name, "'class':'org.apache.cassandra.locator.EverywhereStrategy'")
367369
else:
368370
assert len(rf) >= 0, "At least one datacenter/rf pair is needed"
369371
# we assume networkTopologyStrategy

0 commit comments

Comments
 (0)