Skip to content

Commit 946eee4

Browse files
fix(gemini): make gemini work without oracle passed
Signed-off-by: Dusan Malusev <[email protected]>
1 parent 7d11676 commit 946eee4

File tree

2 files changed

+60
-8
lines changed

2 files changed

+60
-8
lines changed

Diff for: sdcm/gemini_thread.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import json
1919
import time
2020

21+
from sdcm.cluster import BaseCluster, BaseScyllaCluster
22+
from sdcm.cluster_aws import CassandraAWSCluster, ScyllaAWSCluster
2123
from sdcm.sct_events import Severity
2224
from sdcm.utils.common import FileFollowerThread
2325
from sdcm.sct_events.loaders import GeminiStressEvent, GeminiStressLogEvent
@@ -60,7 +62,7 @@ def run(self):
6062
class GeminiStressThread(DockerBasedStressThread): # pylint: disable=too-many-instance-attributes
6163
DOCKER_IMAGE_PARAM_NAME = "stress_image.gemini"
6264

63-
def __init__(self, test_cluster, oracle_cluster, loaders, stress_cmd, timeout=None, params=None): # pylint: disable=too-many-arguments
65+
def __init__(self, test_cluster: BaseCluster | BaseScyllaCluster, oracle_cluster: ScyllaAWSCluster | CassandraAWSCluster | None, loaders, stress_cmd: str, timeout=None, params=None): # pylint: disable=too-many-arguments
6466
super().__init__(loader_set=loaders, stress_cmd=stress_cmd, timeout=timeout, params=params)
6567
self.test_cluster = test_cluster
6668
self.oracle_cluster = oracle_cluster
@@ -106,13 +108,10 @@ def _generate_gemini_command(self):
106108
seed = self.params.get("gemini_seed") or random.randint(1, 100)
107109
table_options = self.params.get("gemini_table_options")
108110
log_statements = self.params.get("gemini_log_cql_statements") or False
109-
110111
test_nodes = ",".join(self.test_cluster.get_node_cql_ips())
111-
oracle_nodes = ",".join(self.oracle_cluster.get_node_cql_ips())
112112

113113
cmd = f"gemini \
114114
--non-interactive \
115-
--oracle-cluster=\"{oracle_nodes}\" \
116115
--test-cluster=\"{test_nodes}\" \
117116
--seed={seed} \
118117
--schema-seed={seed} \
@@ -122,6 +121,10 @@ def _generate_gemini_command(self):
122121
--replication-strategy=\"{{'class': 'NetworkTopologyStrategy', 'replication_factor': '3'}}\" \
123122
--oracle-replication-strategy=\"{{'class': 'NetworkTopologyStrategy', 'replication_factor': '1'}}\" "
124123

124+
if self.oracle_cluster is not None:
125+
oracle_nodes = ",".join(self.oracle_cluster.get_node_cql_ips())
126+
cmd += f'--oracle-cluster="{oracle_nodes}" '
127+
125128
if log_statements:
126129
cmd += f"--test-statement-log-file=/{self.gemini_test_statements_file} \
127130
--oracle-statement-log-file=/{self.gemini_oracle_statements_file} "

Diff for: unit_tests/test_gemini_thread.py

+53-4
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,22 @@ def get_node_cql_ips(self):
3333
def test_01_gemini_thread(request, docker_scylla, params):
3434
loader_set = LocalLoaderSetDummy(params=params)
3535
test_cluster = DBCluster([docker_scylla])
36-
cmd = (
37-
"gemini -d --duration 1m --warmup 0s -c 5 -m write --non-interactive --cql-features basic --max-mutation-retries 100 "
38-
"--max-mutation-retries-backoff 100ms --replication-strategy \"{'class': 'NetworkTopologyStrategy', 'replication_factor': '1'}\" "
39-
"--table-options \"cdc = {'enabled': true, 'ttl': 0}\" --use-server-timestamps"
36+
37+
cmd = " ".join(
38+
[
39+
"--duration=1m",
40+
"--warmup=0",
41+
"--concurrency=5",
42+
"--mode=write",
43+
"--cql-features=basic",
44+
"--max-mutation-retries=100",
45+
"--max-mutation-retries-backoff=100ms",
46+
"--replication-strategy=\"{'class': 'NetworkTopologyStrategy', 'replication_factor': '1'}\"",
47+
"--table-options=\"cdc = {'enabled': true, 'ttl': 0}\"",
48+
"--use-server-timestamps=true",
49+
]
4050
)
51+
4152
gemini_thread = GeminiStressThread(
4253
loaders=loader_set,
4354
stress_cmd=cmd,
@@ -56,3 +67,41 @@ def cleanup_thread():
5667

5768
results = gemini_thread.get_gemini_results()
5869
gemini_thread.verify_gemini_results(results)
70+
71+
72+
def test_gemini_thread_without_cluster(request, docker_scylla, params):
73+
loader_set = LocalLoaderSetDummy(params=params)
74+
test_cluster = DBCluster([docker_scylla])
75+
cmd = " ".join(
76+
[
77+
"--duration=1m",
78+
"--warmup=0",
79+
"--concurrency=5",
80+
"--mode=write",
81+
"--cql-features=basic",
82+
"--max-mutation-retries=100",
83+
"--max-mutation-retries-backoff=100ms",
84+
"--replication-strategy=\"{'class': 'NetworkTopologyStrategy', 'replication_factor': '1'}\"",
85+
"--table-options=\"cdc = {'enabled': true, 'ttl': 0}\"",
86+
"--use-server-timestamps=true",
87+
]
88+
)
89+
90+
gemini_thread = GeminiStressThread(
91+
loaders=loader_set,
92+
stress_cmd=cmd,
93+
test_cluster=test_cluster,
94+
oracle_cluster=None,
95+
timeout=120,
96+
params=params,
97+
)
98+
99+
def cleanup_thread():
100+
gemini_thread.kill()
101+
102+
request.addfinalizer(cleanup_thread)
103+
104+
gemini_thread.run()
105+
106+
results = gemini_thread.get_gemini_results()
107+
gemini_thread.verify_gemini_results(results)

0 commit comments

Comments
 (0)