Skip to content

Commit 8eb44dc

Browse files
jtgrabowskijacek-lewandowski
authored andcommitted
STAR-452: Add EverywhereStrategy smoke test (#10)
1 parent c75e2e9 commit 8eb44dc

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

bootstrap_test.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,3 +1014,54 @@ def test_bootstrap_binary_disabled(self):
10141014
self.assert_log_had_msg(node3, "Leaving write survey mode and joining ring at operator request")
10151015
assert_bootstrap_state(self, node3, 'COMPLETED', user='cassandra', password='cassandra')
10161016
node3.wait_for_binary_interface()
1017+
1018+
@since('4.0')
1019+
@pytest.mark.no_vnodes
1020+
def test_simple_bootstrap_with_everywhere_strategy(self):
1021+
cluster = self.cluster
1022+
tokens = cluster.balanced_tokens(2)
1023+
cluster.set_configuration_options(values={'num_tokens': 1})
1024+
1025+
logger.debug("[node1, node2] tokens: %r" % (tokens,))
1026+
1027+
keys = 10000
1028+
1029+
# Create a single node cluster
1030+
cluster.populate(1)
1031+
node1 = cluster.nodelist()[0]
1032+
node1.set_configuration_options(values={'initial_token': tokens[0]})
1033+
cluster.start()
1034+
1035+
session = self.patient_cql_connection(node1)
1036+
create_ks(session, 'ks', 'EverywhereStrategy')
1037+
create_cf(session, 'cf', columns={'c1': 'text', 'c2': 'text'})
1038+
1039+
insert_statement = session.prepare("INSERT INTO ks.cf (key, c1, c2) VALUES (?, 'value1', 'value2')")
1040+
execute_concurrent_with_args(session, insert_statement, [['k%d' % k] for k in range(keys)])
1041+
1042+
node1.flush()
1043+
node1.compact()
1044+
1045+
# Reads inserted data all during the bootstrap process. We shouldn't
1046+
# get any error
1047+
query_c1c2(session, random.randint(0, keys - 1), ConsistencyLevel.ONE)
1048+
session.shutdown()
1049+
1050+
# Bootstrapping a new node in the current version
1051+
node2 = new_node(cluster)
1052+
node2.set_configuration_options(values={'initial_token': tokens[1]})
1053+
node2.start(wait_for_binary_proto=True)
1054+
node2.compact()
1055+
1056+
node1.cleanup()
1057+
logger.debug("node1 size for ks.cf after cleanup: %s" % float(data_size(node1,'ks','cf')))
1058+
node1.compact()
1059+
logger.debug("node1 size for ks.cf after compacting: %s" % float(data_size(node1,'ks','cf')))
1060+
1061+
logger.debug("node2 size for ks.cf after compacting: %s" % float(data_size(node2,'ks','cf')))
1062+
1063+
size1 = float(data_size(node1,'ks','cf'))
1064+
size2 = float(data_size(node2,'ks','cf'))
1065+
assert_almost_equal(size1, size2, error=0.3)
1066+
1067+
assert_bootstrap_state(self, node2, 'COMPLETED')

dtest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ def create_ks(session, name, rf):
359359
if isinstance(rf, int):
360360
# we assume simpleStrategy
361361
query = query % (name, "'class':'SimpleStrategy', 'replication_factor':%d" % rf)
362+
elif 'EverywhereStrategy' in rf:
363+
query = query % (name, "'class':'org.apache.cassandra.locator.EverywhereStrategy'")
362364
else:
363365
assert len(rf) >= 0, "At least one datacenter/rf pair is needed"
364366
# we assume networkTopologyStrategy

0 commit comments

Comments
 (0)