diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java b/driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java index f142943169..1125c6cf3f 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/Entities.java @@ -37,25 +37,6 @@ import com.mongodb.client.vault.ClientEncryption; import com.mongodb.connection.ClusterConnectionMode; import com.mongodb.connection.ClusterDescription; -import com.mongodb.connection.ConnectionId; -import com.mongodb.connection.ServerId; -import com.mongodb.event.CommandEvent; -import com.mongodb.event.CommandFailedEvent; -import com.mongodb.event.CommandListener; -import com.mongodb.event.CommandStartedEvent; -import com.mongodb.event.CommandSucceededEvent; -import com.mongodb.event.ConnectionCheckOutFailedEvent; -import com.mongodb.event.ConnectionCheckOutStartedEvent; -import com.mongodb.event.ConnectionCheckedInEvent; -import com.mongodb.event.ConnectionCheckedOutEvent; -import com.mongodb.event.ConnectionClosedEvent; -import com.mongodb.event.ConnectionCreatedEvent; -import com.mongodb.event.ConnectionPoolClearedEvent; -import com.mongodb.event.ConnectionPoolClosedEvent; -import com.mongodb.event.ConnectionPoolCreatedEvent; -import com.mongodb.event.ConnectionPoolListener; -import com.mongodb.event.ConnectionPoolReadyEvent; -import com.mongodb.event.ConnectionReadyEvent; import com.mongodb.event.TestServerMonitorListener; import com.mongodb.internal.connection.ServerMonitoringModeUtil; import com.mongodb.internal.connection.TestClusterListener; @@ -63,15 +44,12 @@ import com.mongodb.internal.connection.TestConnectionPoolListener; import com.mongodb.internal.connection.TestServerListener; import com.mongodb.internal.logging.LogMessage; -import com.mongodb.lang.NonNull; import com.mongodb.lang.Nullable; import com.mongodb.logging.TestLoggingInterceptor; import org.bson.BsonArray; import org.bson.BsonBoolean; import org.bson.BsonDocument; -import org.bson.BsonDouble; import org.bson.BsonInt32; -import org.bson.BsonInt64; import org.bson.BsonString; import org.bson.BsonValue; @@ -97,7 +75,6 @@ import static com.mongodb.assertions.Assertions.notNull; import static com.mongodb.client.Fixture.getMongoClientSettingsBuilder; import static com.mongodb.client.Fixture.getMultiMongosMongoClientSettingsBuilder; -import static com.mongodb.client.unified.EventMatcher.getReasonString; import static com.mongodb.client.unified.UnifiedClientEncryptionHelper.createKmsProvidersMap; import static com.mongodb.client.unified.UnifiedCrudHelper.asReadConcern; import static com.mongodb.client.unified.UnifiedCrudHelper.asReadPreference; @@ -105,14 +82,13 @@ import static com.mongodb.internal.connection.AbstractConnectionPoolTest.waitForPoolAsyncWorkManagerStart; import static java.lang.System.getenv; import static java.util.Arrays.asList; -import static java.util.Collections.synchronizedList; import static org.junit.Assume.assumeTrue; public final class Entities { private static final Set SUPPORTED_CLIENT_ENTITY_OPTIONS = new HashSet<>( asList( - "id", "uriOptions", "serverApi", "useMultipleMongoses", "storeEventsAsEntities", - "observeEvents", "observeLogMessages", "observeSensitiveCommands", "ignoreCommandMonitoringEvents")); + "id", "uriOptions", "serverApi", "useMultipleMongoses", "observeEvents", + "observeLogMessages", "observeSensitiveCommands", "ignoreCommandMonitoringEvents")); private final Set entityNames = new HashSet<>(); private final Map threads = new HashMap<>(); private final Map>> tasks = new HashMap<>(); @@ -433,35 +409,6 @@ private void initClient(final BsonDocument entity, final String id, putEntity(id + "-connection-pool-listener", testConnectionPoolListener, clientConnectionPoolListeners); } - if (entity.containsKey("storeEventsAsEntities")) { - BsonArray storeEventsAsEntitiesArray = entity.getArray("storeEventsAsEntities"); - for (BsonValue eventValue : storeEventsAsEntitiesArray) { - BsonDocument eventDocument = eventValue.asDocument(); - String key = eventDocument.getString("id").getValue(); - BsonArray eventList = eventDocument.getArray("events"); - List eventDocumentList = synchronizedList(new ArrayList<>()); - putEntity(key, eventDocumentList, eventsMap); - - if (eventList.stream() - .map(value -> value.asString().getValue()) - .anyMatch(value -> value.startsWith("Command"))) { - clientSettingsBuilder.addCommandListener(new EntityCommandListener(eventList.stream() - .map(value -> value.asString().getValue()) - .collect(Collectors.toSet()), - eventDocumentList)); - } - if (eventList.stream() - .map(value -> value.asString().getValue()) - .anyMatch(value -> value.startsWith("Pool") || value.startsWith("Connection"))) { - clientSettingsBuilder. - applyToConnectionPoolSettings(builder -> - builder.addConnectionPoolListener(new EntityConnectionPoolListener(eventList.stream() - .map(value -> value.asString().getValue()) - .collect(Collectors.toSet()), - eventDocumentList))); - } - } - } clientSettingsBuilder.applyToServerSettings(builder -> { builder.heartbeatFrequency(50, TimeUnit.MILLISECONDS); builder.minHeartbeatFrequency(50, TimeUnit.MILLISECONDS); @@ -795,154 +742,4 @@ public void close() { clientLoggingInterceptors.values().forEach(TestLoggingInterceptor::close); threads.values().forEach(ExecutorService::shutdownNow); } - - private static class EntityCommandListener implements CommandListener { - private final List eventDocumentList; - private final Set enabledEvents; - - EntityCommandListener(final Set enabledEvents, final List eventDocumentList) { - this.eventDocumentList = eventDocumentList; - this.enabledEvents = enabledEvents; - } - - @Override - public void commandStarted(final CommandStartedEvent event) { - if (enabledEvents.contains("CommandStartedEvent")) { - eventDocumentList.add(createEventDocument(event, "CommandStartedEvent") - .append("databaseName", new BsonString(event.getDatabaseName()))); - } - } - - @Override - public void commandSucceeded(final CommandSucceededEvent event) { - if (enabledEvents.contains("CommandSucceededEvent")) { - eventDocumentList.add(createEventDocument(event, "CommandSucceededEvent") - .append("duration", new BsonInt64(event.getElapsedTime(TimeUnit.MILLISECONDS)))); - } - } - - @Override - public void commandFailed(final CommandFailedEvent event) { - if (enabledEvents.contains("CommandFailedEvent")) { - eventDocumentList.add(createEventDocument(event, "CommandFailedEvent") - .append("duration", - new BsonDouble(event.getElapsedTime(TimeUnit.NANOSECONDS) / 1_000_000_000.0)) - .append("failure", new BsonString(event.getThrowable().toString()))); - } - } - - private BsonDocument createEventDocument(final CommandEvent event, final String name) { - return new BsonDocument() - .append("name", new BsonString(name)) - .append("observedAt", new BsonDouble(System.currentTimeMillis() / 1000.0)) - .append("commandName", new BsonString(event.getCommandName())) - .append("requestId", new BsonInt32(event.getRequestId())); - } - } - - private static class EntityConnectionPoolListener implements ConnectionPoolListener { - private final List eventDocumentList; - private final Set enabledEvents; - - EntityConnectionPoolListener(final Set enabledEvents, final List eventDocumentList) { - this.eventDocumentList = eventDocumentList; - this.enabledEvents = enabledEvents; - } - - @Override - public void connectionPoolCreated(final ConnectionPoolCreatedEvent event) { - if (enabledEvents.contains("PoolCreatedEvent")) { - eventDocumentList.add(createEventDocument("PoolCreatedEvent", event.getServerId())); - } - } - - @Override - public void connectionPoolCleared(final ConnectionPoolClearedEvent event) { - if (enabledEvents.contains("PoolClearedEvent")) { - eventDocumentList.add(createEventDocument("PoolClearedEvent", event.getServerId())); - } - } - - @Override - public void connectionPoolReady(final ConnectionPoolReadyEvent event) { - if (enabledEvents.contains("PoolReadyEvent")) { - eventDocumentList.add(createEventDocument("PoolReadyEvent", event.getServerId())); - } - } - - @Override - public void connectionPoolClosed(final ConnectionPoolClosedEvent event) { - if (enabledEvents.contains("PoolClosedEvent")) { - eventDocumentList.add(createEventDocument("PoolClosedEvent", event.getServerId())); - } - } - - @Override - public void connectionCheckOutStarted(final ConnectionCheckOutStartedEvent event) { - if (enabledEvents.contains("ConnectionCheckOutStartedEvent")) { - eventDocumentList.add(createEventDocument("ConnectionCheckOutStartedEvent", event.getServerId())); - } - } - - @Override - public void connectionCheckedOut(final ConnectionCheckedOutEvent event) { - if (enabledEvents.contains("ConnectionCheckedOutEvent")) { - eventDocumentList.add(createEventDocument("ConnectionCheckedOutEvent", event.getConnectionId())); - } - } - - @Override - public void connectionCheckOutFailed(final ConnectionCheckOutFailedEvent event) { - if (enabledEvents.contains("ConnectionCheckOutFailedEvent")) { - eventDocumentList.add(createEventDocument("ConnectionCheckOutFailedEvent", event.getServerId()) - .append("reason", new BsonString(getReasonString(event.getReason())))); - } - } - - @Override - public void connectionCheckedIn(final ConnectionCheckedInEvent event) { - if (enabledEvents.contains("ConnectionCheckedInEvent")) { - eventDocumentList.add(createEventDocument("ConnectionCheckedInEvent", event.getConnectionId())); - } - } - - @Override - public void connectionCreated(final ConnectionCreatedEvent event) { - if (enabledEvents.contains("ConnectionCreatedEvent")) { - eventDocumentList.add(createEventDocument("ConnectionCreatedEvent", event.getConnectionId())); - } - } - - @Override - public void connectionReady(final ConnectionReadyEvent event) { - if (enabledEvents.contains("ConnectionReadyEvent")) { - eventDocumentList.add(createEventDocument("ConnectionReadyEvent", event.getConnectionId())); - } - } - - @Override - public void connectionClosed(final ConnectionClosedEvent event) { - if (enabledEvents.contains("ConnectionClosedEvent")) { - eventDocumentList.add(createEventDocument("ConnectionClosedEvent", event.getConnectionId()) - .append("reason", new BsonString(getReasonString(event.getReason())))); - } - } - - private BsonDocument createEventDocument(final String name, final ConnectionId connectionId) { - return createEventDocument(name, connectionId.getServerId()) - .append("connectionId", new BsonString(Long.toString(connectionId.getLocalValue()))); - } - - private BsonDocument createEventDocument(final String name, final ServerId serverId) { - return new BsonDocument() - .append("name", new BsonString(name)) - .append("observedAt", new BsonDouble(System.currentTimeMillis() / 1000.0)) - .append("address", new BsonString(getAddressAsString(serverId))); - } - - @NonNull - private String getAddressAsString(final ServerId serverId) { - return serverId.getAddress().getHost() + ":" + serverId.getAddress().getPort(); - } - } } diff --git a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java index e067e36d99..3364cf4183 100644 --- a/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java +++ b/driver-sync/src/test/functional/com/mongodb/client/unified/UnifiedTest.java @@ -47,7 +47,6 @@ import org.bson.BsonArray; import org.bson.BsonBoolean; import org.bson.BsonDocument; -import org.bson.BsonDouble; import org.bson.BsonInt32; import org.bson.BsonString; import org.bson.BsonValue; @@ -699,8 +698,6 @@ private OperationResult executeOperation(final UnifiedTestContext context, final return gridFSHelper.executeUpload(operation); case "runCommand": return crudHelper.executeRunCommand(operation); - case "loop": - return loop(context, operation); case "createDataKey": return clientEncryptionHelper.executeCreateDataKey(operation); case "addKeyAltName": @@ -731,67 +728,6 @@ private OperationResult executeOperation(final UnifiedTestContext context, final } } - private OperationResult loop(final UnifiedTestContext context, final BsonDocument operation) { - BsonDocument arguments = operation.getDocument("arguments"); - - int numIterations = 0; - int numSuccessfulOperations = 0; - boolean storeFailures = arguments.containsKey("storeFailuresAsEntity"); - boolean storeErrors = arguments.containsKey("storeErrorsAsEntity"); - BsonArray failureDescriptionDocuments = new BsonArray(); - BsonArray errorDescriptionDocuments = new BsonArray(); - - while (!terminateLoop()) { - BsonArray array = arguments.getArray("operations"); - for (int i = 0; i < array.size(); i++) { - BsonValue cur = array.get(i); - try { - assertOperation(context, cur.asDocument().clone(), i); - numSuccessfulOperations++; - } catch (AssertionError e) { - if (storeFailures) { - failureDescriptionDocuments.add(createDocumentFromException(e)); - } else if (storeErrors) { - errorDescriptionDocuments.add(createDocumentFromException(e)); - } else { - throw e; - } - break; - } catch (Exception e) { - if (storeErrors) { - errorDescriptionDocuments.add(createDocumentFromException(e)); - } else if (storeFailures) { - failureDescriptionDocuments.add(createDocumentFromException(e)); - } else { - throw e; - } - break; - } - } - numIterations++; - } - - if (arguments.containsKey("storeSuccessesAsEntity")) { - entities.addSuccessCount(arguments.getString("storeSuccessesAsEntity").getValue(), numSuccessfulOperations); - } - if (arguments.containsKey("storeIterationsAsEntity")) { - entities.addIterationCount(arguments.getString("storeIterationsAsEntity").getValue(), numIterations); - } - if (storeFailures) { - entities.addFailureDocuments(arguments.getString("storeFailuresAsEntity").getValue(), failureDescriptionDocuments); - } - if (storeErrors) { - entities.addErrorDocuments(arguments.getString("storeErrorsAsEntity").getValue(), errorDescriptionDocuments); - } - - return OperationResult.NONE; - } - - private BsonDocument createDocumentFromException(final Throwable throwable) { - return new BsonDocument("error", new BsonString(throwable.toString())) - .append("time", new BsonDouble(System.currentTimeMillis() / 1000.0)); - } - protected boolean terminateLoop() { return true; }