|
6 | 6 | from collections import namedtuple
|
7 | 7 |
|
8 | 8 |
|
9 |
| -# scylla-tools-java is based on 3.* version of Apache Cassandra. |
10 |
| -# Notice that Apache c-s changed generation logic in version 4.0.0. |
11 |
| -# See: https://github.com/apache/cassandra/commit/f1f5f194620d3f9e11492f0051b6b71018033413 |
12 |
| -DEFAULT_CASSANDRA_VERSION = "3.11.19" |
| 9 | +DEFAULT_CASSANDRA_STRESS_VERSION = "v3.17.3" |
13 | 10 | ROOT_DIRECTORY = dirname(dirname(dirname(__file__)))
|
14 | 11 | DOWNLOAD_DIRECTORY_NAME = os.path.join(ROOT_DIRECTORY, "cassandra-download")
|
15 | 12 |
|
@@ -79,41 +76,63 @@ def run_user(self, node_ip, profile_name, runtime_args: CSCliRuntimeArguments):
|
79 | 76 |
|
80 | 77 |
|
81 | 78 | class CassandraStress(CSCliRunner):
|
82 |
| - def __init__(self, cassandra_version=DEFAULT_CASSANDRA_VERSION): |
83 |
| - cassandra_dir = f"apache-cassandra-{cassandra_version}" |
84 |
| - cassandra_tar = f"{cassandra_dir}-bin.tar.gz" |
| 79 | + def __init__(self, cassandra_stress_version=DEFAULT_CASSANDRA_STRESS_VERSION): |
| 80 | + cassandra_stress_dir = "cassandra-stress" |
| 81 | + cassandra_stress_tar = "cassandra-stress-bin.tar.gz" |
85 | 82 |
|
86 |
| - abs_cassandra_dir = os.path.join( |
87 |
| - DOWNLOAD_DIRECTORY_NAME, cassandra_dir) |
88 |
| - abs_cassandra_tar = os.path.join( |
89 |
| - DOWNLOAD_DIRECTORY_NAME, cassandra_tar) |
| 83 | + abs_cassandra_dir = os.path.join(DOWNLOAD_DIRECTORY_NAME, cassandra_stress_dir) |
| 84 | + abs_cassandra_tar = os.path.join(DOWNLOAD_DIRECTORY_NAME, cassandra_stress_tar) |
| 85 | + |
| 86 | + super().__init__( |
| 87 | + stress_cmd=[os.path.join(abs_cassandra_dir, "bin", "cassandra-stress")] |
| 88 | + ) |
90 | 89 |
|
91 | 90 | if os.path.exists(abs_cassandra_dir):
|
92 | 91 | # Cassandra already fetched.
|
93 | 92 | print(
|
94 |
| - f"Cassandra {cassandra_version} already installed. Skipping the download phase.") |
95 |
| - else: |
| 93 | + f"Cassandra {cassandra_stress_version} already installed. Skipping the download phase." |
| 94 | + ) |
| 95 | + return |
| 96 | + |
| 97 | + if not os.path.exists(abs_cassandra_tar): |
| 98 | + os.makedirs(DOWNLOAD_DIRECTORY_NAME, exist_ok=True) |
96 | 99 | # Fetch cassandra.
|
97 | 100 | print(
|
98 |
| - f"Fetching cassandra {cassandra_version} to {DOWNLOAD_DIRECTORY_NAME}") |
99 |
| - # https://dlcdn.apache.org/cassandra/3.11.18/apache-cassandra-3.11.18-bin.tar.gz |
100 |
| - cassandra_url = f"https://dlcdn.apache.org/cassandra/{cassandra_version}/{cassandra_tar}" |
101 |
| - subprocess.run(args=["wget", "-P", DOWNLOAD_DIRECTORY_NAME, |
102 |
| - "-N", "--no-verbose", cassandra_url], check=True) |
103 |
| - |
104 |
| - # Extract cassandra |
105 |
| - print(f"Extracting cassandra {cassandra_version}") |
106 |
| - subprocess.run(args=["tar", "-xzf", abs_cassandra_tar, |
107 |
| - "--directory", DOWNLOAD_DIRECTORY_NAME], check=True) |
108 |
| - print(f"Extracted cassandra to {abs_cassandra_dir}") |
109 |
| - |
110 |
| - stress_cmd = [os.path.join( |
111 |
| - abs_cassandra_dir, "tools", "bin", "cassandra-stress")] |
112 |
| - super().__init__(stress_cmd=stress_cmd) |
| 101 | + f"Fetching cassandra {cassandra_stress_version} to {DOWNLOAD_DIRECTORY_NAME}" |
| 102 | + ) |
| 103 | + cassandra_stress_url = f"https://github.com/scylladb/cassandra-stress/releases/download/{cassandra_stress_version}/cassandra-stress-bin.tar.gz" |
| 104 | + subprocess.run( |
| 105 | + args=[ |
| 106 | + "wget", |
| 107 | + "-c", |
| 108 | + "-P", |
| 109 | + DOWNLOAD_DIRECTORY_NAME, |
| 110 | + "-N", |
| 111 | + "--no-verbose", |
| 112 | + cassandra_stress_url, |
| 113 | + ], |
| 114 | + check=True, |
| 115 | + ) |
| 116 | + |
| 117 | + # Extract cassandra |
| 118 | + print(f"Extracting cassandra {cassandra_stress_version}") |
| 119 | + subprocess.run( |
| 120 | + args=[ |
| 121 | + "tar", |
| 122 | + "-xzf", |
| 123 | + abs_cassandra_tar, |
| 124 | + "--directory", |
| 125 | + DOWNLOAD_DIRECTORY_NAME, |
| 126 | + ], |
| 127 | + check=True, |
| 128 | + ) |
| 129 | + print(f"Extracted cassandra to {abs_cassandra_dir}") |
113 | 130 |
|
114 | 131 |
|
115 | 132 | class CqlStressCassandraStress(CSCliRunner):
|
116 | 133 | def __init__(self):
|
117 |
| - stress_cmd = ["cargo", "run", "--features", "user-profile", "--bin", |
118 |
| - "cql-stress-cassandra-stress", "--"] |
119 |
| - super().__init__(stress_cmd=stress_cmd) |
| 134 | + super().__init__(stress_cmd=["cql-stress-cassandra-stress"]) |
| 135 | + |
| 136 | + |
| 137 | +if __name__ == "__main__": |
| 138 | + cassandra_stress = CassandraStress() |
0 commit comments