You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2022/01/26 13:15:51 UTC

[cassandra-dtest] branch trunk updated (d62b03d -> a0872a7)

This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git.


    from d62b03d  Pin dtest-timeout to 1.4.2
     new 963dbba  Use function to generate explicit byteman path
     new a0872a7  Use explicit path for the jolokia jar

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 batch_test.py                      |  2 +-
 bootstrap_test.py                  | 10 ++---
 counter_test.py                    | 12 +++---
 cql_test.py                        |  4 +-
 dtest.py                           |  5 +++
 materialized_views_test.py         | 20 +++++-----
 read_repair_test.py                | 78 +++++++++++++++++++-------------------
 rebuild_test.py                    |  6 +--
 repair_tests/repair_test.py        |  4 +-
 replace_address_test.py            |  6 +--
 replica_side_filtering_test.py     |  4 +-
 secondary_indexes_test.py          | 10 ++---
 sstable_generation_loading_test.py |  4 +-
 tools/jmxutils.py                  |  2 +-
 topology_test.py                   |  6 +--
 transient_replication_test.py      | 22 +++++------
 16 files changed, 100 insertions(+), 95 deletions(-)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra-dtest] 02/02: Use explicit path for the jolokia jar

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git

commit a0872a76650b6c850bf429fd2a123ed9cfd59858
Author: Brandon Williams <br...@apache.org>
AuthorDate: Tue Jan 25 16:38:20 2022 -0600

    Use explicit path for the jolokia jar
    
    Patch by brandonwilliams; reviwewed by bereng for CASSANDRA-17265
---
 tools/jmxutils.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/jmxutils.py b/tools/jmxutils.py
index 165fa0d..05957f1 100644
--- a/tools/jmxutils.py
+++ b/tools/jmxutils.py
@@ -9,7 +9,7 @@ import ccmlib.common as common
 
 logger = logging.getLogger(__name__)
 
-JOLOKIA_JAR = os.path.join('lib', 'jolokia-jvm-1.6.2-agent.jar')
+JOLOKIA_JAR = os.path.join(os.path.dirname(__file__), '..', 'lib', 'jolokia-jvm-1.6.2-agent.jar')
 CLASSPATH_SEP = ';' if common.is_win() else ':'
 
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


[cassandra-dtest] 01/02: Use function to generate explicit byteman path

Posted by br...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git

commit 963dbba6f44ea3ca9f40279b82dd43a2095c25ab
Author: Brandon Williams <br...@apache.org>
AuthorDate: Tue Jan 25 14:37:38 2022 -0600

    Use function to generate explicit byteman path
    
    Patch by brandonwilliams; reviewed by bereng for CASSANDRA-17265
---
 batch_test.py                      |  2 +-
 bootstrap_test.py                  | 10 ++---
 counter_test.py                    | 12 +++---
 cql_test.py                        |  4 +-
 dtest.py                           |  5 +++
 materialized_views_test.py         | 20 +++++-----
 read_repair_test.py                | 78 +++++++++++++++++++-------------------
 rebuild_test.py                    |  6 +--
 repair_tests/repair_test.py        |  4 +-
 replace_address_test.py            |  6 +--
 replica_side_filtering_test.py     |  4 +-
 secondary_indexes_test.py          | 10 ++---
 sstable_generation_loading_test.py |  4 +-
 topology_test.py                   |  6 +--
 transient_replication_test.py      | 22 +++++------
 15 files changed, 99 insertions(+), 94 deletions(-)

diff --git a/batch_test.py b/batch_test.py
index 2dad0d3..2d928d8 100644
--- a/batch_test.py
+++ b/batch_test.py
@@ -377,7 +377,7 @@ class TestBatch(Tester):
                                      protocol_version=protocol_version, install_byteman=True)
 
         coordinator = self.cluster.nodelist()[coordinator_idx]
-        coordinator.byteman_submit(['./byteman/fail_after_batchlog_write.btm'])
+        coordinator.byteman_submit([mk_bman_path('fail_after_batchlog_write.btm')])
         logger.debug("Injected byteman scripts to enable batchlog replay {}".format(coordinator.name))
 
         query = """
diff --git a/bootstrap_test.py b/bootstrap_test.py
index 9678f56..06190e9 100644
--- a/bootstrap_test.py
+++ b/bootstrap_test.py
@@ -17,7 +17,7 @@ import pytest
 
 from distutils.version import LooseVersion
 
-from dtest import Tester, create_ks, create_cf, data_size
+from dtest import Tester, create_ks, create_cf, data_size, mk_bman_path
 from tools.assertions import (assert_almost_equal, assert_bootstrap_state, assert_not_running,
                               assert_one, assert_stderr_clean)
 from tools.data import query_c1c2
@@ -30,8 +30,8 @@ logger = logging.getLogger(__name__)
 
 
 class BootstrapTester(Tester):
-    byteman_submit_path_pre_4_0 = './byteman/pre4.0/stream_failure.btm'
-    byteman_submit_path_4_0 = './byteman/4.0/stream_failure.btm'
+    byteman_submit_path_pre_4_0 = mk_bman_path('pre4.0/stream_failure.btm')
+    byteman_submit_path_4_0 = mk_bman_path('4.0/stream_failure.btm')
 
     @pytest.fixture(autouse=True)
     def fixture_add_additional_log_patterns(self, fixture_dtest_setup):
@@ -189,7 +189,7 @@ class BootstrapTester(Tester):
 
         logger.debug("Submitting byteman script to {} to".format(node1.name))
         # Sleep longer than streaming_socket_timeout_in_ms to make sure the node will not be killed
-        node1.byteman_submit(['./byteman/stream_5s_sleep.btm'])
+        node1.byteman_submit([mk_bman_path('stream_5s_sleep.btm')])
 
         # Bootstraping a new node with very small streaming_socket_timeout_in_ms
         node2 = new_node(cluster)
@@ -286,7 +286,7 @@ class BootstrapTester(Tester):
 
              logger.debug("Bootstrap node 2 with delay")
              node2 = new_node(cluster, byteman_port='4200')
-             node2.update_startup_byteman_script('./byteman/bootstrap_5s_sleep.btm')
+             node2.update_startup_byteman_script(mk_bman_path('bootstrap_5s_sleep.btm'))
              node2.start(wait_for_binary_proto=True)
 
              assert_bootstrap_state(self, node2, 'COMPLETED')
diff --git a/counter_test.py b/counter_test.py
index 6b7587a..b596874 100644
--- a/counter_test.py
+++ b/counter_test.py
@@ -8,7 +8,7 @@ from cassandra import ConsistencyLevel
 from cassandra.query import SimpleStatement
 
 from tools.assertions import assert_invalid, assert_length_equal, assert_one
-from dtest import Tester, create_ks, create_cf
+from dtest import Tester, create_ks, create_cf, mk_bman_path
 from tools.data import rows_to_list
 
 since = pytest.mark.since
@@ -97,11 +97,11 @@ class TestCounters(Tester):
         # Have node 1 and 3 cheat a bit during the leader election for a counter mutation; note that cheating
         # takes place iff there is an actual chance for node 2 to be picked.
         if cluster.version() < '4.0':
-            nodes[0].update_startup_byteman_script('./byteman/pre4.0/election_counter_leader_favor_node2.btm')
-            nodes[2].update_startup_byteman_script('./byteman/pre4.0/election_counter_leader_favor_node2.btm')
+            nodes[0].update_startup_byteman_script(mk_bman_path('pre4.0/election_counter_leader_favor_node2.btm'))
+            nodes[2].update_startup_byteman_script(mk_bman_path('pre4.0/election_counter_leader_favor_node2.btm'))
         else:
-            nodes[0].update_startup_byteman_script('./byteman/4.0/election_counter_leader_favor_node2.btm')
-            nodes[2].update_startup_byteman_script('./byteman/4.0/election_counter_leader_favor_node2.btm')
+            nodes[0].update_startup_byteman_script(mk_bman_path('4.0/election_counter_leader_favor_node2.btm'))
+            nodes[2].update_startup_byteman_script(mk_bman_path('4.0/election_counter_leader_favor_node2.btm'))
 
         cluster.start()
         session = self.patient_cql_connection(nodes[0])
@@ -111,7 +111,7 @@ class TestCounters(Tester):
         # Now stop the node and restart but first install a rule to slow down how fast node 2 will update the list
         # nodes that are alive
         nodes[1].stop(wait=True, wait_other_notice=False)
-        nodes[1].update_startup_byteman_script('./byteman/gossip_alive_callback_sleep.btm')
+        nodes[1].update_startup_byteman_script(mk_bman_path('gossip_alive_callback_sleep.btm'))
         nodes[1].start(no_wait=True, wait_other_notice=False)
 
         # Until node 2 is fully alive try to force other nodes to pick him as mutation leader.
diff --git a/cql_test.py b/cql_test.py
index 2bec188..99d3088 100644
--- a/cql_test.py
+++ b/cql_test.py
@@ -12,7 +12,7 @@ from cassandra.metadata import NetworkTopologyStrategy, SimpleStrategy
 from cassandra.policies import FallthroughRetryPolicy
 from cassandra.query import SimpleStatement
 
-from dtest import Tester, create_ks
+from dtest import Tester, create_ks, mk_bman_path
 from distutils.version import LooseVersion
 from thrift_bindings.thrift010.ttypes import \
     ConsistencyLevel as ThriftConsistencyLevel
@@ -775,7 +775,7 @@ class TestMiscellaneousCQL(CQLTester):
         cluster = self.cluster
         cluster.populate(3, install_byteman=True).start()
         node1, _, node3 = cluster.nodelist()
-        node3.byteman_submit(['./byteman/truncate_fail.btm'])
+        node3.byteman_submit([mk_bman_path('truncate_fail.btm')])
 
         session = self.patient_exclusive_cql_connection(node1)
         create_ks(session, 'ks', 3)
diff --git a/dtest.py b/dtest.py
index f2c89b2..01cf4f1 100644
--- a/dtest.py
+++ b/dtest.py
@@ -35,6 +35,8 @@ LAST_LOG = os.path.join(LOG_SAVED_DIR, "last")
 
 LAST_TEST_DIR = 'last_test_dir'
 
+BYTEMAN_DIR = os.path.join(os.path.dirname(__file__), 'byteman')
+
 DEFAULT_DIR = './'
 config = configparser.RawConfigParser()
 if len(config.read(os.path.expanduser('~/.cassandra-dtest'))) > 0:
@@ -66,6 +68,9 @@ def get_sha(repo_dir):
             # git call failed for some unknown reason
             raise
 
+def mk_bman_path(path):
+    return os.path.join(BYTEMAN_DIR, path)
+
 
 # copy the initial environment variables so we can reset them later:
 initial_environment = copy.deepcopy(os.environ)
diff --git a/materialized_views_test.py b/materialized_views_test.py
index fe2fb91..9a23f1e 100644
--- a/materialized_views_test.py
+++ b/materialized_views_test.py
@@ -20,7 +20,7 @@ from cassandra.cluster import Cluster
 from cassandra.query import SimpleStatement
 
 from distutils.version import LooseVersion
-from dtest import Tester, get_ip_from_node, create_ks
+from dtest import Tester, get_ip_from_node, create_ks, mk_bman_path
 from tools.assertions import (assert_all, assert_crc_check_chance_equal,
                               assert_invalid, assert_none, assert_one,
                               assert_unavailable)
@@ -978,7 +978,7 @@ class TestMaterializedViews(Tester):
         # Rename a column with an injected byteman rule to kill the node after the first schema update
         self.fixture_dtest_setup.allow_log_errors = True
         script_version = '4x' if self.cluster.version() >= '4' else '3x'
-        node.byteman_submit(['./byteman/merge_schema_failure_{}.btm'.format(script_version)])
+        node.byteman_submit([mk_bman_path('merge_schema_failure_{}.btm'.format(script_version))])
         with pytest.raises(NoHostAvailable):
             session.execute("ALTER TABLE users RENAME username TO user")
 
@@ -1088,11 +1088,11 @@ class TestMaterializedViews(Tester):
         logger.debug("Avoid premature MV build finalization with byteman")
         for node in self.cluster.nodelist():
             if self.cluster.version() >= '4':
-                node.byteman_submit(['./byteman/4.0/skip_view_build_finalization.btm'])
-                node.byteman_submit(['./byteman/4.0/skip_view_build_task_finalization.btm'])
+                node.byteman_submit([mk_bman_path('4.0/skip_view_build_finalization.btm')])
+                node.byteman_submit([mk_bman_path('4.0/skip_view_build_task_finalization.btm')])
             else:
-                node.byteman_submit(['./byteman/pre4.0/skip_finish_view_build_status.btm'])
-                node.byteman_submit(['./byteman/pre4.0/skip_view_build_update_distributed.btm'])
+                node.byteman_submit([mk_bman_path('pre4.0/skip_finish_view_build_status.btm')])
+                node.byteman_submit([mk_bman_path('pre4.0/skip_view_build_update_distributed.btm')])
 
         session.execute("CREATE TABLE t (id int PRIMARY KEY, v int, v2 text, v3 decimal)")
 
@@ -1157,7 +1157,7 @@ class TestMaterializedViews(Tester):
 
         logger.debug("Slowing down MV build with byteman")
         for node in self.cluster.nodelist():
-            node.byteman_submit(['./byteman/4.0/view_builder_task_sleep.btm'])
+            node.byteman_submit([mk_bman_path('4.0/view_builder_task_sleep.btm')])
 
         logger.debug("Create a MV")
         session.execute(("CREATE MATERIALIZED VIEW t_by_v AS SELECT * FROM t "
@@ -1206,7 +1206,7 @@ class TestMaterializedViews(Tester):
 
         logger.debug("Slowing down MV build with byteman")
         for node in nodes:
-            node.byteman_submit(['./byteman/4.0/view_builder_task_sleep.btm'])
+            node.byteman_submit([mk_bman_path('4.0/view_builder_task_sleep.btm')])
 
         logger.debug("Create a MV")
         session.execute(("CREATE MATERIALIZED VIEW t_by_v AS SELECT * FROM t "
@@ -1265,7 +1265,7 @@ class TestMaterializedViews(Tester):
 
         logger.debug("Slowing down MV build with byteman")
         for node in nodes:
-            node.byteman_submit(['./byteman/4.0/view_builder_task_sleep.btm'])
+            node.byteman_submit([mk_bman_path('4.0/view_builder_task_sleep.btm')])
 
         logger.debug("Create a MV")
         session.execute(("CREATE MATERIALIZED VIEW t_by_v AS SELECT * FROM t "
@@ -2507,7 +2507,7 @@ class TestMaterializedViews(Tester):
         session.cluster.control_connection.wait_for_schema_agreement()
 
         logger.debug('Make node1 fail {} view writes'.format(fail_phase))
-        node1.byteman_submit(['./byteman/fail_{}_view_write.btm'.format(fail_phase)])
+        node1.byteman_submit([mk_bman_path('fail_{}_view_write.btm'.format(fail_phase))])
 
         logger.debug('Write 1000 rows - all node1 writes should fail')
 
diff --git a/read_repair_test.py b/read_repair_test.py
index ee189d5..f58d9f5 100644
--- a/read_repair_test.py
+++ b/read_repair_test.py
@@ -12,7 +12,7 @@ from cassandra.query import SimpleStatement
 from ccmlib.node import Node
 from pytest import raises
 
-from dtest import Tester, create_ks
+from dtest import Tester, create_ks, mk_bman_path
 from tools.assertions import assert_one
 from tools.data import rows_to_list
 from tools.jmxutils import JolokiaAgent, make_mbean
@@ -504,7 +504,7 @@ class TestSpeculativeReadRepair(Tester):
                                                   'write_request_timeout_in_ms': 1000,
                                                   'read_request_timeout_in_ms': 1000})
         cluster.populate(3, install_byteman=True, debug=True)
-        byteman_validate(cluster.nodelist()[0], './byteman/read_repair/sorted_live_endpoints.btm', verbose=True)
+        byteman_validate(cluster.nodelist()[0], mk_bman_path('read_repair/sorted_live_endpoints.btm'), verbose=True)
         cluster.start(jvm_args=['-XX:-PerfDisableSharedMem'])
         session = fixture_dtest_setup.patient_exclusive_cql_connection(cluster.nodelist()[0], timeout=2)
 
@@ -527,15 +527,15 @@ class TestSpeculativeReadRepair(Tester):
         session = self.get_cql_connection(node1, timeout=2)
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node2.byteman_submit(['./byteman/read_repair/stop_rr_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_rr_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_rr_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_rr_writes.btm')])
 
         with raises(WriteTimeout):
             session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)"))
 
-        node2.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
         session = self.get_cql_connection(node2)
         with StorageProxy(node2) as storage_proxy:
             assert storage_proxy.blocking_read_repair == 0
@@ -560,15 +560,15 @@ class TestSpeculativeReadRepair(Tester):
 
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
 
         session.execute("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)")
 
         # re-enable writes
-        node2.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
 
-        node2.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
         coordinator = node2
         # Stop reads on coordinator in order to make sure we do not go through
         # the messaging service for the local reads
@@ -597,20 +597,20 @@ class TestSpeculativeReadRepair(Tester):
 
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
 
         session.execute("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)")
 
         # re-enable writes
-        node2.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
 
-        node1.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node1.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
         version = self.cluster.cassandra_version()
         if version < '4.1':
-            node1.byteman_submit(['./byteman/request_verb_timing.btm'])
+            node1.byteman_submit([mk_bman_path('request_verb_timing.btm')])
         else:
-            node1.byteman_submit(['./byteman/post4.0/request_verb_timing.btm'])
+            node1.byteman_submit([mk_bman_path('post4.0/request_verb_timing.btm')])
 
         with StorageProxy(node1) as storage_proxy:
             assert storage_proxy.blocking_read_repair == 0
@@ -618,7 +618,7 @@ class TestSpeculativeReadRepair(Tester):
             assert storage_proxy.speculated_rr_write == 0
 
             session = self.get_cql_connection(node1)
-            node2.byteman_submit(['./byteman/read_repair/stop_data_reads.btm'])
+            node2.byteman_submit([mk_bman_path('read_repair/stop_data_reads.btm')])
             results = session.execute(quorum("SELECT * FROM ks.tbl WHERE k=1"))
 
             timing = request_verb_timing(node1)
@@ -646,15 +646,15 @@ class TestSpeculativeReadRepair(Tester):
 
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
 
         session.execute("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)")
 
         # re-enable writes on node 3, leave them off on node2
-        node2.byteman_submit(['./byteman/read_repair/stop_rr_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_rr_writes.btm')])
 
-        node1.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node1.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
         with StorageProxy(node1) as storage_proxy:
             assert storage_proxy.blocking_read_repair == 0
             assert storage_proxy.speculated_rr_read == 0
@@ -682,21 +682,21 @@ class TestSpeculativeReadRepair(Tester):
 
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
 
         session.execute("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)")
 
         # re-enable writes
-        node2.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
 
         # force endpoint order
-        node1.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node1.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
 
-        # node2.byteman_submit(['./byteman/read_repair/stop_digest_reads.btm'])
-        node2.byteman_submit(['./byteman/read_repair/stop_data_reads.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_rr_writes.btm'])
+        # node2.byteman_submit([mk_bman_path('read_repair/stop_digest_reads.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_data_reads.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_rr_writes.btm')])
 
         with StorageProxy(node1) as storage_proxy:
             assert storage_proxy.get_table_metric("ks", "tbl", "SpeculativeRetries") == 0
@@ -727,21 +727,21 @@ class TestSpeculativeReadRepair(Tester):
 
         session.execute(quorum("INSERT INTO ks.tbl (k, c, v) VALUES (1, 0, 1)"))
 
-        node2.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_writes.btm')])
 
         session.execute("INSERT INTO ks.tbl (k, c, v) VALUES (1, 1, 2)")
 
         # re-enable writes
-        node2.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
-        node3.byteman_submit(['-u', './byteman/read_repair/stop_writes.btm'])
+        node2.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
+        node3.byteman_submit(['-u', mk_bman_path('read_repair/stop_writes.btm')])
 
         # force endpoint order
-        node1.byteman_submit(['./byteman/read_repair/sorted_live_endpoints.btm'])
+        node1.byteman_submit([mk_bman_path('read_repair/sorted_live_endpoints.btm')])
 
-        node2.byteman_submit(['./byteman/read_repair/stop_digest_reads.btm'])
-        node3.byteman_submit(['./byteman/read_repair/stop_data_reads.btm'])
-        node2.byteman_submit(['./byteman/read_repair/stop_rr_writes.btm'])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_digest_reads.btm')])
+        node3.byteman_submit([mk_bman_path('read_repair/stop_data_reads.btm')])
+        node2.byteman_submit([mk_bman_path('read_repair/stop_rr_writes.btm')])
 
         with StorageProxy(node1) as storage_proxy:
             assert storage_proxy.get_table_metric("ks", "tbl", "SpeculativeRetries") == 0
@@ -762,7 +762,7 @@ class TestSpeculativeReadRepair(Tester):
 
 @contextmanager
 def _byteman_cycle(nodes, scripts):
-    script_path = lambda name: './byteman/read_repair/' + name + '.btm'
+    script_path = lambda name: mk_bman_path('read_repair/') + name + '.btm'
 
     for script in scripts:
         byteman_validate(nodes[0], script_path(script))
diff --git a/rebuild_test.py b/rebuild_test.py
index 3fe8200..6851467 100644
--- a/rebuild_test.py
+++ b/rebuild_test.py
@@ -9,7 +9,7 @@ from threading import Thread
 from cassandra import ConsistencyLevel
 from ccmlib.node import ToolError
 
-from dtest import Tester, create_ks, create_cf
+from dtest import Tester, create_ks, create_cf, mk_bman_path
 from tools.data import insert_c1c2, query_c1c2
 
 since = pytest.mark.since
@@ -211,9 +211,9 @@ class TestRebuild(Tester):
 
         # Path to byteman script which makes the streaming to node2 throw an exception, making rebuild fail
         if cluster.version() < '4.0':
-            script = ['./byteman/pre4.0/inject_failure_streaming_to_node2.btm']
+            script = [mk_bman_path('pre4.0/inject_failure_streaming_to_node2.btm')]
         else:
-            script = ['./byteman/4.0/inject_failure_streaming_to_node2.btm']
+            script = [mk_bman_path('4.0/inject_failure_streaming_to_node2.btm')]
         node3.byteman_submit(script)
 
         # First rebuild must fail and data must be incomplete
diff --git a/repair_tests/repair_test.py b/repair_tests/repair_test.py
index bad9550..c1bd71e 100644
--- a/repair_tests/repair_test.py
+++ b/repair_tests/repair_test.py
@@ -13,7 +13,7 @@ from cassandra import ConsistencyLevel
 from cassandra.query import SimpleStatement
 from ccmlib.node import ToolError
 
-from dtest import FlakyRetryPolicy, Tester, create_ks, create_cf
+from dtest import FlakyRetryPolicy, Tester, create_ks, create_cf, mk_bman_path
 from tools.data import insert_c1c2, query_c1c2
 from tools.jmxutils import JolokiaAgent, make_mbean
 from repair_tests.incremental_repair_test import assert_parent_repair_session_count
@@ -1287,7 +1287,7 @@ class TestRepair(BaseRepairTest):
 
         logger.debug("Submitting byteman script to {}".format(node_to_kill.name))
         # Sleep on anticompaction/stream so there will be time for node to be killed
-        node_to_kill.byteman_submit(['./byteman/{}'.format(script)])
+        node_to_kill.byteman_submit([mk_bman_path(script)])
 
         def node1_repair():
             global nodetool_error
diff --git a/replace_address_test.py b/replace_address_test.py
index c0e50f3..09b0e18 100644
--- a/replace_address_test.py
+++ b/replace_address_test.py
@@ -13,7 +13,7 @@ from cassandra import ConsistencyLevel, ReadTimeout, Unavailable
 from cassandra.query import SimpleStatement
 from ccmlib.node import Node
 
-from dtest import Tester
+from dtest import Tester, mk_bman_path
 from tools.assertions import assert_bootstrap_state, assert_all, assert_not_running
 from tools.data import rows_to_list
 
@@ -493,13 +493,13 @@ class TestReplaceAddress(BaseReplaceAddressTest):
         btmmark = self.query_node.mark_log()
 
         if self.cluster.version() < '4.0':
-            self.query_node.byteman_submit(['./byteman/pre4.0/stream_failure.btm'])
+            self.query_node.byteman_submit([mk_bman_path('pre4.0/stream_failure.btm')])
             self._do_replace(jvm_option='replace_address_first_boot',
                              opts={'streaming_socket_timeout_in_ms': 1000},
                              wait_for_binary_proto=False,
                              wait_other_notice=True)
         else:
-            self.query_node.byteman_submit(['./byteman/4.0/stream_failure.btm'])
+            self.query_node.byteman_submit([mk_bman_path('4.0/stream_failure.btm')])
             self._do_replace(jvm_option='replace_address_first_boot', wait_for_binary_proto=False, wait_other_notice=True)
 
         # Make sure bootstrap did not complete successfully
diff --git a/replica_side_filtering_test.py b/replica_side_filtering_test.py
index b33e401..4739ae3 100644
--- a/replica_side_filtering_test.py
+++ b/replica_side_filtering_test.py
@@ -4,7 +4,7 @@ import pytest
 from cassandra import ConsistencyLevel as CL
 from cassandra.query import SimpleStatement
 
-from dtest import Tester, create_ks
+from dtest import Tester, create_ks, mk_bman_path
 from tools.assertions import (assert_all, assert_none, assert_one)
 
 since = pytest.mark.since
@@ -542,7 +542,7 @@ class TestAllowFiltering(ReplicaSideFiltering):
 
         # update the previous value with CL=ONE only in one replica
         node = cluster.nodelist()[1 if missed_by_transient else 0]
-        node.byteman_submit(['./byteman/stop_writes.btm'])
+        node.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.session.execute(SimpleStatement("UPDATE t SET v = 'new' WHERE k = 0", consistency_level=CL.ONE))
 
         # query with CL=ALL to verify that no old values are resurrected
diff --git a/secondary_indexes_test.py b/secondary_indexes_test.py
index 5d73b0e..8007757 100644
--- a/secondary_indexes_test.py
+++ b/secondary_indexes_test.py
@@ -14,7 +14,7 @@ from cassandra.concurrent import (execute_concurrent,
 from cassandra.protocol import ConfigurationException
 from cassandra.query import BatchStatement, SimpleStatement
 
-from dtest import Tester, create_ks, create_cf
+from dtest import Tester, create_ks, create_cf, mk_bman_path
 from tools.assertions import assert_bootstrap_state, assert_invalid, assert_none, assert_one, assert_row_count, \
     assert_length_equal, assert_all
 from tools.data import block_until_index_is_built, rows_to_list
@@ -353,7 +353,7 @@ class TestSecondaryIndexes(Tester):
         # Simulate a failing index rebuild
         before_files = self._index_sstables_files(node, 'k', 't', 'idx')
         mark = node.mark_log()
-        node.byteman_submit(['./byteman/index_build_failure.btm'])
+        node.byteman_submit([mk_bman_path('index_build_failure.btm')])
         with pytest.raises(Exception):
             node.nodetool("rebuild_index k t idx")
         after_files = self._index_sstables_files(node, 'k', 't', 'idx')
@@ -387,7 +387,7 @@ class TestSecondaryIndexes(Tester):
         # Simulate another failing index rebuild
         before_files = after_files
         mark = node.mark_log()
-        node.byteman_submit(['./byteman/index_build_failure.btm'])
+        node.byteman_submit([mk_bman_path('index_build_failure.btm')])
         with pytest.raises(Exception):
             node.nodetool("rebuild_index k t idx")
         after_files = self._index_sstables_files(node, 'k', 't', 'idx')
@@ -1212,9 +1212,9 @@ class TestPreJoinCallback(Tester):
             node1.start(wait_for_binary_proto=True)
 
             if cluster.version() < '4.0':
-                node1.byteman_submit(['./byteman/pre4.0/inject_failure_streaming_to_node2.btm'])
+                node1.byteman_submit([mk_bman_path('pre4.0/inject_failure_streaming_to_node2.btm')])
             else:
-                node1.byteman_submit(['./byteman/4.0/inject_failure_streaming_to_node2.btm'])
+                node1.byteman_submit([mk_bman_path('4.0/inject_failure_streaming_to_node2.btm')])
 
             node2 = new_node(cluster)
 
diff --git a/sstable_generation_loading_test.py b/sstable_generation_loading_test.py
index 502aaf9..3bd4ca9 100644
--- a/sstable_generation_loading_test.py
+++ b/sstable_generation_loading_test.py
@@ -10,7 +10,7 @@ import logging
 from ccmlib import common as ccmcommon
 from ccmlib.node import ToolError
 
-from dtest import Tester, create_ks, create_cf, MAJOR_VERSION_4
+from dtest import Tester, create_ks, create_cf, mk_bman_path, MAJOR_VERSION_4
 from tools.assertions import assert_all, assert_none, assert_one
 
 since = pytest.mark.since
@@ -394,7 +394,7 @@ class TestSSTableGenerationAndLoading(BaseSStableLoaderTester):
         assert_one(session, "SELECT * FROM k.t WHERE v = 8", [0, 2, 8])
 
         # Load SSTables with a failure during index creation
-        node.byteman_submit(['./byteman/index_build_failure.btm'])
+        node.byteman_submit([mk_bman_path('index_build_failure.btm')])
         with pytest.raises(Exception):
             self.load_sstables(cluster, node, 'k')
 
diff --git a/topology_test.py b/topology_test.py
index 10b73c9..ca9441b 100644
--- a/topology_test.py
+++ b/topology_test.py
@@ -8,7 +8,7 @@ from threading import Thread
 from cassandra import ConsistencyLevel
 from ccmlib.node import TimeoutError, ToolError
 
-from dtest import Tester, create_ks, create_cf
+from dtest import Tester, create_ks, create_cf, mk_bman_path
 from tools.assertions import assert_almost_equal, assert_all, assert_none
 from tools.data import insert_c1c2, query_c1c2
 
@@ -234,9 +234,9 @@ class TestTopology(Tester):
         # Execute first rebuild, should fail
         with pytest.raises(ToolError):
             if cluster.version() >= '4.0':
-                script = ['./byteman/4.0/decommission_failure_inject.btm']
+                script = [mk_bman_path('4.0/decommission_failure_inject.btm')]
             else:
-                script = ['./byteman/pre4.0/decommission_failure_inject.btm']
+                script = [mk_bman_path('pre4.0/decommission_failure_inject.btm')]
             node2.byteman_submit(script)
             node2.nodetool('decommission')
 
diff --git a/transient_replication_test.py b/transient_replication_test.py
index 87b798d..7c6c71a 100644
--- a/transient_replication_test.py
+++ b/transient_replication_test.py
@@ -9,7 +9,7 @@ from cassandra.query import SimpleStatement
 from cassandra.protocol import ConfigurationException
 from ccmlib.node import Node
 
-from dtest import Tester
+from dtest import Tester, mk_bman_path
 from tools.jmxutils import JolokiaAgent, make_mbean
 from tools.data import rows_to_list
 from tools.assertions import (assert_all)
@@ -177,7 +177,7 @@ class TransientReplicationBase(Tester):
         self.node1, self.node2, self.node3 = self.nodes
 
         # Make sure digest is not attempted against the transient node
-        self.node3.byteman_submit(['./byteman/throw_on_digest.btm'])
+        self.node3.byteman_submit([mk_bman_path('throw_on_digest.btm')])
 
     def stream_entire_sstables(self):
         return True
@@ -317,7 +317,7 @@ class TestTransientReplication(TransientReplicationBase):
         with tm(self.node1) as tm1, tm(self.node2) as tm2, tm(self.node3) as tm3:
             self.insert_row(1, 1, 1)
             # Stop writes to the other full node
-            self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+            self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
             self.insert_row(1, 2, 2)
 
         # node1 should contain both rows
@@ -342,7 +342,7 @@ class TestTransientReplication(TransientReplicationBase):
         tm = lambda n: self.table_metrics(n)
         self.insert_row(1, 1, 1)
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.insert_row(1, 2, 2)
 
         # Stop reads from the node that will hold the second row
@@ -367,7 +367,7 @@ class TestTransientReplication(TransientReplicationBase):
         self.insert_row(1, 2, 2)
 
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.delete_row(1, 1, node = self.node1)
 
         # Stop reads from the node that will hold the second row
@@ -397,7 +397,7 @@ class TestTransientReplication(TransientReplicationBase):
         self.insert_row(1, 1, 1)
         self.insert_row(1, 2, 2)
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.delete_row(1, 2)
 
         self.assert_local_rows(self.node3,
@@ -432,7 +432,7 @@ class TestTransientReplication(TransientReplicationBase):
     def test_speculative_write(self):
         """ if a full replica isn't responding, we should send the write to the transient replica """
         session = self.exclusive_cql_connection(self.node1)
-        self.node2.byteman_submit(['./byteman/slow_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('slow_writes.btm')])
 
         self.insert_row(1, 1, 1, session=session)
         self.assert_local_rows(self.node1, [[1,1,1]])
@@ -467,7 +467,7 @@ class TestTransientReplicationRepairStreamEntireSSTable(TransientReplicationBase
         if use_lcs:
             self.use_lcs()
 
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         # self.insert_row(1)
         tm = lambda n: self.table_metrics(n)
         with tm(self.node1) as tm1, tm(self.node2) as tm2, tm(self.node3) as tm3:
@@ -601,7 +601,7 @@ class TestTransientReplicationSpeculativeQueries(TransientReplicationBase):
         session.execute("ALTER TABLE %s.%s WITH speculative_retry = 'ALWAYS';" % (self.keyspace, self.table))
         self.insert_row(1, 1, 1)
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.insert_row(1, 2, 2)
 
         for node in self.nodes:
@@ -618,7 +618,7 @@ class TestTransientReplicationSpeculativeQueries(TransientReplicationBase):
         session.execute("ALTER TABLE %s.%s WITH speculative_retry = '99.99PERCENTILE';" % (self.keyspace, self.table))
         self.insert_row(1, 1, 1)
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.insert_row(1, 2, 2)
 
         for node in self.nodes:
@@ -652,7 +652,7 @@ class TestMultipleTransientNodes(TransientReplicationBase):
         tm = lambda n: self.table_metrics(n)
         self.insert_row(1, 1, 1)
         # Stop writes to the other full node
-        self.node2.byteman_submit(['./byteman/stop_writes.btm'])
+        self.node2.byteman_submit([mk_bman_path('stop_writes.btm')])
         self.insert_row(1, 2, 2)
 
         self.assert_local_rows(self.node1,

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org