66
66
import com .mongodb .lang .NonNull ;
67
67
import com .mongodb .lang .Nullable ;
68
68
import com .mongodb .logging .TestLoggingInterceptor ;
69
+ import com .mongodb .tracing .MicrometerTracer ;
70
+ import io .micrometer .tracing .Tracer ;
71
+ import io .micrometer .tracing .test .simple .SimpleTracer ;
69
72
import org .bson .BsonArray ;
70
73
import org .bson .BsonBoolean ;
71
74
import org .bson .BsonDocument ;
@@ -112,7 +115,7 @@ public final class Entities {
112
115
private static final Set <String > SUPPORTED_CLIENT_ENTITY_OPTIONS = new HashSet <>(
113
116
asList (
114
117
"id" , "uriOptions" , "serverApi" , "useMultipleMongoses" , "storeEventsAsEntities" ,
115
- "observeEvents" , "observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" ));
118
+ "observeEvents" , "observeLogMessages" , "observeSensitiveCommands" , "ignoreCommandMonitoringEvents" , "tracing" ));
116
119
private final Set <String > entityNames = new HashSet <>();
117
120
private final Map <String , ExecutorService > threads = new HashMap <>();
118
121
private final Map <String , ArrayList <Future <?>>> tasks = new HashMap <>();
@@ -126,6 +129,7 @@ public final class Entities {
126
129
private final Map <String , ClientEncryption > clientEncryptions = new HashMap <>();
127
130
private final Map <String , TestCommandListener > clientCommandListeners = new HashMap <>();
128
131
private final Map <String , TestLoggingInterceptor > clientLoggingInterceptors = new HashMap <>();
132
+ private final Map <String , Tracer > clientTracing = new HashMap <>();
129
133
private final Map <String , TestConnectionPoolListener > clientConnectionPoolListeners = new HashMap <>();
130
134
private final Map <String , TestServerListener > clientServerListeners = new HashMap <>();
131
135
private final Map <String , TestClusterListener > clientClusterListeners = new HashMap <>();
@@ -294,6 +298,10 @@ public TestLoggingInterceptor getClientLoggingInterceptor(final String id) {
294
298
return getEntity (id + "-logging-interceptor" , clientLoggingInterceptors , "logging interceptor" );
295
299
}
296
300
301
+ public Tracer getClientTracer (final String id ) {
302
+ return getEntity (id + "-tracing" , clientTracing , "micrometer tracing" );
303
+ }
304
+
297
305
public TestConnectionPoolListener getConnectionPoolListener (final String id ) {
298
306
return getEntity (id + "-connection-pool-listener" , clientConnectionPoolListeners , "connection pool listener" );
299
307
}
@@ -604,6 +612,14 @@ private void initClient(final BsonDocument entity, final String id,
604
612
}
605
613
clientSettingsBuilder .serverApi (serverApiBuilder .build ());
606
614
}
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
+
607
623
MongoClientSettings clientSettings = clientSettingsBuilder .build ();
608
624
609
625
if (entity .containsKey ("observeLogMessages" )) {
0 commit comments