6666import com .mongodb .lang .NonNull ;
6767import com .mongodb .lang .Nullable ;
6868import com .mongodb .logging .TestLoggingInterceptor ;
69+ import com .mongodb .tracing .MicrometerTracer ;
70+ import io .micrometer .tracing .Tracer ;
71+ import io .micrometer .tracing .test .simple .SimpleTracer ;
6972import org .bson .BsonArray ;
7073import org .bson .BsonBoolean ;
7174import org .bson .BsonDocument ;
@@ -112,7 +115,7 @@ public final class Entities {
112115 private static final Set <String > SUPPORTED_CLIENT_ENTITY_OPTIONS = new HashSet <>(
113116 asList (
114117 "id" , "uriOptions" , "serverApi" , "useMultipleMongoses" , "storeEventsAsEntities" ,
115- "observeEvents" , "observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" ));
118+ "observeEvents" , "observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" , "tracing" ));
116119 private final Set <String > entityNames = new HashSet <>();
117120 private final Map <String , ExecutorService > threads = new HashMap <>();
118121 private final Map <String , ArrayList <Future <?>>> tasks = new HashMap <>();
@@ -126,6 +129,7 @@ public final class Entities {
126129 private final Map <String , ClientEncryption > clientEncryptions = new HashMap <>();
127130 private final Map <String , TestCommandListener > clientCommandListeners = new HashMap <>();
128131 private final Map <String , TestLoggingInterceptor > clientLoggingInterceptors = new HashMap <>();
132+ private final Map <String , Tracer > clientTracing = new HashMap <>();
129133 private final Map <String , TestConnectionPoolListener > clientConnectionPoolListeners = new HashMap <>();
130134 private final Map <String , TestServerListener > clientServerListeners = new HashMap <>();
131135 private final Map <String , TestClusterListener > clientClusterListeners = new HashMap <>();
@@ -294,6 +298,10 @@ public TestLoggingInterceptor getClientLoggingInterceptor(final String id) {
294298 return getEntity (id + "-logging-interceptor" , clientLoggingInterceptors , "logging interceptor" );
295299 }
296300
301+ public Tracer getClientTracer (final String id ) {
302+ return getEntity (id + "-tracing" , clientTracing , "micrometer tracing" );
303+ }
304+
297305 public TestConnectionPoolListener getConnectionPoolListener (final String id ) {
298306 return getEntity (id + "-connection-pool-listener" , clientConnectionPoolListeners , "connection pool listener" );
299307 }
@@ -604,6 +612,14 @@ private void initClient(final BsonDocument entity, final String id,
604612 }
605613 clientSettingsBuilder .serverApi (serverApiBuilder .build ());
606614 }
615+
616+ if (entity .containsKey ("tracing" ) && entity .getBoolean ("tracing" ).getValue ()) {
617+ Tracer tracer = new SimpleTracer ();
618+ putEntity (id + "-tracing" , tracer , clientTracing );
619+
620+ clientSettingsBuilder .tracer (new MicrometerTracer (tracer ));
621+ }
622+
607623 MongoClientSettings clientSettings = clientSettingsBuilder .build ();
608624
609625 if (entity .containsKey ("observeLogMessages" )) {
0 commit comments