Skip to content

Commit 9ca67af

Browse files
committed
tests: revisit disabled test suites
Go over disabled tests and enable them. If test fails: 1. Make test framework ignore it with proper message 2. If it is scylla bug or test needs to be adjusted, create an issue and reference it 3. Fix test to match scylla behavior There are two ways to disable test for scylla: 1. Mark it with @ScyllaSkip 2. Mark it with any backend requirement annotation: @CassandraRequirement, @DseRequirement, @BackendRequirement; and do not add sylla-specific requirement.
1 parent 8d63f16 commit 9ca67af

33 files changed

+288
-316
lines changed

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

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import com.datastax.oss.driver.api.core.UnsupportedProtocolVersionException;
3535
import com.datastax.oss.driver.api.core.config.DefaultDriverOption;
3636
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
37-
import com.datastax.oss.driver.api.testinfra.ScyllaSkip;
3837
import com.datastax.oss.driver.api.testinfra.ccm.CcmRule;
3938
import com.datastax.oss.driver.api.testinfra.requirement.BackendRequirement;
4039
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
@@ -77,6 +76,7 @@ public void should_downgrade_to_v3() {
7776
minInclusive = "5.0",
7877
maxExclusive = "5.1",
7978
description = "Only DSE in [5.0,5.1[ has V4 as its highest version")
79+
@BackendRequirement(type = BackendType.SCYLLA)
8080
@Test
8181
public void should_downgrade_to_v4() {
8282
try (CqlSession session = SessionUtils.newSession(ccm)) {
@@ -90,9 +90,6 @@ public void should_downgrade_to_v4() {
9090
minInclusive = "4.0-rc1",
9191
description = "Only C* in [4.0-rc1,*[ has V5 as its highest version")
9292
@Test
93-
@ScyllaSkip(
94-
description =
95-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
9693
public void should_downgrade_to_v5_oss() {
9794
try (CqlSession session = SessionUtils.newSession(ccm)) {
9895
assertThat(session.getContext().getProtocolVersion().getCode()).isEqualTo(5);
@@ -216,9 +213,6 @@ public void should_fail_if_provided_dse_v2_is_not_supported() {
216213
minInclusive = "4.0",
217214
description = "Only C* in [4.0,*[ has V5 supported")
218215
@Test
219-
@ScyllaSkip(
220-
description =
221-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
222216
public void should_not_downgrade_if_server_supports_latest_version() {
223217
try (CqlSession session = SessionUtils.newSession(ccm)) {
224218
assertThat(session.getContext().getProtocolVersion()).isEqualTo(ProtocolVersion.V5);
@@ -247,6 +241,7 @@ public void should_not_downgrade_if_server_supports_latest_version_dse() {
247241
type = BackendType.DSE,
248242
minInclusive = "4.8",
249243
description = "Only DSE in [4.8,*[ has V3 supported")
244+
@BackendRequirement(type = BackendType.SCYLLA)
250245
@Test
251246
public void should_use_explicitly_provided_v3() {
252247
DriverConfigLoader loader =
@@ -267,6 +262,7 @@ public void should_use_explicitly_provided_v3() {
267262
type = BackendType.DSE,
268263
minInclusive = "5.0",
269264
description = "Only DSE in [5.0,*[ has V4 supported")
265+
@BackendRequirement(type = BackendType.SCYLLA)
270266
@Test
271267
public void should_use_explicitly_provided_v4() {
272268
DriverConfigLoader loader =
@@ -288,9 +284,6 @@ public void should_use_explicitly_provided_v4() {
288284
minInclusive = "7.0",
289285
description = "Only DSE in [7.0,*[ has V5 supported")
290286
@Test
291-
@ScyllaSkip(
292-
description =
293-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
294287
public void should_use_explicitly_provided_v5() {
295288
DriverConfigLoader loader =
296289
SessionUtils.configLoaderBuilder()

integration-tests/src/test/java/com/datastax/oss/driver/core/auth/PlainTextAuthProviderIT.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
import com.datastax.oss.driver.api.core.config.DefaultDriverOption;
3232
import com.datastax.oss.driver.api.core.config.DriverConfigLoader;
3333
import com.datastax.oss.driver.api.core.session.SessionBuilder;
34-
import com.datastax.oss.driver.api.testinfra.ScyllaSkip;
34+
import com.datastax.oss.driver.api.testinfra.ccm.CcmBridge;
3535
import com.datastax.oss.driver.api.testinfra.ccm.CustomCcmRule;
36+
import com.datastax.oss.driver.api.testinfra.requirement.BackendType;
3637
import com.datastax.oss.driver.api.testinfra.session.SessionUtils;
3738
import com.datastax.oss.driver.internal.core.auth.PlainTextAuthProvider;
3839
import com.datastax.oss.driver.shaded.guava.common.util.concurrent.Uninterruptibles;
@@ -41,16 +42,19 @@
4142
import org.junit.ClassRule;
4243
import org.junit.Test;
4344

44-
@ScyllaSkip(
45-
description = "@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaJVMArgs")
4645
public class PlainTextAuthProviderIT {
4746

48-
@ClassRule
49-
public static final CustomCcmRule CCM_RULE =
50-
CustomCcmRule.builder()
51-
.withCassandraConfiguration("authenticator", "PasswordAuthenticator")
52-
.withJvmArgs("-Dcassandra.superuser_setup_delay_ms=0")
53-
.build();
47+
@ClassRule public static final CustomCcmRule CCM_RULE = getCCMRule();
48+
49+
private static CustomCcmRule getCCMRule() {
50+
CustomCcmRule.Builder builder =
51+
CustomCcmRule.builder()
52+
.withCassandraConfiguration("authenticator", "PasswordAuthenticator");
53+
if (!CcmBridge.isDistributionOf(BackendType.SCYLLA)) {
54+
builder = builder.withJvmArgs("-Dcassandra.superuser_setup_delay_ms=0");
55+
}
56+
return builder.build();
57+
}
5458

5559
@BeforeClass
5660
public static void sleepForAuth() {

integration-tests/src/test/java/com/datastax/oss/driver/core/connection/NettyResourceLeakDetectionIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ public void should_not_leak_compressed_lz4() {
133133
type = BackendType.CASSANDRA,
134134
maxExclusive = "4.0.0",
135135
description = "Snappy is not supported in OSS C* 4.0+ with protocol v5")
136+
@BackendRequirement(type = BackendType.SCYLLA)
136137
@Test
137138
public void should_not_leak_compressed_snappy() {
138139
DriverConfigLoader loader =

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ public void should_execute_batch_of_bound_statements_with_variables() {
168168

169169
@Test
170170
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
171+
@BackendRequirement(type = BackendType.SCYLLA)
171172
public void should_execute_batch_of_bound_statements_with_unset_values() {
172173
// Build a batch of batchCount statements with bound statements, each with their own positional
173174
// variables.

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import static org.assertj.core.api.Assertions.assertThat;
2727
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2828
import static org.assertj.core.api.Assumptions.assumeThat;
29+
import static org.junit.Assert.assertThrows;
2930

3031
import com.datastax.oss.driver.api.core.CQL4SkipMetadataResolveMethod;
3132
import com.datastax.oss.driver.api.core.ConsistencyLevel;
@@ -48,6 +49,7 @@
4849
import com.datastax.oss.driver.api.core.metadata.token.Token;
4950
import com.datastax.oss.driver.api.core.type.codec.TypeCodecs;
5051
import com.datastax.oss.driver.api.testinfra.ScyllaSkip;
52+
import com.datastax.oss.driver.api.testinfra.ccm.CcmBridge;
5153
import com.datastax.oss.driver.api.testinfra.ccm.CcmRule;
5254
import com.datastax.oss.driver.api.testinfra.ccm.SchemaChangeSynchronizer;
5355
import com.datastax.oss.driver.api.testinfra.requirement.BackendRequirement;
@@ -301,7 +303,9 @@ public void should_use_page_size() {
301303
}
302304

303305
@Test
304-
@ScyllaSkip(description = "@IntegrationTestDisabledScyllaFailure")
306+
@ScyllaSkip(description = "scylladb/scylla-driver#567 - fails by unknown reason")
307+
@BackendRequirement(type = BackendType.CASSANDRA)
308+
@BackendRequirement(type = BackendType.DSE)
305309
public void should_propagate_attributes_when_preparing_a_simple_statement() {
306310
CqlSession session = sessionRule.session();
307311

@@ -381,6 +385,7 @@ public void should_propagate_attributes_when_preparing_a_simple_statement() {
381385
// Test for JAVA-2066
382386
@Test
383387
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
388+
@BackendRequirement(type = BackendType.SCYLLA)
384389
public void should_compute_routing_key_when_indices_randomly_distributed() {
385390
try (CqlSession session = SessionUtils.newSession(ccmRule, sessionRule.keyspace())) {
386391

@@ -398,13 +403,26 @@ public void should_compute_routing_key_when_indices_randomly_distributed() {
398403
}
399404

400405
@Test
401-
@ScyllaSkip /* Skipping due to https://github.com/scylladb/scylla/issues/10956. */
402406
public void should_set_all_occurrences_of_variable() {
403407
CqlSession session = sessionRule.session();
404408
PreparedStatement ps = session.prepare("INSERT INTO test3 (pk1, pk2, v) VALUES (:i, :i, :i)");
405409

406410
CqlIdentifier id = CqlIdentifier.fromCql("i");
407411
ColumnDefinitions variableDefinitions = ps.getVariableDefinitions();
412+
if (CcmBridge.isDistributionOf(BackendType.SCYLLA)) {
413+
// Scylla has different behavior, see https://github.com/scylladb/scylladb/pull/10813 and for
414+
// more details.
415+
assertThat(variableDefinitions.allIndicesOf(id)).containsExactly(0);
416+
assertThrows(
417+
Exception.class, () -> should_set_all_occurrences_of_variable(ps.bind().setInt(id, 12)));
418+
assertThrows(
419+
Exception.class,
420+
() ->
421+
should_set_all_occurrences_of_variable(
422+
ps.boundStatementBuilder().setInt(id, 12).build()));
423+
return;
424+
}
425+
408426
assertThat(variableDefinitions.allIndicesOf(id)).containsExactly(0, 1, 2);
409427

410428
should_set_all_occurrences_of_variable(ps.bind().setInt(id, 12));

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

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
package com.datastax.oss.driver.core.cql;
2525

2626
import static org.assertj.core.api.Assertions.assertThat;
27+
import static org.mockito.Mockito.after;
2728
import static org.mockito.Mockito.timeout;
2829
import static org.mockito.Mockito.verify;
2930

@@ -37,7 +38,7 @@
3738
import com.datastax.oss.driver.api.core.cql.ResultSet;
3839
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
3940
import com.datastax.oss.driver.api.core.cql.Statement;
40-
import com.datastax.oss.driver.api.testinfra.ScyllaSkip;
41+
import com.datastax.oss.driver.api.testinfra.ccm.CcmBridge;
4142
import com.datastax.oss.driver.api.testinfra.ccm.CustomCcmRule;
4243
import com.datastax.oss.driver.api.testinfra.ccm.SchemaChangeSynchronizer;
4344
import com.datastax.oss.driver.api.testinfra.requirement.BackendRequirement;
@@ -72,6 +73,7 @@ public class ExecutionInfoWarningsIT {
7273
// set the warn threshold to 5Kb (default is 64Kb in newer versions)
7374
.withCassandraConfiguration("batch_size_warn_threshold_in_kb", "5")
7475
.build();
76+
7577
private SessionRule<CqlSession> sessionRule =
7678
SessionRule.builder(ccmRule)
7779
.withConfigLoader(
@@ -131,9 +133,7 @@ public void cleanupLogger() {
131133

132134
@Test
133135
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "3.0")
134-
@ScyllaSkip(
135-
description =
136-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaDifferentText")
136+
@BackendRequirement(type = BackendType.SCYLLA)
137137
public void should_execute_query_and_log_server_side_warnings() {
138138
final String query = "SELECT count(*) FROM test;";
139139
Statement<?> st = SimpleStatement.builder(query).build();
@@ -142,6 +142,11 @@ public void should_execute_query_and_log_server_side_warnings() {
142142
ExecutionInfo executionInfo = result.getExecutionInfo();
143143
assertThat(executionInfo).isNotNull();
144144
List<String> warnings = executionInfo.getWarnings();
145+
if (CcmBridge.isDistributionOf(BackendType.SCYLLA)) {
146+
assertThat(warnings).isEmpty();
147+
verify(appender, after(100).times(0)).doAppend(loggingEventCaptor.capture());
148+
return;
149+
}
145150
assertThat(warnings).isNotEmpty();
146151
String warning = warnings.get(0);
147152
assertThat(warning).isEqualTo("Aggregation query used without partition key");
@@ -158,9 +163,7 @@ public void should_execute_query_and_log_server_side_warnings() {
158163

159164
@Test
160165
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "3.0")
161-
@ScyllaSkip(
162-
description =
163-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaDifferentText")
166+
@BackendRequirement(type = BackendType.SCYLLA)
164167
public void should_execute_query_and_not_log_server_side_warnings() {
165168
final String query = "SELECT count(*) FROM test;";
166169
Statement<?> st =
@@ -170,6 +173,11 @@ public void should_execute_query_and_not_log_server_side_warnings() {
170173
ExecutionInfo executionInfo = result.getExecutionInfo();
171174
assertThat(executionInfo).isNotNull();
172175
List<String> warnings = executionInfo.getWarnings();
176+
if (CcmBridge.isDistributionOf(BackendType.SCYLLA)) {
177+
assertThat(warnings).isEmpty();
178+
verify(appender, after(100).times(0)).doAppend(loggingEventCaptor.capture());
179+
return;
180+
}
173181
assertThat(warnings).isNotEmpty();
174182
String warning = warnings.get(0);
175183
assertThat(warning).isEqualTo("Aggregation query used without partition key");
@@ -179,9 +187,7 @@ public void should_execute_query_and_not_log_server_side_warnings() {
179187

180188
@Test
181189
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
182-
@ScyllaSkip(
183-
description =
184-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaDifferentText")
190+
@BackendRequirement(type = BackendType.SCYLLA)
185191
public void should_expose_warnings_on_execution_info() {
186192
// the default batch size warn threshold is 5 * 1024 bytes, but after CASSANDRA-10876 there must
187193
// be multiple mutations in a batch to trigger this warning so the batch includes 2 different
@@ -198,6 +204,11 @@ public void should_expose_warnings_on_execution_info() {
198204
ExecutionInfo executionInfo = result.getExecutionInfo();
199205
assertThat(executionInfo).isNotNull();
200206
List<String> warnings = executionInfo.getWarnings();
207+
if (CcmBridge.isDistributionOf(BackendType.SCYLLA)) {
208+
assertThat(warnings).isEmpty();
209+
verify(appender, after(100).times(0)).doAppend(loggingEventCaptor.capture());
210+
return;
211+
}
201212
assertThat(warnings).isNotEmpty();
202213
// verify the log was generated
203214
verify(appender, timeout(500).atLeast(1)).doAppend(loggingEventCaptor.capture());

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@
4848
type = BackendType.DSE,
4949
minInclusive = "7.0",
5050
description = "Feature not available in DSE yet")
51-
@ScyllaSkip(
52-
description =
53-
"Scylla keeps negotiating protocol version v4, but \"Can't use nowInSeconds with protocol V4\". Remove skip once Scylla supports protocol version v5.")
51+
@ScyllaSkip(description = "scylladb/java-driver#573 - to be enabled")
5452
public class NowInSecondsIT {
5553

5654
private static final CcmRule CCM_RULE = CcmRule.getInstance();

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

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import com.datastax.oss.driver.api.core.cql.Row;
3737
import com.datastax.oss.driver.api.core.cql.SimpleStatement;
3838
import com.datastax.oss.driver.api.core.cql.Statement;
39-
import com.datastax.oss.driver.api.testinfra.ScyllaSkip;
4039
import com.datastax.oss.driver.api.testinfra.ccm.CcmRule;
4140
import com.datastax.oss.driver.api.testinfra.ccm.SchemaChangeSynchronizer;
4241
import com.datastax.oss.driver.api.testinfra.requirement.BackendRequirement;
@@ -89,13 +88,15 @@ public void setupSchema() {
8988

9089
@Test
9190
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
91+
@BackendRequirement(type = BackendType.SCYLLA)
9292
public void should_reject_simple_statement_with_keyspace_in_protocol_v4() {
9393
should_reject_statement_with_keyspace_in_protocol_v4(
9494
SimpleStatement.newInstance("SELECT * FROM foo").setKeyspace(sessionRule.keyspace()));
9595
}
9696

9797
@Test
9898
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
99+
@BackendRequirement(type = BackendType.SCYLLA)
99100
public void should_reject_batch_statement_with_explicit_keyspace_in_protocol_v4() {
100101
SimpleStatement statementWithoutKeyspace =
101102
SimpleStatement.newInstance(
@@ -109,6 +110,7 @@ public void should_reject_batch_statement_with_explicit_keyspace_in_protocol_v4(
109110

110111
@Test
111112
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "2.2")
113+
@BackendRequirement(type = BackendType.SCYLLA)
112114
public void should_reject_batch_statement_with_inferred_keyspace_in_protocol_v4() {
113115
SimpleStatement statementWithKeyspace =
114116
SimpleStatement.newInstance(
@@ -135,9 +137,6 @@ private void should_reject_statement_with_keyspace_in_protocol_v4(Statement stat
135137

136138
@Test
137139
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "4.0")
138-
@ScyllaSkip(
139-
description =
140-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
141140
public void should_execute_simple_statement_with_keyspace() {
142141
CqlSession session = sessionRule.session();
143142
session.execute(
@@ -156,9 +155,6 @@ public void should_execute_simple_statement_with_keyspace() {
156155

157156
@Test
158157
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "4.0")
159-
@ScyllaSkip(
160-
description =
161-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
162158
public void should_execute_batch_with_explicit_keyspace() {
163159
CqlSession session = sessionRule.session();
164160
session.execute(
@@ -183,9 +179,6 @@ public void should_execute_batch_with_explicit_keyspace() {
183179

184180
@Test
185181
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "4.0")
186-
@ScyllaSkip(
187-
description =
188-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
189182
public void should_execute_batch_with_inferred_keyspace() {
190183
CqlSession session = sessionRule.session();
191184
session.execute(
@@ -218,9 +211,6 @@ public void should_execute_batch_with_inferred_keyspace() {
218211

219212
@Test
220213
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "4.0")
221-
@ScyllaSkip(
222-
description =
223-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
224214
public void should_prepare_statement_with_keyspace() {
225215
CqlSession session = sessionRule.session();
226216
PreparedStatement prepared =
@@ -241,9 +231,6 @@ public void should_prepare_statement_with_keyspace() {
241231

242232
@Test
243233
@BackendRequirement(type = BackendType.CASSANDRA, minInclusive = "4.0")
244-
@ScyllaSkip(
245-
description =
246-
"@IntegrationTestDisabledScyllaFailure @IntegrationTestDisabledScyllaUnsupportedFunctionality @IntegrationTestDisabledScyllaProtocolV5")
247234
public void should_reprepare_statement_with_keyspace_on_the_fly() {
248235
// Create a separate session because we don't want it to have a default keyspace
249236
SchemaChangeSynchronizer.withLock(

0 commit comments

Comments
 (0)