use of java.util.concurrent.TimeUnit.MILLISECONDS in project mongo-java-driver by mongodb.
the class KeyManagementService method decryptKey.
Mono<Void> decryptKey(final MongoKeyDecryptor keyDecryptor) {
SocketSettings socketSettings = SocketSettings.builder().connectTimeout(timeoutMillis, MILLISECONDS).readTimeout(timeoutMillis, MILLISECONDS).build();
StreamFactory streamFactory = tlsChannelStreamFactoryFactory.create(socketSettings, SslSettings.builder().enabled(true).context(kmsProviderSslContextMap.get(keyDecryptor.getKmsProvider())).build());
ServerAddress serverAddress = new ServerAddress(keyDecryptor.getHostName());
LOGGER.info("Connecting to KMS server at " + serverAddress);
return Mono.<Void>create(sink -> {
Stream stream = streamFactory.create(serverAddress);
stream.openAsync(new AsyncCompletionHandler<Void>() {
@Override
public void completed(final Void ignored) {
streamWrite(stream, keyDecryptor, sink);
}
@Override
public void failed(final Throwable t) {
stream.close();
sink.error(t);
}
});
}).onErrorMap(this::unWrapException);
}
use of java.util.concurrent.TimeUnit.MILLISECONDS in project mongo-java-driver by mongodb.
the class AbstractUnifiedTest method executeOperations.
private void executeOperations(final BsonArray operations, final boolean throwExceptions) {
FailPoint failPoint = null;
ServerAddress currentPrimary = null;
try {
for (BsonValue cur : operations) {
final BsonDocument operation = cur.asDocument();
String operationName = operation.getString("name").getValue();
BsonValue expectedResult = operation.get("result");
String receiver = operation.getString("object").getValue();
ClientSession clientSession = receiver.startsWith("session") ? sessionsMap.get(receiver) : null;
if (clientSession == null) {
clientSession = operation.getDocument("arguments", new BsonDocument()).containsKey("session") ? sessionsMap.get(operation.getDocument("arguments").getString("session").getValue()) : null;
}
try {
if (operationName.equals("startTransaction")) {
BsonDocument arguments = operation.getDocument("arguments", new BsonDocument());
if (arguments.containsKey("options")) {
TransactionOptions transactionOptions = createTransactionOptions(arguments.getDocument("options"));
nonNullClientSession(clientSession).startTransaction(transactionOptions);
} else {
nonNullClientSession(clientSession).startTransaction();
}
} else if (operationName.equals("commitTransaction")) {
nonNullClientSession(clientSession).commitTransaction();
} else if (operationName.equals("abortTransaction")) {
nonNullClientSession(clientSession).abortTransaction();
} else if (operationName.equals("withTransaction")) {
final BsonDocument arguments = operation.getDocument("arguments", new BsonDocument());
TransactionOptions transactionOptions = null;
if (arguments.containsKey("options")) {
transactionOptions = createTransactionOptions(arguments.getDocument("options"));
}
if (transactionOptions == null) {
nonNullClientSession(clientSession).withTransaction(new TransactionBody<Object>() {
@Override
public Void execute() {
executeOperations(arguments.getDocument("callback").getArray("operations"), true);
return null;
}
});
} else {
nonNullClientSession(clientSession).withTransaction(new TransactionBody<Object>() {
@Override
public Void execute() {
executeOperations(arguments.getDocument("callback").getArray("operations"), true);
return null;
}
}, transactionOptions);
}
} else if (operationName.equals("targetedFailPoint")) {
assertNull(failPoint);
failPoint = new TargetedFailPoint(operation);
failPoint.executeFailPoint();
} else if (operationName.equals("configureFailPoint")) {
assertNull(failPoint);
failPoint = new FailPoint(operation);
failPoint.executeFailPoint();
} else if (operationName.equals("startThread")) {
String target = operation.getDocument("arguments").getString("name").getValue();
executorServiceMap.put(target, Executors.newSingleThreadExecutor());
} else if (operationName.equals("runOnThread")) {
String target = operation.getDocument("arguments").getString("name").getValue();
ExecutorService executorService = executorServiceMap.get(target);
Callable<Exception> callable = createCallable(operation.getDocument("arguments").getDocument("operation"));
futureMap.put(target, executorService.submit(callable));
} else if (operationName.equals("wait")) {
Thread.sleep(operation.getDocument("arguments").getNumber("ms").longValue());
} else if (operationName.equals("waitForThread")) {
String target = operation.getDocument("arguments").getString("name").getValue();
Exception exceptionFromFuture = futureMap.remove(target).get(5, SECONDS);
if (exceptionFromFuture != null) {
throw exceptionFromFuture;
}
} else if (operationName.equals("waitForEvent")) {
String event = operation.getDocument("arguments").getString("event").getValue();
int count = operation.getDocument("arguments").getNumber("count").intValue();
long timeoutMillis = TimeUnit.SECONDS.toMillis(5);
switch(event) {
case "PoolClearedEvent":
connectionPoolListener.waitForEvent(ConnectionPoolClearedEvent.class, count, timeoutMillis, MILLISECONDS);
break;
case "PoolReadyEvent":
connectionPoolListener.waitForEvent(ConnectionPoolReadyEvent.class, count, timeoutMillis, MILLISECONDS);
break;
case "ServerMarkedUnknownEvent":
serverListener.waitForEvent(ServerType.UNKNOWN, count, timeoutMillis, MILLISECONDS);
break;
default:
throw new UnsupportedOperationException("Unsupported event type: " + event);
}
} else if (operationName.equals("assertEventCount")) {
String event = operation.getDocument("arguments").getString("event").getValue();
int expectedCount = operation.getDocument("arguments").getNumber("count").intValue();
int actualCount = -1;
switch(event) {
case "PoolClearedEvent":
actualCount = connectionPoolListener.countEvents(ConnectionPoolClearedEvent.class);
break;
case "PoolReadyEvent":
actualCount = connectionPoolListener.countEvents(ConnectionPoolReadyEvent.class);
break;
case "ServerMarkedUnknownEvent":
actualCount = serverListener.countEvents(ServerType.UNKNOWN);
break;
default:
throw new UnsupportedOperationException("Unsupported event type: " + event);
}
assertEquals(event + " counts not equal", expectedCount, actualCount);
} else if (operationName.equals("recordPrimary")) {
currentPrimary = getCurrentPrimary();
} else if (operationName.equals("waitForPrimaryChange")) {
long startTimeMillis = System.currentTimeMillis();
int timeoutMillis = operation.getDocument("arguments").getNumber("timeoutMS").intValue();
ServerAddress newPrimary = getCurrentPrimary();
while (newPrimary == null || newPrimary.equals(currentPrimary)) {
if (startTimeMillis + timeoutMillis <= System.currentTimeMillis()) {
fail("Timed out waiting for primary change");
}
// noinspection BusyWait
Thread.sleep(50);
newPrimary = getCurrentPrimary();
}
} else if (operationName.equals("runAdminCommand")) {
collectionHelper.runAdminCommand(operation.getDocument("arguments").getDocument("command"));
} else if (operationName.equals("assertSessionPinned")) {
final BsonDocument arguments = operation.getDocument("arguments", new BsonDocument());
assertNotNull(sessionsMap.get(arguments.getString("session").getValue()).getPinnedServerAddress());
} else if (operationName.equals("assertSessionUnpinned")) {
final BsonDocument arguments = operation.getDocument("arguments", new BsonDocument());
assertNull(sessionsMap.get(arguments.getString("session").getValue()).getPinnedServerAddress());
} else if (operationName.equals("assertSessionTransactionState")) {
final BsonDocument arguments = operation.getDocument("arguments", new BsonDocument());
ClientSession session = sessionsMap.get(arguments.getString("session").getValue());
String state = arguments.getString("state").getValue();
if (state.equals("starting") || state.equals("in_progress")) {
assertTrue(session.hasActiveTransaction());
} else {
assertFalse(session.hasActiveTransaction());
}
} else if (operationName.equals("endSession")) {
clientSession.close();
} else if (operation.getBoolean("error", BsonBoolean.FALSE).getValue()) {
try {
helper.getOperationResults(operation, clientSession);
fail("Error expected but none thrown");
} catch (Exception e) {
// Expected failure ignore
}
} else if (operationName.equals("assertDifferentLsidOnLastTwoCommands")) {
List<CommandEvent> events = lastTwoCommandEvents();
String eventsJson = commandListener.getCommandStartedEvents().stream().map(e -> ((CommandStartedEvent) e).getCommand().toJson()).collect(Collectors.joining(", "));
assertNotEquals(eventsJson, ((CommandStartedEvent) events.get(0)).getCommand().getDocument("lsid"), ((CommandStartedEvent) events.get(1)).getCommand().getDocument("lsid"));
} else if (operationName.equals("assertSameLsidOnLastTwoCommands")) {
List<CommandEvent> events = lastTwoCommandEvents();
String eventsJson = commandListener.getCommandStartedEvents().stream().map(e -> ((CommandStartedEvent) e).getCommand().toJson()).collect(Collectors.joining(", "));
assertEquals(eventsJson, ((CommandStartedEvent) events.get(0)).getCommand().getDocument("lsid"), ((CommandStartedEvent) events.get(1)).getCommand().getDocument("lsid"));
} else if (operationName.equals("assertSessionDirty")) {
assertNotNull(clientSession);
assertNotNull(clientSession.getServerSession());
assertTrue(clientSession.getServerSession().isMarkedDirty());
} else if (operationName.equals("assertSessionNotDirty")) {
assertNotNull(clientSession);
assertNotNull(clientSession.getServerSession());
assertFalse(clientSession.getServerSession().isMarkedDirty());
} else if (operationName.equals("assertCollectionExists")) {
assertCollectionExists(operation, true);
} else if (operationName.equals("assertCollectionNotExists")) {
assertCollectionExists(operation, false);
} else if (operationName.equals("assertIndexExists")) {
assertIndexExists(operation, true);
} else if (operationName.equals("assertIndexNotExists")) {
assertIndexExists(operation, false);
} else {
BsonDocument actualOutcome = helper.getOperationResults(operation, clientSession);
if (expectedResult != null) {
BsonValue actualResult = actualOutcome.get("result");
if (actualResult.isDocument()) {
if (((BsonDocument) actualResult).containsKey("recoveryToken")) {
((BsonDocument) actualResult).remove("recoveryToken");
}
}
assertEquals("Expected operation result differs from actual", expectedResult, actualResult);
}
}
assertFalse(String.format("Expected error '%s' but none thrown for operation %s", getErrorContainsField(expectedResult), operationName), hasErrorContainsField(expectedResult));
assertFalse(String.format("Expected error code '%s' but none thrown for operation %s", getErrorCodeNameField(expectedResult), operationName), hasErrorCodeNameField(expectedResult));
} catch (RuntimeException e) {
if (!assertExceptionState(e, expectedResult, operationName) || throwExceptions) {
throw e;
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
} finally {
if (failPoint != null) {
failPoint.disableFailPoint();
}
}
}
use of java.util.concurrent.TimeUnit.MILLISECONDS in project mongo-java-driver by mongodb.
the class AbstractUnifiedTest method setUp.
@Before
public void setUp() {
assumeFalse(skipTest);
assumeTrue("Skipping test: " + definition.getString("skipReason", new BsonString("")).getValue(), !definition.containsKey("skipReason"));
assumeFalse("Skipping test of count", filename.equals("count.json"));
collectionHelper = new CollectionHelper<Document>(new DocumentCodec(), new MongoNamespace(databaseName, collectionName));
collectionHelper.killAllSessions();
if (!isDataLakeTest()) {
collectionHelper.create(collectionName, new CreateCollectionOptions(), WriteConcern.MAJORITY);
}
if (!data.isEmpty()) {
List<BsonDocument> documents = new ArrayList<BsonDocument>();
for (BsonValue document : data) {
documents.add(document.asDocument());
}
collectionHelper.insertDocuments(documents, WriteConcern.MAJORITY);
}
if (definition.containsKey("failPoint")) {
collectionHelper.runAdminCommand(definition.getDocument("failPoint"));
}
final BsonDocument clientOptions = definition.getDocument("clientOptions", new BsonDocument());
connectionString = getConnectionString();
useMultipleMongoses = definition.getBoolean("useMultipleMongoses", BsonBoolean.FALSE).getValue();
if (useMultipleMongoses) {
assumeTrue(isSharded());
connectionString = getMultiMongosConnectionString();
assumeTrue("The system property org.mongodb.test.transaction.uri is not set.", connectionString != null);
}
MongoClientSettings.Builder builder = getMongoClientSettingsBuilder().applyConnectionString(connectionString).addCommandListener(commandListener).applyToClusterSettings(clusterSettingsBuilder -> {
if (clientOptions.containsKey("serverSelectionTimeoutMS")) {
clusterSettingsBuilder.serverSelectionTimeout(clientOptions.getNumber("serverSelectionTimeoutMS").longValue(), MILLISECONDS);
}
if (clientOptions.containsKey("directConnection")) {
setDirectConnection(clusterSettingsBuilder);
}
}).applyToSocketSettings(new Block<SocketSettings.Builder>() {
@Override
public void apply(final SocketSettings.Builder builder) {
builder.readTimeout(clientOptions.getInt32("socketTimeoutMS", new BsonInt32(toIntExact(SECONDS.toMillis(5)))).getValue(), MILLISECONDS);
if (clientOptions.containsKey("connectTimeoutMS")) {
builder.connectTimeout(clientOptions.getNumber("connectTimeoutMS").intValue(), MILLISECONDS);
}
}
}).writeConcern(getWriteConcern(clientOptions)).readConcern(getReadConcern(clientOptions)).readPreference(getReadPreference(clientOptions)).retryWrites(clientOptions.getBoolean("retryWrites", BsonBoolean.FALSE).getValue()).retryReads(false).applyToConnectionPoolSettings(poolSettingsBuilder -> {
poolSettingsBuilder.addConnectionPoolListener(connectionPoolListener);
if (clientOptions.containsKey("minPoolSize")) {
poolSettingsBuilder.minSize(clientOptions.getInt32("minPoolSize").getValue());
}
}).applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(50, MILLISECONDS);
builder.minHeartbeatFrequency(MIN_HEARTBEAT_FREQUENCY_MS, MILLISECONDS);
builder.addServerListener(serverListener);
}
});
if (clientOptions.containsKey("heartbeatFrequencyMS")) {
builder.applyToServerSettings(new Block<ServerSettings.Builder>() {
@Override
public void apply(final ServerSettings.Builder builder) {
builder.heartbeatFrequency(clientOptions.getInt32("heartbeatFrequencyMS").intValue(), MILLISECONDS);
}
});
}
if (clientOptions.containsKey("appname")) {
builder.applicationName(clientOptions.getString("appname").getValue());
}
if (clientOptions.containsKey("w")) {
if (clientOptions.isString("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getString("w").getValue()));
} else if (clientOptions.isNumber("w")) {
builder.writeConcern(new WriteConcern(clientOptions.getNumber("w").intValue()));
}
}
StreamFactoryFactory streamFactoryFactory = getStreamFactoryFactory();
if (streamFactoryFactory != null) {
builder.streamFactoryFactory(streamFactoryFactory);
}
mongoClient = createMongoClient(builder.build());
database = mongoClient.getDatabase(databaseName);
if (useMultipleMongoses) {
// non-transactional distinct operation to avoid StaleDbVersion error
runDistinctOnEachNode();
}
helper = new JsonPoweredCrudTestHelper(description, database, database.getCollection(collectionName, BsonDocument.class), null, mongoClient);
sessionsMap = new HashMap<>();
lsidMap = new HashMap<>();
if (createSessions && serverVersionAtLeast(3, 6)) {
ClientSession sessionZero = createSession("session0");
ClientSession sessionOne = createSession("session1");
sessionsMap.put("session0", sessionZero);
sessionsMap.put("session1", sessionOne);
lsidMap.put("session0", sessionZero.getServerSession().getIdentifier());
lsidMap.put("session1", sessionOne.getServerSession().getIdentifier());
}
}
use of java.util.concurrent.TimeUnit.MILLISECONDS in project ExoPlayer by google.
the class SessionCallbackBuilderTest method allowedCommand_withoutPlaylist_disallowsSkipTo.
@Test
public void allowedCommand_withoutPlaylist_disallowsSkipTo() throws Exception {
int testRewindIncrementMs = 100;
int testFastForwardIncrementMs = 100;
try (MediaSession session = createMediaSession(sessionPlayerConnector, new SessionCallbackBuilder(context, sessionPlayerConnector).setRatingCallback((mediaSession, controller, mediaId, rating) -> SessionResult.RESULT_ERROR_BAD_VALUE).setRewindIncrementMs(testRewindIncrementMs).setFastForwardIncrementMs(testFastForwardIncrementMs).setMediaItemProvider(new SessionCallbackBuilder.MediaIdMediaItemProvider()).build())) {
assertPlayerResultSuccess(sessionPlayerConnector.setMediaItem(TestUtils.createMediaItem()));
assertPlayerResultSuccess(sessionPlayerConnector.prepare());
CountDownLatch latch = new CountDownLatch(1);
OnConnectedListener listener = (controller, allowedCommands) -> {
List<Integer> disallowedCommandCodes = Arrays.asList(SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_PLAYLIST_ITEM, SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_PREVIOUS_PLAYLIST_ITEM, SessionCommand.COMMAND_CODE_PLAYER_SKIP_TO_NEXT_PLAYLIST_ITEM);
assertDisallowedCommands(disallowedCommandCodes, allowedCommands);
latch.countDown();
};
try (MediaController controller = createConnectedController(session, listener, null)) {
assertThat(latch.await(CONTROLLER_COMMAND_WAIT_TIME_MS, MILLISECONDS)).isTrue();
assertSessionResultFailure(controller.skipToNextPlaylistItem());
assertSessionResultFailure(controller.skipToPreviousPlaylistItem());
assertSessionResultFailure(controller.skipToPlaylistItem(0));
}
}
}
use of java.util.concurrent.TimeUnit.MILLISECONDS in project ExoPlayer by google.
the class SessionCallbackBuilderTest method setDisconnectedCallback_afterDisconnect_receivesOnDisconnected.
@Test
public void setDisconnectedCallback_afterDisconnect_receivesOnDisconnected() throws Exception {
CountDownLatch disconnectedLatch = new CountDownLatch(1);
SessionCallbackBuilder.DisconnectedCallback disconnectCallback = (session, controllerInfo) -> disconnectedLatch.countDown();
try (MediaSession session = createMediaSession(sessionPlayerConnector, new SessionCallbackBuilder(context, sessionPlayerConnector).setDisconnectedCallback(disconnectCallback).build())) {
try (MediaController controller = createConnectedController(session)) {
}
assertThat(disconnectedLatch.await(CONTROLLER_COMMAND_WAIT_TIME_MS, MILLISECONDS)).isTrue();
}
}
Aggregations