This is an automated email from the ASF dual-hosted git repository. smiklosovic pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git
The following commit(s) were added to refs/heads/trunk by this push: new 148f57e dtest for setting hostId upon node startup 148f57e is described below commit 148f57ef8051adfa15d1fefff5edff2709f0c75b Author: fibersel <0583...@gmail.com> AuthorDate: Thu May 27 02:49:56 2021 +0300 dtest for setting hostId upon node startup patch by Abi Palagashvili; reviewed by Stefan Miklosovic and Paulo Motta for CASSANDRA-14582 --- bootstrap_test.py | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/bootstrap_test.py b/bootstrap_test.py index 9739a63..dc06917 100644 --- a/bootstrap_test.py +++ b/bootstrap_test.py @@ -7,6 +7,7 @@ import threading import time import logging import signal +import uuid from cassandra import ConsistencyLevel from cassandra.concurrent import execute_concurrent_with_args @@ -1016,3 +1017,83 @@ class TestBootstrap(Tester): self.assert_log_had_msg(node3, "Leaving write survey mode and joining ring at operator request") assert_bootstrap_state(self, node3, 'COMPLETED', user='cassandra', password='cassandra') node3.wait_for_binary_interface() + + @since('4.1') + def test_invalid_host_id(self): + """ + @jira_ticket CASSANDRA-14582 + Test that node fails to bootstrap if host id is invalid + """ + cluster = self.cluster + cluster.set_environment_variable('CASSANDRA_TOKEN_PREGENERATION_DISABLED', 'True') + cluster.populate(1) + cluster.start() + + node2 = new_node(cluster) + + try: + node2.start(jvm_args=["-Dcassandra.host_id_first_boot=invalid-host-id"], wait_other_notice=False, wait_for_binary_proto=True) + pytest.fail('Node should fail to bootstrap because host id set was invalid') + except NodeError: + pass # node does not start as expected + + @since('4.1') + def test_host_id_override(self): + """ + @jira_ticket CASSANDRA-14582 + Test that node persists host id + """ + cluster = self.cluster + cluster.set_environment_variable('CASSANDRA_TOKEN_PREGENERATION_DISABLED', 'True') + cluster.populate(1) + cluster.start() + + host_id = "06fc931f-33b5-4e22-0001-000000000001" + + node1 = cluster.nodes['node1'] + + node2 = new_node(cluster) + node2.start(wait_for_binary_proto=True, wait_other_notice=True, jvm_args=["-Dcassandra.host_id_first_boot={}".format(host_id)]) + + address2 = "'{}'".format(node2.address()) + + # 1. wait for host_id setup + node2.watch_log_for(host_id) + + # 2. check host_id in local table + session2 = self.patient_exclusive_cql_connection(node2) + assert_one(session2, "SELECT host_id FROM system.local", [uuid.UUID(host_id)]) + + # 3. check host_id in other node's table + session1 = self.patient_exclusive_cql_connection(node1) + assert_one(session1, "SELECT host_id FROM system.peers_v2 WHERE peer = {}".format(address2), [uuid.UUID(host_id)]) + + # restart node and repeat + node2.stop() + node2.start(wait_for_binary_proto=True, wait_other_notice=True) + + # 1. wait for host_id setup + node2.watch_log_for(host_id) + + # 2. check host_id in local table + session2 = self.patient_exclusive_cql_connection(node2) + assert_one(session2, "SELECT host_id FROM system.local", [uuid.UUID(host_id)]) + + # 3. check host_id in other node's table + session1 = self.patient_exclusive_cql_connection(node1) + assert_one(session1, "SELECT host_id FROM system.peers_v2 WHERE peer = {}".format(address2), [uuid.UUID(host_id)]) + + # restart node with another host_id and repeat + node2.stop() + node2.start(wait_for_binary_proto=True, wait_other_notice=True, jvm_args=["-Dcassandra.host_id_first_boot=setting-new-host-id-first-boot"]) + + # 1. wait for host_id setup + node2.watch_log_for(host_id) + + # 2. check host_id in local table + session2 = self.patient_exclusive_cql_connection(node2) + assert_one(session2, "SELECT host_id FROM system.local", [uuid.UUID(host_id)]) + + # 3. check host_id in other node's table + session1 = self.patient_exclusive_cql_connection(node1) + assert_one(session1, "SELECT host_id FROM system.peers_v2 WHERE peer = {}".format(address2), [uuid.UUID(host_id)]) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org