Skip to content

Commit 61192d8

Browse files
committed
Update tests.
JAVA-5870
1 parent 3f5fc91 commit 61192d8

File tree

2 files changed

+63
-26
lines changed

2 files changed

+63
-26
lines changed

driver-kotlin-coroutine/src/test/kotlin/com/mongodb/kotlin/client/coroutine/MongoClientTest.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ import com.mongodb.ClientSessionOptions
1919
import com.mongodb.MongoNamespace
2020
import com.mongodb.client.model.bulk.ClientBulkWriteOptions
2121
import com.mongodb.client.model.bulk.ClientNamespacedWriteModel
22-
import com.mongodb.reactivestreams.client.MongoClient as JMongoClient
23-
import kotlin.reflect.full.declaredFunctions
24-
import kotlin.test.assertEquals
2522
import kotlinx.coroutines.runBlocking
2623
import org.bson.BsonDocument
2724
import org.bson.Document
@@ -36,6 +33,9 @@ import org.mockito.kotlin.verify
3633
import org.mockito.kotlin.verifyNoMoreInteractions
3734
import org.mockito.kotlin.whenever
3835
import reactor.core.publisher.Mono
36+
import kotlin.reflect.full.declaredFunctions
37+
import kotlin.test.assertEquals
38+
import com.mongodb.reactivestreams.client.MongoClient as JMongoClient
3939

4040
class MongoClientTest {
4141

@@ -44,7 +44,10 @@ class MongoClientTest {
4444

4545
@Test
4646
fun shouldHaveTheSameMethods() {
47-
val jMongoClientFunctions = JMongoClient::class.declaredFunctions.map { it.name }.toSet()
47+
val jMongoClientFunctions = JMongoClient::class.declaredFunctions.map { it.name }
48+
// TODO-JAVA-5871 remove .filterNot { it == "updateMetadata" }
49+
.filterNot { it == "updateMetadata" }
50+
.toSet()
4851
val kMongoClientFunctions = MongoClient::class.declaredFunctions.map { it.name }.toSet()
4952

5053
assertEquals(jMongoClientFunctions, kMongoClientFunctions)

driver-sync/src/test/functional/com/mongodb/client/AbstractClientMetadataProseTest.java

Lines changed: 56 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import static com.mongodb.ClusterFixture.sleep;
3939
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
4040
import static org.junit.jupiter.api.Assertions.assertFalse;
41+
import static org.junit.jupiter.api.Assertions.assertNotNull;
4142
import static org.junit.jupiter.api.Assumptions.assumeFalse;
4243

4344
/**
@@ -92,12 +93,16 @@ void shouldAppendToPreviousMetadataWhenUpdatedAfterInitialization() {
9293

9394
//then
9495
//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");
9798

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"));
101106
}
102107
}
103108

@@ -110,12 +115,12 @@ void shouldAppendToDefaultClientMetadataWhenUpdatedAfterInitialization() {
110115
.build())) {
111116

112117
//TODO change get() to orElseThrow
113-
BsonDocument clientMetadata = executePingAndCaptureMetadataHandshake(mongoClient).get();
118+
BsonDocument initialClientMetadata = executePingAndCaptureMetadataHandshake(mongoClient).get();
114119

115-
BsonDocument generatedDriverInformation = clientMetadata.getDocument("driver");
120+
BsonDocument generatedDriverInformation = initialClientMetadata.getDocument("driver");
116121
String generatedDriverName = generatedDriverInformation.get("name").asString().getValue();
117122
String generatedVersionName = generatedDriverInformation.get("version").asString().getValue();
118-
String generatedPlatformName = clientMetadata.get("platform").asString().getValue();
123+
String generatedPlatformName = initialClientMetadata.get("platform").asString().getValue();
119124

120125
//when
121126
sleep(5); // wait for connection to become idle
@@ -127,12 +132,16 @@ void shouldAppendToDefaultClientMetadataWhenUpdatedAfterInitialization() {
127132

128133
//then
129134
//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");
132141

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"));
136145
}
137146
}
138147

@@ -151,26 +160,42 @@ void shouldNotCloseExistingConnectionsToUpdateMetadata() {
151160
//TODO change get() to orElseThrow
152161
BsonDocument clientMetadata = executePingAndCaptureMetadataHandshake(mongoClient).get();
153162
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);
157164

158165
//when
159166
mongoClient.updateMetadata(initialWrappingLibraryDriverInformation);
160167

161168
//then
162169
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-
169170
assertFalse(connectionPoolListener.getEvents().stream().anyMatch(ConnectionClosedEvent.class::isInstance),
170171
"Expected no connection closed events");
171172
}
172173
}
173174

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+
174199
private Optional<BsonDocument> executePingAndCaptureMetadataHandshake(final MongoClient mongoClient) {
175200
commandListener.reset();
176201
mongoClient.getDatabase("admin")
@@ -197,5 +222,14 @@ protected MongoClientSettings.Builder getMongoClientSettingsBuilder() {
197222
public void tearDown() {
198223
InternalStreamConnection.setRecordEverything(false);
199224
}
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+
}
200234
}
201235

0 commit comments

Comments
 (0)