diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/MongoDbFactoryCloudConfigTestHelper.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/MongoDbFactoryCloudConfigTestHelper.java index 846839e..4d56143 100644 --- a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/MongoDbFactoryCloudConfigTestHelper.java +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/MongoDbFactoryCloudConfigTestHelper.java @@ -3,12 +3,12 @@ package org.springframework.cloud.config; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import com.mongodb.MongoClient; -import com.mongodb.WriteConcern; - import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.test.util.ReflectionTestUtils; +import com.mongodb.MongoClient; +import com.mongodb.WriteConcern; + /** * * @author Ramnivas Laddad @@ -16,7 +16,7 @@ import org.springframework.test.util.ReflectionTestUtils; */ public class MongoDbFactoryCloudConfigTestHelper { - public static void assertConfigProperties(MongoDbFactory connector, Integer writeConcernW, Integer connectionsPerHost, Integer maxWaitTime) { + public static void assertConfigProperties(MongoDbFactory connector, String writeConcern, Integer connectionsPerHost, Integer maxWaitTime) { if (connectionsPerHost == null) { connectionsPerHost = 100; // default } @@ -25,11 +25,7 @@ public class MongoDbFactoryCloudConfigTestHelper { } assertNotNull(connector); - WriteConcern writeConcern = (WriteConcern) ReflectionTestUtils.getField(connector, "writeConcern"); - if (writeConcernW != null) { - assertNotNull(writeConcern); - assertEquals(writeConcernW.intValue(), writeConcern.getW()); - } + assertEquals(ReflectionTestUtils.getField(connector, "writeConcern"), writeConcern == null ? null : WriteConcern.valueOf(writeConcern)); MongoClient mongoClient = (MongoClient) ReflectionTestUtils.getField(connector, "mongo"); assertEquals(connectionsPerHost.intValue(), mongoClient.getMongoClientOptions().getConnectionsPerHost()); diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/MongoDbFactoryJavaConfigTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/MongoDbFactoryJavaConfigTest.java index b3e2918..073cd35 100644 --- a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/MongoDbFactoryJavaConfigTest.java +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/java/MongoDbFactoryJavaConfigTest.java @@ -32,7 +32,7 @@ public class MongoDbFactoryJavaConfigTest extends AbstractServiceJavaConfigTest< getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service")); MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWait200_WriteConcernNone", getConnectorType()); - MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, -1, 50, 200); + MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, "none", 50, 200); } @Test @@ -41,7 +41,7 @@ public class MongoDbFactoryJavaConfigTest extends AbstractServiceJavaConfigTest< getTestApplicationContext(MongoDbFactoryConfigWithServiceConfig.class, createService("my-service")); MongoDbFactory connector = testContext.getBean("connectionPerHost50_MaxWait200_WriteConcernSafe", getConnectorType()); - MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, 1, 50, 200); + MongoDbFactoryCloudConfigTestHelper.assertConfigProperties(connector, "safe", 50, 200); } @Test diff --git a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/xml/MongoDbFactoryXmlConfigTest.java b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/xml/MongoDbFactoryXmlConfigTest.java index 50c2704..94f70a9 100644 --- a/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/xml/MongoDbFactoryXmlConfigTest.java +++ b/spring-cloud-spring-service-connector/src/test/java/org/springframework/cloud/config/xml/MongoDbFactoryXmlConfigTest.java @@ -35,7 +35,7 @@ public class MongoDbFactoryXmlConfigTest extends AbstractServiceXmlConfigTest addresses = mongo.getAllAddress(); + List addresses = extractServerAddresses(mongo); assertEquals(1, addresses.size()); ServerAddress address = addresses.get(0); @@ -77,7 +80,7 @@ public class MongoServiceConnectorCreatorTest { MongoClient mongo = (MongoClient) ReflectionTestUtils.getField(mongoDbFactory, "mongo"); assertNotNull(mongo); - List addresses = mongo.getAllAddress(); + List addresses = extractServerAddresses(mongo); assertEquals(3, addresses.size()); MongoCredential credentials = mongo.getCredentialsList().get(0); @@ -99,4 +102,19 @@ public class MongoServiceConnectorCreatorTest { assertEquals(TEST_HOST_2, address3.getHost()); assertEquals(TEST_PORT, address3.getPort()); } + + @SuppressWarnings("unchecked") + private List extractServerAddresses(MongoClient client) { + if (ClassUtils.isPresent("com.mongodb.connection.Cluster", + getClass().getClassLoader())) { + Object cluster = ReflectionTestUtils.getField(client, "cluster"); + Object clusterSettings = ReflectionTestUtils.getField(cluster, "settings"); + Method getHostsMethod = ReflectionUtils.findMethod(clusterSettings.getClass(), + "getHosts"); + return (List) ReflectionUtils.invokeMethod(getHostsMethod, + clusterSettings); + } + return client.getAllAddress(); + } + }