Skip to content

Commit 1b335d4

Browse files
PYTHON-1402 Support running test suite with HCD 1.0.0 (#1234)
* Run integration tests with HCD 1.0.0 * Apply review comments
1 parent d15412f commit 1b335d4

File tree

5 files changed

+81
-23
lines changed

5 files changed

+81
-23
lines changed

Jenkinsfile

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Matrix Types:
1515
Full: All server versions, python runtimes tested with and without Cython.
1616
Cassandra: All cassandra server versions.
1717
Dse: All dse server versions.
18+
Hcd: All hcd server versions.
1819
Smoke: CI-friendly configurations. Currently-supported Python version + modern Cassandra/DSE instances.
1920
We also avoid cython since it's tested as part of the nightlies
2021
@@ -31,7 +32,8 @@ import com.datastax.jenkins.drivers.python.Slack
3132
slack = new Slack()
3233

3334
DEFAULT_CASSANDRA = ['3.0', '3.11', '4.0', '4.1', '5.0-beta1']
34-
DEFAULT_DSE = ['dse-5.1.35', 'dse-6.8.30']
35+
DEFAULT_DSE = ['dse-5.1.35', 'dse-6.8.30', 'dse-6.9.0']
36+
DEFAULT_HCD = ['hcd-1.0.0']
3537
DEFAULT_RUNTIME = ['3.8.16', '3.9.16', '3.10.11', '3.11.3', '3.12.0']
3638
DEFAULT_CYTHON = ["True", "False"]
3739
matrices = [
@@ -51,7 +53,7 @@ matrices = [
5153
"CYTHON": DEFAULT_CYTHON
5254
],
5355
"SMOKE": [
54-
"SERVER": DEFAULT_CASSANDRA.takeRight(2) + DEFAULT_DSE.takeRight(1),
56+
"SERVER": DEFAULT_CASSANDRA.takeRight(2) + DEFAULT_DSE.takeRight(2) + DEFAULT_HCD.takeRight(1),
5557
"RUNTIME": DEFAULT_RUNTIME.take(1) + DEFAULT_RUNTIME.takeRight(1),
5658
"CYTHON": ["True"]
5759
]
@@ -224,6 +226,19 @@ DSE_VERSION=${DSE_FIXED_VERSION}
224226
CCM_IS_DSE=true
225227
CCM_BRANCH=${DSE_FIXED_VERSION}
226228
DSE_BRANCH=${DSE_FIXED_VERSION}
229+
ENVIRONMENT_EOF
230+
'''
231+
} else if (env.CASSANDRA_VERSION.split('-')[0] == 'hcd') {
232+
env.HCD_FIXED_VERSION = env.CASSANDRA_VERSION.split('-')[1]
233+
sh label: 'Update environment for DataStax Enterprise', script: '''#!/bin/bash -le
234+
cat >> ${HOME}/environment.txt << ENVIRONMENT_EOF
235+
CCM_CASSANDRA_VERSION=${HCD_FIXED_VERSION} # maintain for backwards compatibility
236+
CCM_VERSION=${HCD_FIXED_VERSION}
237+
CCM_SERVER_TYPE=hcd
238+
HCD_VERSION=${HCD_FIXED_VERSION}
239+
CCM_IS_HCD=true
240+
CCM_BRANCH=${HCD_FIXED_VERSION}
241+
HCD_BRANCH=${HCD_FIXED_VERSION}
227242
ENVIRONMENT_EOF
228243
'''
229244
}
@@ -276,13 +291,13 @@ def executeStandardTests() {
276291
jabba use 1.8
277292
278293
SIMULACRON_JAR="${HOME}/simulacron.jar"
279-
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_results.xml tests/integration/simulacron/ || true
294+
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_results.xml tests/integration/simulacron/ || true
280295
281296
# Run backpressure tests separately to avoid memory issue
282-
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_1_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_paused_connections || true
283-
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_2_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_queued_requests_timeout || true
284-
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_3_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_cluster_busy || true
285-
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_4_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_node_busy || true
297+
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_1_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_paused_connections || true
298+
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_2_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_queued_requests_timeout || true
299+
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_3_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_cluster_busy || true
300+
SIMULACRON_JAR=${SIMULACRON_JAR} EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=test_backpressure.py --junit-xml=simulacron_backpressure_4_results.xml tests/integration/simulacron/test_backpressure.py:TCPBackpressureTests.test_node_busy || true
286301
'''
287302

288303
sh label: 'Execute CQL engine integration tests', script: '''#!/bin/bash -lex
@@ -294,7 +309,7 @@ def executeStandardTests() {
294309
. ${JABBA_SHELL}
295310
jabba use 1.8
296311
297-
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=cqle_results.xml tests/integration/cqlengine/ || true
312+
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=cqle_results.xml tests/integration/cqlengine/ || true
298313
'''
299314

300315
sh label: 'Execute Apache CassandraⓇ integration tests', script: '''#!/bin/bash -lex
@@ -306,7 +321,7 @@ def executeStandardTests() {
306321
. ${JABBA_SHELL}
307322
jabba use 1.8
308323
309-
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=standard_results.xml tests/integration/standard/ || true
324+
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=standard_results.xml tests/integration/standard/ || true
310325
'''
311326

312327
if (env.CASSANDRA_VERSION.split('-')[0] == 'dse' && env.CASSANDRA_VERSION.split('-')[1] != '4.8') {
@@ -323,7 +338,7 @@ def executeStandardTests() {
323338
. ${JABBA_SHELL}
324339
jabba use 1.8
325340
326-
EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} DSE_VERSION=${DSE_VERSION} ADS_HOME="${HOME}/" VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=dse_results.xml tests/integration/advanced/ || true
341+
EVENT_LOOP=${EVENT_LOOP} CASSANDRA_DIR=${CCM_INSTALL_DIR} DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} ADS_HOME="${HOME}/" VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=dse_results.xml tests/integration/advanced/ || true
327342
'''
328343
}
329344
}
@@ -350,7 +365,7 @@ def executeStandardTests() {
350365
. ${JABBA_SHELL}
351366
jabba use 1.8
352367
353-
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=tests/integration/long/upgrade --junit-xml=long_results.xml tests/integration/long/ || true
368+
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --ignore=tests/integration/long/upgrade --junit-xml=long_results.xml tests/integration/long/ || true
354369
'''
355370
}
356371
}
@@ -389,7 +404,7 @@ def executeEventLoopTests() {
389404
"tests/integration/simulacron/test_endpoint.py"
390405
"tests/integration/long/test_ssl.py"
391406
)
392-
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=standard_results.xml ${EVENT_LOOP_TESTS[@]} || true
407+
EVENT_LOOP=${EVENT_LOOP} CCM_ARGS="${CCM_ARGS}" DSE_VERSION=${DSE_VERSION} HCD_VERSION=${HCD_VERSION} CASSANDRA_VERSION=${CCM_CASSANDRA_VERSION} MAPPED_CASSANDRA_VERSION=${MAPPED_CASSANDRA_VERSION} VERIFY_CYTHON=${CYTHON_ENABLED} JVM_EXTRA_OPTS="$JVM_EXTRA_OPTS -Xss384k" pytest -s -v --log-format="[%(levelname)s] %(asctime)s %(thread)d: %(message)s" --junit-xml=standard_results.xml ${EVENT_LOOP_TESTS[@]} || true
393408
'''
394409
}
395410

@@ -496,7 +511,7 @@ pipeline {
496511
</table>''')
497512
choice(
498513
name: 'MATRIX',
499-
choices: ['DEFAULT', 'SMOKE', 'FULL', 'CASSANDRA', 'DSE'],
514+
choices: ['DEFAULT', 'SMOKE', 'FULL', 'CASSANDRA', 'DSE', 'HCD'],
500515
description: '''<p>The matrix for the build.</p>
501516
<table style="width:100%">
502517
<col width="25%">
@@ -525,14 +540,18 @@ pipeline {
525540
<td><strong>DSE</strong></td>
526541
<td>All dse server versions.</td>
527542
</tr>
543+
<tr>
544+
<td><strong>HCD</strong></td>
545+
<td>All hcd server versions.</td>
546+
</tr>
528547
</table>''')
529548
choice(
530549
name: 'PYTHON_VERSION',
531550
choices: ['DEFAULT'] + DEFAULT_RUNTIME,
532551
description: 'Python runtime version. Default to the build context.')
533552
choice(
534553
name: 'SERVER_VERSION',
535-
choices: ['DEFAULT'] + DEFAULT_CASSANDRA + DEFAULT_DSE,
554+
choices: ['DEFAULT'] + DEFAULT_CASSANDRA + DEFAULT_DSE + DEFAULT_HCD,
536555
description: '''Apache CassandraⓇ and DataStax Enterprise server version to use for adhoc <b>BUILD-AND-EXECUTE-TESTS</b> <strong>ONLY!</strong>
537556
<table style="width:100%">
538557
<col width="15%">
@@ -567,7 +586,15 @@ pipeline {
567586
</tr>
568587
<tr>
569588
<td><strong>dse-6.8.30</strong></td>
570-
<td>DataStax Enterprise v6.8.x (<b>CURRENTLY UNDER DEVELOPMENT</b>)</td>
589+
<td>DataStax Enterprise v6.8.x</td>
590+
</tr>
591+
<tr>
592+
<td><strong>dse-6.9.0</strong></td>
593+
<td>DataStax Enterprise v6.9.x (<b>CURRENTLY UNDER DEVELOPMENT</b>)</td>
594+
</tr>
595+
<tr>
596+
<td><strong>hcd-1.0.0</strong></td>
597+
<td>DataStax HCD v1.0.x (<b>CURRENTLY UNDER DEVELOPMENT</b>)</td>
571598
</tr>
572599
</table>''')
573600
choice(
@@ -648,7 +675,7 @@ pipeline {
648675
parameterizedCron(branchPatternCron().matcher(env.BRANCH_NAME).matches() ? """
649676
# Every weeknight (Monday - Friday) around 4:00 AM
650677
# These schedules will run with and without Cython enabled for Python 3.8.16 and 3.12.0
651-
H 4 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;EVENT_LOOP=LIBEV;CI_SCHEDULE_PYTHON_VERSION=3.8.16 3.12.0;CI_SCHEDULE_SERVER_VERSION=3.11 4.0 5.0-beta1 dse-5.1.35 dse-6.8.30
678+
H 4 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;EVENT_LOOP=LIBEV;CI_SCHEDULE_PYTHON_VERSION=3.8.16 3.12.0;CI_SCHEDULE_SERVER_VERSION=3.11 4.0 5.0-beta1 dse-5.1.35 dse-6.8.30 dse-6.9.0 hcd-1.0.0
652679
""" : "")
653680
}
654681

test-requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
-r requirements.txt
22
scales
33
pytest
4-
ccm>=2.1.2
4+
ccm>=3.1.5
55
pytz
66
sure
77
pure-sasl

tests/integration/__init__.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
try:
4242
from ccmlib.dse_cluster import DseCluster
43+
from ccmlib.hcd_cluster import HcdCluster
4344
from ccmlib.cluster import Cluster as CCMCluster
4445
from ccmlib.cluster_factory import ClusterFactory as CCMClusterFactory
4546
from ccmlib import common
@@ -147,6 +148,10 @@ def _get_cass_version_from_dse(dse_version):
147148
return Version(cass_ver)
148149

149150

151+
def _get_cass_version_from_hcd(hcd_version):
152+
return Version("4.0.11")
153+
154+
150155
def _get_dse_version_from_cass(cass_version):
151156
if cass_version.startswith('2.1'):
152157
dse_ver = "4.8.15"
@@ -166,13 +171,18 @@ def _get_dse_version_from_cass(cass_version):
166171
SIMULACRON_JAR = os.getenv('SIMULACRON_JAR', None)
167172
CLOUD_PROXY_PATH = os.getenv('CLOUD_PROXY_PATH', None)
168173

169-
# Supported Clusters: Cassandra, DDAC, DSE
174+
# Supported Clusters: Cassandra, DDAC, DSE, HCD
170175
DSE_VERSION = None
176+
HCD_VERSION = None
171177
if os.getenv('DSE_VERSION', None): # we are testing against DSE
172178
DSE_VERSION = Version(os.getenv('DSE_VERSION', None))
173179
DSE_CRED = os.getenv('DSE_CREDS', None)
174180
CASSANDRA_VERSION = _get_cass_version_from_dse(DSE_VERSION.base_version)
175181
CCM_VERSION = DSE_VERSION.base_version
182+
elif os.getenv('HCD_VERSION', None): # we are testing against HCD
183+
HCD_VERSION = Version(os.getenv('HCD_VERSION', None))
184+
CASSANDRA_VERSION = _get_cass_version_from_hcd(HCD_VERSION.base_version)
185+
CCM_VERSION = HCD_VERSION.base_version
176186
else: # we are testing against Cassandra or DDAC
177187
cv_string = os.getenv('CASSANDRA_VERSION', None)
178188
mcv_string = os.getenv('MAPPED_CASSANDRA_VERSION', None)
@@ -196,6 +206,9 @@ def _get_dse_version_from_cass(cass_version):
196206
if DSE_CRED:
197207
log.info("Using DSE credentials file located at {0}".format(DSE_CRED))
198208
CCM_KWARGS['dse_credentials_file'] = DSE_CRED
209+
elif HCD_VERSION:
210+
log.info('Using HCD version: %s', HCD_VERSION)
211+
CCM_KWARGS['version'] = HCD_VERSION
199212
elif CASSANDRA_DIR:
200213
log.info("Using Cassandra dir: %s", CASSANDRA_DIR)
201214
CCM_KWARGS['install_dir'] = CASSANDRA_DIR
@@ -464,8 +477,9 @@ def use_cluster(cluster_name, nodes, ipformat=None, start=True, workloads=None,
464477
dse_options = dse_options or {}
465478
workloads = workloads or []
466479
dse_cluster = True if DSE_VERSION else False
480+
hcd_cluster = True if HCD_VERSION else False
467481

468-
if ccm_options is None and DSE_VERSION:
482+
if ccm_options is None and (DSE_VERSION or HCD_VERSION):
469483
ccm_options = {"version": CCM_VERSION}
470484
elif ccm_options is None:
471485
ccm_options = CCM_KWARGS.copy()
@@ -563,6 +577,18 @@ def use_cluster(cluster_name, nodes, ipformat=None, start=True, workloads=None,
563577
CCM_CLUSTER.populate(nodes, ipformat=ipformat)
564578

565579
CCM_CLUSTER.set_dse_configuration_options(dse_options)
580+
elif hcd_cluster:
581+
CCM_CLUSTER = HcdCluster(path, cluster_name, **ccm_options)
582+
CCM_CLUSTER.set_configuration_options({'start_native_transport': True})
583+
CCM_CLUSTER.set_configuration_options({'batch_size_warn_threshold_in_kb': 5})
584+
CCM_CLUSTER.set_configuration_options({'enable_user_defined_functions': True})
585+
CCM_CLUSTER.set_configuration_options({'enable_scripted_user_defined_functions': True})
586+
CCM_CLUSTER.set_configuration_options({'enable_materialized_views': True})
587+
CCM_CLUSTER.set_configuration_options({'enable_sasi_indexes': True})
588+
CCM_CLUSTER.set_configuration_options({'enable_transient_replication': True})
589+
common.switch_cluster(path, cluster_name)
590+
CCM_CLUSTER.set_configuration_options(configuration_options)
591+
CCM_CLUSTER.populate(nodes, ipformat=ipformat, use_single_interface=use_single_interface)
566592
else:
567593
ccm_cluster_clz = CCMCluster if Version(cassandra_version) < Version('4.1') else Cassandra41CCMCluster
568594
CCM_CLUSTER = ccm_cluster_clz(path, cluster_name, **ccm_options)

0 commit comments

Comments
 (0)