38
38
import static com .mongodb .ClusterFixture .sleep ;
39
39
import static org .assertj .core .api .AssertionsForClassTypes .assertThat ;
40
40
import static org .junit .jupiter .api .Assertions .assertFalse ;
41
+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
41
42
import static org .junit .jupiter .api .Assumptions .assumeFalse ;
42
43
43
44
/**
@@ -92,12 +93,16 @@ void shouldAppendToPreviousMetadataWhenUpdatedAfterInitialization() {
92
93
93
94
//then
94
95
//TODO change get() to orElseThrow
95
- clientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
96
- driverInformation = clientMetadata .getDocument ("driver" );
96
+ BsonDocument updatedClientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
97
+ BsonDocument updatedDriverInformation = updatedClientMetadata .getDocument ("driver" );
97
98
98
- assertThat (driverInformation .getString ("name" ).getValue ()).isEqualTo (generatedDriverName + "|Framework" );
99
- assertThat (driverInformation .getString ("version" ).getValue ()).isEqualTo (generatedVersionName + "|1.0" );
100
- assertThat (clientMetadata .getString ("platform" ).getValue ()).isEqualTo (generatedPlatformName + "|Framework Platform" );
99
+ assertThat (updatedDriverInformation .getString ("name" ).getValue ()).isEqualTo (generatedDriverName + "|Framework" );
100
+ assertThat (updatedDriverInformation .getString ("version" ).getValue ()).isEqualTo (generatedVersionName + "|1.0" );
101
+ assertThat (updatedClientMetadata .getString ("platform" ).getValue ()).isEqualTo (generatedPlatformName + "|Framework Platform" );
102
+
103
+ assertThat (withRemovedKeys (updatedClientMetadata , "driver" , "platform" ))
104
+ .usingRecursiveAssertion ()
105
+ .isEqualTo (withRemovedKeys (clientMetadata , "driver" , "platform" ));
101
106
}
102
107
}
103
108
@@ -110,12 +115,12 @@ void shouldAppendToDefaultClientMetadataWhenUpdatedAfterInitialization() {
110
115
.build ())) {
111
116
112
117
//TODO change get() to orElseThrow
113
- BsonDocument clientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
118
+ BsonDocument initialClientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
114
119
115
- BsonDocument generatedDriverInformation = clientMetadata .getDocument ("driver" );
120
+ BsonDocument generatedDriverInformation = initialClientMetadata .getDocument ("driver" );
116
121
String generatedDriverName = generatedDriverInformation .get ("name" ).asString ().getValue ();
117
122
String generatedVersionName = generatedDriverInformation .get ("version" ).asString ().getValue ();
118
- String generatedPlatformName = clientMetadata .get ("platform" ).asString ().getValue ();
123
+ String generatedPlatformName = initialClientMetadata .get ("platform" ).asString ().getValue ();
119
124
120
125
//when
121
126
sleep (5 ); // wait for connection to become idle
@@ -127,12 +132,16 @@ void shouldAppendToDefaultClientMetadataWhenUpdatedAfterInitialization() {
127
132
128
133
//then
129
134
//TODO change get() to orElseThrow
130
- clientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
131
- generatedDriverInformation = clientMetadata .getDocument ("driver" );
135
+ BsonDocument updatedClientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
136
+ BsonDocument updatedDriverInformation = initialClientMetadata .getDocument ("driver" );
137
+
138
+ assertThat (updatedDriverInformation .getString ("name" ).getValue ()).isEqualTo (generatedDriverName + "|Framework" );
139
+ assertThat (updatedDriverInformation .getString ("version" ).getValue ()).endsWith (generatedVersionName + "|1.0" );
140
+ assertThat (updatedClientMetadata .getString ("platform" ).getValue ()).endsWith (generatedPlatformName + "|Framework Platform" );
132
141
133
- assertThat (generatedDriverInformation . getString ( "name" ). getValue ()). isEqualTo ( generatedDriverName + "|Framework" );
134
- assertThat ( generatedDriverInformation . getString ( "version" ). getValue ()). endsWith ( generatedVersionName + "|1.0" );
135
- assertThat ( clientMetadata . getString ( "platform" ). getValue ()). endsWith ( generatedPlatformName + "|Framework Platform" );
142
+ assertThat (withRemovedKeys ( updatedClientMetadata , "driver" , "platform" ))
143
+ . usingRecursiveAssertion ()
144
+ . isEqualTo ( withRemovedKeys ( initialClientMetadata , "driver" , "platform" ) );
136
145
}
137
146
}
138
147
@@ -151,26 +160,42 @@ void shouldNotCloseExistingConnectionsToUpdateMetadata() {
151
160
//TODO change get() to orElseThrow
152
161
BsonDocument clientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
153
162
BsonDocument driverInformation = clientMetadata .getDocument ("driver" );
154
- String generatedDriverName = driverInformation .get ("name" ).asString ().getValue ();
155
- String generatedVersionName = driverInformation .get ("version" ).asString ().getValue ();
156
- String generatedPlatformName = clientMetadata .get ("platform" ).asString ().getValue ();
163
+ assertNotNull (driverInformation );
157
164
158
165
//when
159
166
mongoClient .updateMetadata (initialWrappingLibraryDriverInformation );
160
167
161
168
//then
162
169
assertThat (executePingAndCaptureMetadataHandshake (mongoClient )).isEmpty ();
163
- driverInformation = clientMetadata .getDocument ("driver" );
164
-
165
- assertThat (driverInformation .getString ("name" ).getValue ()).isEqualTo (generatedDriverName );
166
- assertThat (driverInformation .getString ("version" ).getValue ()).isEqualTo (generatedVersionName );
167
- assertThat (clientMetadata .getString ("platform" ).getValue ()).isEqualTo (generatedPlatformName );
168
-
169
170
assertFalse (connectionPoolListener .getEvents ().stream ().anyMatch (ConnectionClosedEvent .class ::isInstance ),
170
171
"Expected no connection closed events" );
171
172
}
172
173
}
173
174
175
+ @ Test
176
+ void shouldAppendAppendProvidedMetadatDuringInitialization () {
177
+ //given
178
+ MongoDriverInformation initialWrappingLibraryDriverInformation = MongoDriverInformation .builder ()
179
+ .driverName ("library" )
180
+ .driverVersion ("1.2" )
181
+ .driverPlatform ("Library Platform" )
182
+ .build ();
183
+
184
+ try (MongoClient mongoClient = createMongoClient (initialWrappingLibraryDriverInformation , getMongoClientSettingsBuilder ()
185
+ .build ())) {
186
+
187
+ //when
188
+ //TODO change get() to orElseThrow
189
+ BsonDocument clientMetadata = executePingAndCaptureMetadataHandshake (mongoClient ).get ();
190
+ BsonDocument driverInformation = clientMetadata .getDocument ("driver" );
191
+
192
+ //then
193
+ assertThat (driverInformation .get ("name" ).asString ().getValue ()).endsWith ("|library" );
194
+ assertThat (driverInformation .get ("version" ).asString ().getValue ()).endsWith ("|1.2" );
195
+ assertThat (clientMetadata .get ("platform" ).asString ().getValue ()).endsWith ("|Library Platform" );
196
+ }
197
+ }
198
+
174
199
private Optional <BsonDocument > executePingAndCaptureMetadataHandshake (final MongoClient mongoClient ) {
175
200
commandListener .reset ();
176
201
mongoClient .getDatabase ("admin" )
@@ -197,5 +222,14 @@ protected MongoClientSettings.Builder getMongoClientSettingsBuilder() {
197
222
public void tearDown () {
198
223
InternalStreamConnection .setRecordEverything (false );
199
224
}
225
+
226
+ private static BsonDocument withRemovedKeys (final BsonDocument updatedClientMetadata ,
227
+ final String ... keysToFilter ) {
228
+ BsonDocument clone = updatedClientMetadata .clone ();
229
+ for (String keyToRemove : keysToFilter ) {
230
+ clone .remove (keyToRemove );
231
+ }
232
+ return clone ;
233
+ }
200
234
}
201
235
0 commit comments