Skip to content

Commit 01c6151

Browse files
lukasz-antoniakabsurdfarce
authored andcommitted
Refactor integration tests to support multiple C* distributions. Test with DataStax HCD 1.0.0
patch by Lukasz Antoniak; reviewed by Bret McGuire reference: #1958
1 parent a4175f3 commit 01c6151

File tree

27 files changed

+439
-121
lines changed

27 files changed

+439
-121
lines changed

Jenkinsfile-datastax

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def initializeEnvironment() {
6161
. ${JABBA_SHELL}
6262
jabba which 1.8''', returnStdout: true).trim()
6363

64-
sh label: 'Download Apache CassandraⓇ or DataStax Enterprise',script: '''#!/bin/bash -le
64+
sh label: 'Download Apache CassandraⓇ, DataStax Enterprise or DataStax HCD ',script: '''#!/bin/bash -le
6565
. ${JABBA_SHELL}
6666
jabba use 1.8
6767
. ${CCM_ENVIRONMENT_SHELL} ${SERVER_VERSION}
@@ -75,13 +75,26 @@ CCM_CASSANDRA_VERSION=${DSE_FIXED_VERSION} # maintain for backwards compatibilit
7575
CCM_VERSION=${DSE_FIXED_VERSION}
7676
CCM_SERVER_TYPE=dse
7777
DSE_VERSION=${DSE_FIXED_VERSION}
78-
CCM_IS_DSE=true
7978
CCM_BRANCH=${DSE_FIXED_VERSION}
8079
DSE_BRANCH=${DSE_FIXED_VERSION}
8180
ENVIRONMENT_EOF
8281
'''
8382
}
8483

84+
if (env.SERVER_VERSION.split('-')[0] == 'hcd') {
85+
env.HCD_FIXED_VERSION = env.SERVER_VERSION.split('-')[1]
86+
sh label: 'Update environment for DataStax HCD', script: '''#!/bin/bash -le
87+
cat >> ${HOME}/environment.txt << ENVIRONMENT_EOF
88+
CCM_CASSANDRA_VERSION=${HCD_FIXED_VERSION} # maintain for backwards compatibility
89+
CCM_VERSION=${HCD_FIXED_VERSION}
90+
CCM_SERVER_TYPE=hcd
91+
HCD_VERSION=${HCD_FIXED_VERSION}
92+
CCM_BRANCH=${HCD_FIXED_VERSION}
93+
HCD_BRANCH=${HCD_FIXED_VERSION}
94+
ENVIRONMENT_EOF
95+
'''
96+
}
97+
8598
sh label: 'Display Java and environment information',script: '''#!/bin/bash -le
8699
# Load CCM environment variables
87100
set -o allexport
@@ -144,7 +157,7 @@ def executeTests() {
144157
-Dmaven.test.failure.ignore=true \
145158
-Dmaven.javadoc.skip=${SKIP_JAVADOCS} \
146159
-Dccm.version=${CCM_CASSANDRA_VERSION} \
147-
-Dccm.dse=${CCM_IS_DSE} \
160+
-Dccm.distribution=${CCM_SERVER_TYPE:cassandra} \
148161
-Dproxy.path=${HOME}/proxy \
149162
${SERIAL_ITS_ARGUMENT} \
150163
${ISOLATED_ITS_ARGUMENT} \
@@ -269,6 +282,7 @@ pipeline {
269282
'dse-6.7.17', // Previous DataStax Enterprise
270283
'dse-6.8.30', // Current DataStax Enterprise
271284
'dse-6.9.0', // Current DataStax Enterprise
285+
'hcd-1.0.0', // Current DataStax HCD
272286
'ALL'],
273287
description: '''Apache Cassandra&reg; and DataStax Enterprise server version to use for adhoc <b>BUILD-AND-EXECUTE-TESTS</b> builds
274288
<table style="width:100%">
@@ -330,6 +344,10 @@ pipeline {
330344
<td><strong>dse-6.9.0</strong></td>
331345
<td>DataStax Enterprise v6.9.x</td>
332346
</tr>
347+
<tr>
348+
<td><strong>hcd-1.0.0</strong></td>
349+
<td>DataStax HCD v1.0.x</td>
350+
</tr>
333351
</table>''')
334352
choice(
335353
name: 'ADHOC_BUILD_AND_EXECUTE_TESTS_JABBA_VERSION',
@@ -421,9 +439,9 @@ pipeline {
421439
H 2 * * 0 %CI_SCHEDULE=WEEKENDS;CI_SCHEDULE_SERVER_VERSIONS=2.1 3.0 4.0 dse-4.8.16 dse-5.0.15 dse-5.1.35 dse-6.0.18 dse-6.7.17;CI_SCHEDULE_JABBA_VERSION=1.8
422440
# Every weeknight (Monday - Friday) around 12:00 PM noon
423441
### JDK11 tests against 3.11, 4.1, 5.0-beta1 and DSE 6.8
424-
H 12 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;CI_SCHEDULE_SERVER_VERSIONS=3.11 4.1 5.0-beta1 dse-6.8.30 dse-6.9.0;[email protected]
442+
H 12 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;CI_SCHEDULE_SERVER_VERSIONS=3.11 4.1 5.0-beta1 dse-6.8.30 dse-6.9.0 hcd-1.0.0;[email protected]
425443
### JDK17 tests against 3.11, 4.1, 5.0-beta1 and DSE 6.8
426-
H 12 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;CI_SCHEDULE_SERVER_VERSIONS=3.11 4.1 5.0-beta1 dse-6.8.30 dse-6.9.0;[email protected]
444+
H 12 * * 1-5 %CI_SCHEDULE=WEEKNIGHTS;CI_SCHEDULE_SERVER_VERSIONS=3.11 4.1 5.0-beta1 dse-6.8.30 dse-6.9.0 hcd-1.0.0;[email protected]
427445
""" : "")
428446
}
429447

@@ -460,7 +478,8 @@ pipeline {
460478
values '3.11', // Latest stable Apache CassandraⓇ
461479
'4.1', // Development Apache CassandraⓇ
462480
'dse-6.8.30', // Current DataStax Enterprise
463-
'dse-6.9.0' // Current DataStax Enterprise
481+
'dse-6.9.0', // Current DataStax Enterprise
482+
'hcd-1.0.0' // Current DataStax HCD
464483
}
465484
axis {
466485
name 'JABBA_VERSION'
@@ -578,7 +597,8 @@ pipeline {
578597
'dse-6.0.18', // Previous DataStax Enterprise
579598
'dse-6.7.17', // Previous DataStax Enterprise
580599
'dse-6.8.30', // Current DataStax Enterprise
581-
'dse-6.9.0' // Current DataStax Enterprise
600+
'dse-6.9.0', // Current DataStax Enterprise
601+
'hcd-1.0.0' // Current DataStax HCD
582602
}
583603
}
584604
when {

core/src/main/java/com/datastax/oss/driver/api/core/Version.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class Version implements Comparable<Version>, Serializable {
4848

4949
private static final Pattern pattern = Pattern.compile(VERSION_REGEXP);
5050

51+
@NonNull public static final Version V1_0_0 = Objects.requireNonNull(parse("1.0.0"));
5152
@NonNull public static final Version V2_1_0 = Objects.requireNonNull(parse("2.1.0"));
5253
@NonNull public static final Version V2_2_0 = Objects.requireNonNull(parse("2.2.0"));
5354
@NonNull public static final Version V3_0_0 = Objects.requireNonNull(parse("3.0.0"));

integration-tests/src/test/java/com/datastax/dse/driver/api/core/cql/continuous/ContinuousPagingIT.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import java.time.Duration;
4747
import java.util.Collections;
4848
import java.util.Iterator;
49-
import java.util.Objects;
5049
import java.util.concurrent.CancellationException;
5150
import java.util.concurrent.CompletableFuture;
5251
import java.util.concurrent.CompletionStage;
@@ -281,11 +280,8 @@ public void prepared_statement_paging_should_be_resilient_to_schema_change() {
281280
// dropped.
282281
Row row = it.next();
283282
assertThat(row.getString("k")).isNotNull();
284-
if (ccmRule
285-
.getDseVersion()
286-
.orElseThrow(IllegalStateException::new)
287-
.compareTo(Objects.requireNonNull(Version.parse("6.0.0")))
288-
>= 0) {
283+
if (ccmRule.isDistributionOf(
284+
BackendType.DSE, (dist, cass) -> dist.compareTo(Version.parse("6.0.0")) >= 0)) {
289285
// DSE 6 only, v should be null here since dropped.
290286
// Not reliable for 5.1 since we may have gotten page queued before schema changed.
291287
assertThat(row.isNull("v")).isTrue();

integration-tests/src/test/java/com/datastax/dse/driver/api/core/graph/remote/GraphTraversalRemoteITBase.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.datastax.oss.driver.api.core.CqlSession;
3131
import com.datastax.oss.driver.api.core.Version;
3232
import com.datastax.oss.driver.api.core.servererrors.InvalidQueryException;
33+
import com.datastax.oss.driver.api.testinfra.ccm.CcmBridge;
3334
import com.datastax.oss.driver.api.testinfra.ccm.CustomCcmRule;
3435
import com.datastax.oss.driver.api.testinfra.requirement.BackendRequirement;
3536
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
@@ -643,9 +644,9 @@ public void should_allow_use_of_dsl_graph_binary() {
643644
*/
644645
@Test
645646
public void should_return_correct_results_when_bulked() {
646-
Optional<Version> dseVersion = ccmRule().getCcmBridge().getDseVersion();
647647
Assumptions.assumeThat(
648-
dseVersion.isPresent() && dseVersion.get().compareTo(Version.parse("5.1.2")) > 0)
648+
CcmBridge.isDistributionOf(
649+
BackendType.DSE, (dist, cass) -> dist.compareTo(Version.parse("5.1.2")) > 0))
649650
.isTrue();
650651

651652
List<String> results = graphTraversalSource().E().label().barrier().toList();

integration-tests/src/test/java/com/datastax/dse/driver/api/core/graph/statement/GraphTraversalITBase.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
import com.datastax.oss.driver.api.core.Version;
3737
import com.datastax.oss.driver.api.core.servererrors.InvalidQueryException;
3838
import com.datastax.oss.driver.api.core.type.reflect.GenericType;
39+
import com.datastax.oss.driver.api.testinfra.ccm.CcmBridge;
3940
import com.datastax.oss.driver.api.testinfra.ccm.CustomCcmRule;
41+
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
4042
import com.datastax.oss.driver.shaded.guava.common.collect.ImmutableList;
4143
import com.datastax.oss.driver.shaded.guava.common.collect.Lists;
4244
import java.util.List;
@@ -598,7 +600,8 @@ public void should_allow_use_of_dsl_graph_binary() throws Exception {
598600
@Test
599601
public void should_return_correct_results_when_bulked() {
600602
Assumptions.assumeThat(
601-
ccmRule().getCcmBridge().getDseVersion().get().compareTo(Version.parse("5.1.2")) > 0)
603+
CcmBridge.isDistributionOf(
604+
BackendType.DSE, (dist, cass) -> dist.compareTo(Version.parse("5.1.2")) > 0))
602605
.isTrue();
603606

604607
GraphResultSet rs =

integration-tests/src/test/java/com/datastax/dse/driver/api/core/metadata/schema/DseAggregateMetadataIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@ public void should_parse_aggregate_with_deterministic() {
106106
}
107107

108108
private static boolean isDse6OrHigher() {
109-
assumeThat(CCM_RULE.getDseVersion())
109+
assumeThat(CCM_RULE.isDistributionOf(BackendType.DSE))
110110
.describedAs("DSE required for DseFunctionMetadata tests")
111-
.isPresent();
112-
return CCM_RULE.getDseVersion().get().compareTo(DSE_6_0_0) >= 0;
111+
.isTrue();
112+
return CCM_RULE.getDistributionVersion().compareTo(DSE_6_0_0) >= 0;
113113
}
114114
}

integration-tests/src/test/java/com/datastax/dse/driver/api/core/metadata/schema/DseFunctionMetadataIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,9 @@ public void should_parse_function_with_deterministic_and_monotonic_on() {
233233
}
234234

235235
private static boolean isDse6OrHigher() {
236-
assumeThat(CCM_RULE.getDseVersion())
236+
assumeThat(CCM_RULE.isDistributionOf(BackendType.DSE))
237237
.describedAs("DSE required for DseFunctionMetadata tests")
238-
.isPresent();
239-
return CCM_RULE.getDseVersion().get().compareTo(DSE_6_0_0) >= 0;
238+
.isTrue();
239+
return CCM_RULE.getDistributionVersion().compareTo(DSE_6_0_0) >= 0;
240240
}
241241
}

integration-tests/src/test/java/com/datastax/oss/driver/core/compression/DirectCompressionIT.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.datastax.oss.driver.api.core.cql.Row;
3030
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
3131
import com.datastax.oss.driver.api.testinfra.ccm.CcmRule;
32+
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
3233
import com.datastax.oss.driver.api.testinfra.session.SessionRule;
3334
import com.datastax.oss.driver.api.testinfra.session.SessionUtils;
3435
import com.datastax.oss.driver.categories.ParallelizableTests;
@@ -75,8 +76,9 @@ public static void setup() {
7576
public void should_execute_queries_with_snappy_compression() throws Exception {
7677
Assume.assumeTrue(
7778
"Snappy is not supported in OSS C* 4.0+ with protocol v5",
78-
CCM_RULE.getDseVersion().isPresent()
79-
|| CCM_RULE.getCassandraVersion().nextStable().compareTo(Version.V4_0_0) < 0);
79+
!CCM_RULE.isDistributionOf(BackendType.HCD)
80+
&& (CCM_RULE.isDistributionOf(BackendType.DSE)
81+
|| CCM_RULE.getCassandraVersion().nextStable().compareTo(Version.V4_0_0) < 0));
8082
createAndCheckCluster("snappy");
8183
}
8284

integration-tests/src/test/java/com/datastax/oss/driver/core/compression/HeapCompressionIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.datastax.oss.driver.api.core.cql.Row;
3030
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
3131
import com.datastax.oss.driver.api.testinfra.ccm.CustomCcmRule;
32+
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
3233
import com.datastax.oss.driver.api.testinfra.session.SessionRule;
3334
import com.datastax.oss.driver.api.testinfra.session.SessionUtils;
3435
import com.datastax.oss.driver.categories.IsolatedTests;
@@ -79,7 +80,7 @@ public static void setup() {
7980
public void should_execute_queries_with_snappy_compression() throws Exception {
8081
Assume.assumeTrue(
8182
"Snappy is not supported in OSS C* 4.0+ with protocol v5",
82-
CCM_RULE.getDseVersion().isPresent()
83+
CCM_RULE.isDistributionOf(BackendType.DSE)
8384
|| CCM_RULE.getCassandraVersion().nextStable().compareTo(Version.V4_0_0) < 0);
8485
createAndCheckCluster("snappy");
8586
}

integration-tests/src/test/java/com/datastax/oss/driver/core/cql/QueryTraceIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
2929
import com.datastax.oss.driver.api.core.metadata.EndPoint;
3030
import com.datastax.oss.driver.api.testinfra.ccm.CcmRule;
31+
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
3132
import com.datastax.oss.driver.api.testinfra.session.SessionRule;
3233
import com.datastax.oss.driver.categories.ParallelizableTests;
3334
import java.net.InetAddress;
@@ -82,7 +83,7 @@ public void should_fetch_trace_when_tracing_enabled() {
8283
InetAddress nodeAddress = ((InetSocketAddress) contactPoint.resolve()).getAddress();
8384
boolean expectPorts =
8485
CCM_RULE.getCassandraVersion().nextStable().compareTo(Version.V4_0_0) >= 0
85-
&& !CCM_RULE.getDseVersion().isPresent();
86+
&& !CCM_RULE.isDistributionOf(BackendType.DSE);
8687

8788
QueryTrace queryTrace = executionInfo.getQueryTrace();
8889
assertThat(queryTrace.getTracingId()).isEqualTo(executionInfo.getTracingId());

0 commit comments

Comments
 (0)