3737import com .mongodb .client .vault .ClientEncryption ;
3838import com .mongodb .connection .ClusterConnectionMode ;
3939import com .mongodb .connection .ClusterDescription ;
40- import com .mongodb .connection .ConnectionId ;
41- import com .mongodb .connection .ServerId ;
42- import com .mongodb .event .CommandEvent ;
43- import com .mongodb .event .CommandFailedEvent ;
44- import com .mongodb .event .CommandListener ;
45- import com .mongodb .event .CommandStartedEvent ;
46- import com .mongodb .event .CommandSucceededEvent ;
47- import com .mongodb .event .ConnectionCheckOutFailedEvent ;
48- import com .mongodb .event .ConnectionCheckOutStartedEvent ;
49- import com .mongodb .event .ConnectionCheckedInEvent ;
50- import com .mongodb .event .ConnectionCheckedOutEvent ;
51- import com .mongodb .event .ConnectionClosedEvent ;
52- import com .mongodb .event .ConnectionCreatedEvent ;
53- import com .mongodb .event .ConnectionPoolClearedEvent ;
54- import com .mongodb .event .ConnectionPoolClosedEvent ;
55- import com .mongodb .event .ConnectionPoolCreatedEvent ;
56- import com .mongodb .event .ConnectionPoolListener ;
57- import com .mongodb .event .ConnectionPoolReadyEvent ;
58- import com .mongodb .event .ConnectionReadyEvent ;
5940import com .mongodb .event .TestServerMonitorListener ;
6041import com .mongodb .internal .connection .ServerMonitoringModeUtil ;
6142import com .mongodb .internal .connection .TestClusterListener ;
6243import com .mongodb .internal .connection .TestCommandListener ;
6344import com .mongodb .internal .connection .TestConnectionPoolListener ;
6445import com .mongodb .internal .connection .TestServerListener ;
6546import com .mongodb .internal .logging .LogMessage ;
66- import com .mongodb .lang .NonNull ;
6747import com .mongodb .lang .Nullable ;
6848import com .mongodb .logging .TestLoggingInterceptor ;
6949import org .bson .BsonArray ;
7050import org .bson .BsonBoolean ;
7151import org .bson .BsonDocument ;
72- import org .bson .BsonDouble ;
7352import org .bson .BsonInt32 ;
74- import org .bson .BsonInt64 ;
7553import org .bson .BsonString ;
7654import org .bson .BsonValue ;
7755
9775import static com .mongodb .assertions .Assertions .notNull ;
9876import static com .mongodb .client .Fixture .getMongoClientSettingsBuilder ;
9977import static com .mongodb .client .Fixture .getMultiMongosMongoClientSettingsBuilder ;
100- import static com .mongodb .client .unified .EventMatcher .getReasonString ;
10178import static com .mongodb .client .unified .UnifiedClientEncryptionHelper .createKmsProvidersMap ;
10279import static com .mongodb .client .unified .UnifiedCrudHelper .asReadConcern ;
10380import static com .mongodb .client .unified .UnifiedCrudHelper .asReadPreference ;
10481import static com .mongodb .client .unified .UnifiedCrudHelper .asWriteConcern ;
10582import static com .mongodb .internal .connection .AbstractConnectionPoolTest .waitForPoolAsyncWorkManagerStart ;
10683import static java .lang .System .getenv ;
10784import static java .util .Arrays .asList ;
108- import static java .util .Collections .synchronizedList ;
10985import static org .junit .Assume .assumeTrue ;
11086
11187public final class Entities {
11288 private static final Set <String > SUPPORTED_CLIENT_ENTITY_OPTIONS = new HashSet <>(
11389 asList (
114- "id" , "uriOptions" , "serverApi" , "useMultipleMongoses" , "storeEventsAsEntities " ,
115- "observeEvents" , " observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" ));
90+ "id" , "uriOptions" , "serverApi" , "useMultipleMongoses" , "observeEvents " ,
91+ "observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" ));
11692 private final Set <String > entityNames = new HashSet <>();
11793 private final Map <String , ExecutorService > threads = new HashMap <>();
11894 private final Map <String , ArrayList <Future <?>>> tasks = new HashMap <>();
@@ -136,7 +112,6 @@ public final class Entities {
136112 private final Map <String , Long > iterationCounts = new HashMap <>();
137113 private final Map <String , BsonArray > errorDocumentsMap = new HashMap <>();
138114 private final Map <String , BsonArray > failureDocumentsMap = new HashMap <>();
139- private final Map <String , List <BsonDocument >> eventsMap = new HashMap <>();
140115
141116 public boolean hasSuccessCount (final String id ) {
142117 return successCounts .containsKey (id );
@@ -186,14 +161,6 @@ public BsonArray getFailureDocuments(final String id) {
186161 return getEntity (id , failureDocumentsMap , "failureDocuments" );
187162 }
188163
189- public boolean hasEvents (final String id ) {
190- return eventsMap .containsKey (id );
191- }
192-
193- public List <BsonDocument > getEvents (final String id ) {
194- return getEntity (id , eventsMap , "events" );
195- }
196-
197164 public void addResult (final String id , final BsonValue result ) {
198165 putEntity (id , result , results );
199166 }
@@ -433,35 +400,6 @@ private void initClient(final BsonDocument entity, final String id,
433400 putEntity (id + "-connection-pool-listener" , testConnectionPoolListener , clientConnectionPoolListeners );
434401 }
435402
436- if (entity .containsKey ("storeEventsAsEntities" )) {
437- BsonArray storeEventsAsEntitiesArray = entity .getArray ("storeEventsAsEntities" );
438- for (BsonValue eventValue : storeEventsAsEntitiesArray ) {
439- BsonDocument eventDocument = eventValue .asDocument ();
440- String key = eventDocument .getString ("id" ).getValue ();
441- BsonArray eventList = eventDocument .getArray ("events" );
442- List <BsonDocument > eventDocumentList = synchronizedList (new ArrayList <>());
443- putEntity (key , eventDocumentList , eventsMap );
444-
445- if (eventList .stream ()
446- .map (value -> value .asString ().getValue ())
447- .anyMatch (value -> value .startsWith ("Command" ))) {
448- clientSettingsBuilder .addCommandListener (new EntityCommandListener (eventList .stream ()
449- .map (value -> value .asString ().getValue ())
450- .collect (Collectors .toSet ()),
451- eventDocumentList ));
452- }
453- if (eventList .stream ()
454- .map (value -> value .asString ().getValue ())
455- .anyMatch (value -> value .startsWith ("Pool" ) || value .startsWith ("Connection" ))) {
456- clientSettingsBuilder .
457- applyToConnectionPoolSettings (builder ->
458- builder .addConnectionPoolListener (new EntityConnectionPoolListener (eventList .stream ()
459- .map (value -> value .asString ().getValue ())
460- .collect (Collectors .toSet ()),
461- eventDocumentList )));
462- }
463- }
464- }
465403 clientSettingsBuilder .applyToServerSettings (builder -> {
466404 builder .heartbeatFrequency (50 , TimeUnit .MILLISECONDS );
467405 builder .minHeartbeatFrequency (50 , TimeUnit .MILLISECONDS );
@@ -795,154 +733,4 @@ public void close() {
795733 clientLoggingInterceptors .values ().forEach (TestLoggingInterceptor ::close );
796734 threads .values ().forEach (ExecutorService ::shutdownNow );
797735 }
798-
799- private static class EntityCommandListener implements CommandListener {
800- private final List <BsonDocument > eventDocumentList ;
801- private final Set <String > enabledEvents ;
802-
803- EntityCommandListener (final Set <String > enabledEvents , final List <BsonDocument > eventDocumentList ) {
804- this .eventDocumentList = eventDocumentList ;
805- this .enabledEvents = enabledEvents ;
806- }
807-
808- @ Override
809- public void commandStarted (final CommandStartedEvent event ) {
810- if (enabledEvents .contains ("CommandStartedEvent" )) {
811- eventDocumentList .add (createEventDocument (event , "CommandStartedEvent" )
812- .append ("databaseName" , new BsonString (event .getDatabaseName ())));
813- }
814- }
815-
816- @ Override
817- public void commandSucceeded (final CommandSucceededEvent event ) {
818- if (enabledEvents .contains ("CommandSucceededEvent" )) {
819- eventDocumentList .add (createEventDocument (event , "CommandSucceededEvent" )
820- .append ("duration" , new BsonInt64 (event .getElapsedTime (TimeUnit .MILLISECONDS ))));
821- }
822- }
823-
824- @ Override
825- public void commandFailed (final CommandFailedEvent event ) {
826- if (enabledEvents .contains ("CommandFailedEvent" )) {
827- eventDocumentList .add (createEventDocument (event , "CommandFailedEvent" )
828- .append ("duration" ,
829- new BsonDouble (event .getElapsedTime (TimeUnit .NANOSECONDS ) / 1_000_000_000.0 ))
830- .append ("failure" , new BsonString (event .getThrowable ().toString ())));
831- }
832- }
833-
834- private BsonDocument createEventDocument (final CommandEvent event , final String name ) {
835- return new BsonDocument ()
836- .append ("name" , new BsonString (name ))
837- .append ("observedAt" , new BsonDouble (System .currentTimeMillis () / 1000.0 ))
838- .append ("commandName" , new BsonString (event .getCommandName ()))
839- .append ("requestId" , new BsonInt32 (event .getRequestId ()));
840- }
841- }
842-
843- private static class EntityConnectionPoolListener implements ConnectionPoolListener {
844- private final List <BsonDocument > eventDocumentList ;
845- private final Set <String > enabledEvents ;
846-
847- EntityConnectionPoolListener (final Set <String > enabledEvents , final List <BsonDocument > eventDocumentList ) {
848- this .eventDocumentList = eventDocumentList ;
849- this .enabledEvents = enabledEvents ;
850- }
851-
852- @ Override
853- public void connectionPoolCreated (final ConnectionPoolCreatedEvent event ) {
854- if (enabledEvents .contains ("PoolCreatedEvent" )) {
855- eventDocumentList .add (createEventDocument ("PoolCreatedEvent" , event .getServerId ()));
856- }
857- }
858-
859- @ Override
860- public void connectionPoolCleared (final ConnectionPoolClearedEvent event ) {
861- if (enabledEvents .contains ("PoolClearedEvent" )) {
862- eventDocumentList .add (createEventDocument ("PoolClearedEvent" , event .getServerId ()));
863- }
864- }
865-
866- @ Override
867- public void connectionPoolReady (final ConnectionPoolReadyEvent event ) {
868- if (enabledEvents .contains ("PoolReadyEvent" )) {
869- eventDocumentList .add (createEventDocument ("PoolReadyEvent" , event .getServerId ()));
870- }
871- }
872-
873- @ Override
874- public void connectionPoolClosed (final ConnectionPoolClosedEvent event ) {
875- if (enabledEvents .contains ("PoolClosedEvent" )) {
876- eventDocumentList .add (createEventDocument ("PoolClosedEvent" , event .getServerId ()));
877- }
878- }
879-
880- @ Override
881- public void connectionCheckOutStarted (final ConnectionCheckOutStartedEvent event ) {
882- if (enabledEvents .contains ("ConnectionCheckOutStartedEvent" )) {
883- eventDocumentList .add (createEventDocument ("ConnectionCheckOutStartedEvent" , event .getServerId ()));
884- }
885- }
886-
887- @ Override
888- public void connectionCheckedOut (final ConnectionCheckedOutEvent event ) {
889- if (enabledEvents .contains ("ConnectionCheckedOutEvent" )) {
890- eventDocumentList .add (createEventDocument ("ConnectionCheckedOutEvent" , event .getConnectionId ()));
891- }
892- }
893-
894- @ Override
895- public void connectionCheckOutFailed (final ConnectionCheckOutFailedEvent event ) {
896- if (enabledEvents .contains ("ConnectionCheckOutFailedEvent" )) {
897- eventDocumentList .add (createEventDocument ("ConnectionCheckOutFailedEvent" , event .getServerId ())
898- .append ("reason" , new BsonString (getReasonString (event .getReason ()))));
899- }
900- }
901-
902- @ Override
903- public void connectionCheckedIn (final ConnectionCheckedInEvent event ) {
904- if (enabledEvents .contains ("ConnectionCheckedInEvent" )) {
905- eventDocumentList .add (createEventDocument ("ConnectionCheckedInEvent" , event .getConnectionId ()));
906- }
907- }
908-
909- @ Override
910- public void connectionCreated (final ConnectionCreatedEvent event ) {
911- if (enabledEvents .contains ("ConnectionCreatedEvent" )) {
912- eventDocumentList .add (createEventDocument ("ConnectionCreatedEvent" , event .getConnectionId ()));
913- }
914- }
915-
916- @ Override
917- public void connectionReady (final ConnectionReadyEvent event ) {
918- if (enabledEvents .contains ("ConnectionReadyEvent" )) {
919- eventDocumentList .add (createEventDocument ("ConnectionReadyEvent" , event .getConnectionId ()));
920- }
921- }
922-
923- @ Override
924- public void connectionClosed (final ConnectionClosedEvent event ) {
925- if (enabledEvents .contains ("ConnectionClosedEvent" )) {
926- eventDocumentList .add (createEventDocument ("ConnectionClosedEvent" , event .getConnectionId ())
927- .append ("reason" , new BsonString (getReasonString (event .getReason ()))));
928- }
929- }
930-
931- private BsonDocument createEventDocument (final String name , final ConnectionId connectionId ) {
932- return createEventDocument (name , connectionId .getServerId ())
933- .append ("connectionId" , new BsonString (Long .toString (connectionId .getLocalValue ())));
934- }
935-
936- private BsonDocument createEventDocument (final String name , final ServerId serverId ) {
937- return new BsonDocument ()
938- .append ("name" , new BsonString (name ))
939- .append ("observedAt" , new BsonDouble (System .currentTimeMillis () / 1000.0 ))
940- .append ("address" , new BsonString (getAddressAsString (serverId )));
941- }
942-
943- @ NonNull
944- private String getAddressAsString (final ServerId serverId ) {
945- return serverId .getAddress ().getHost () + ":" + serverId .getAddress ().getPort ();
946- }
947- }
948736}
0 commit comments