Skip to content

Commit 3c7b209

Browse files
GregBestlandtolbertam
authored andcommitted
Fixing Misc Unreliable Tests
Fixed race conditions in HostConnectionPool Related to changes introduced in JAVA-1371 Skipping null mapper tests for C* < 2.1.0
1 parent 4ed9166 commit 3c7b209

2 files changed

Lines changed: 11 additions & 6 deletions

File tree

driver-core/src/test/java/com/datastax/driver/core/HostConnectionPoolTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import com.codahale.metrics.Gauge;
1919
import com.datastax.driver.core.exceptions.*;
2020
import com.datastax.driver.core.policies.ConstantReconnectionPolicy;
21-
import com.datastax.driver.core.utils.MoreFutures;
21+
import com.google.common.base.Function;
2222
import com.google.common.base.Predicate;
2323
import com.google.common.base.Throwables;
2424
import com.google.common.util.concurrent.*;
@@ -290,7 +290,7 @@ public void should_adjust_connection_keyspace_on_dequeue_if_pool_state_is_differ
290290
int count = 0;
291291
for (MockRequest queuedRequest : queuedRequests) {
292292
try {
293-
Uninterruptibles.getUninterruptibly(queuedRequest.connectionFuture, 5, TimeUnit.SECONDS);
293+
Uninterruptibles.getUninterruptibly(queuedRequest.connectionFuture, 10, TimeUnit.SECONDS);
294294
count++;
295295
} catch (ExecutionException e) {
296296
// 128th request should timeout since all in flight requests are used.
@@ -400,7 +400,6 @@ public void should_fail_in_dequeue_when_setting_keyspace_and_another_set_keyspac
400400
assertThat(e.getCause()).isInstanceOf(DriverException.class);
401401
assertThat(e.getCause().getMessage()).contains("Aborting attempt to set keyspace to 'newkeyspace' since there is already an in flight attempt to set keyspace to 'slowks'.");
402402
}
403-
404403
} finally {
405404
MockRequest.completeAll(requests);
406405
cluster.close();
@@ -1242,8 +1241,8 @@ public void should_wait_on_connection_if_zero_core_connections() throws Exceptio
12421241

12431242
// Should create up to core connections.
12441243
verify(factory, timeout(readTimeout).times(1)).open(any(HostConnectionPool.class));
1245-
12461244
assertPoolSize(pool, 1);
1245+
Uninterruptibles.getUninterruptibly(request.requestInitialized, 10, TimeUnit.SECONDS);
12471246
request.simulateSuccessResponse();
12481247
} finally {
12491248
cluster.close();
@@ -1348,6 +1347,9 @@ static class MockRequest implements Connection.ResponseCallback {
13481347
enum State {START, COMPLETED, FAILED, TIMED_OUT}
13491348

13501349
final ListenableFuture<Connection> connectionFuture;
1350+
1351+
final ListenableFuture<Connection.ResponseHandler> requestInitialized;
1352+
13511353
private volatile Connection.ResponseHandler responseHandler;
13521354

13531355
final AtomicReference<State> state = new AtomicReference<State>(State.START);
@@ -1404,12 +1406,13 @@ private static void completeAll(List<MockRequest> requests) {
14041406

14051407
private MockRequest(HostConnectionPool pool, int timeoutMillis, int maxQueueSize) throws ConnectionException {
14061408
this.connectionFuture = pool.borrowConnection(timeoutMillis, MILLISECONDS, maxQueueSize);
1407-
Futures.addCallback(this.connectionFuture, new MoreFutures.SuccessCallback<Connection>() {
1409+
requestInitialized = Futures.transform(this.connectionFuture, new Function<Connection, Connection.ResponseHandler>() {
14081410
@Override
1409-
public void onSuccess(Connection connection) {
1411+
public Connection.ResponseHandler apply(Connection connection) {
14101412
MockRequest thisRequest = MockRequest.this;
14111413
thisRequest.responseHandler = new Connection.ResponseHandler(connection, -1, thisRequest);
14121414
connection.dispatcher.add(thisRequest.responseHandler);
1415+
return responseHandler;
14131416
}
14141417
});
14151418
}

driver-mapping/src/test/java/com/datastax/driver/mapping/MapperSaveNullFieldsTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.datastax.driver.core.BoundStatement;
1919
import com.datastax.driver.core.CCMTestsSupport;
20+
import com.datastax.driver.core.utils.CassandraVersion;
2021
import com.datastax.driver.mapping.Mapper.Option;
2122
import com.datastax.driver.mapping.annotations.PartitionKey;
2223
import com.datastax.driver.mapping.annotations.Table;
@@ -40,6 +41,7 @@ public void setup() {
4041
mapper = new MappingManager(session()).mapper(User.class);
4142
}
4243

44+
@CassandraVersion("2.1.0")
4345
@Test(groups = "short")
4446
void should_save_null_fields_if_requested() {
4547
should_save_null_fields(true, Option.saveNullFields(true));

0 commit comments

Comments
 (0)