Skip to content

Commit 42be20b

Browse files
JoakimLofgrenpavolloffay
authored andcommitted
Use mongo.getServerAddressList() instead of getAllAddress (#256)
This allows a "mongodb+srv://" URI to be used. Use embedded mongo in tests as getServerAddressList requires a working connection to return a proper list of addresses. Fixes #255
1 parent 5259b98 commit 42be20b

File tree

4 files changed

+35
-5
lines changed

4 files changed

+35
-5
lines changed

instrument-starters/opentracing-spring-cloud-mongo-starter/src/main/java/io/opentracing/contrib/spring/cloud/mongo/TracingMongoClientPostProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
3737
final TracingCommandListener commandListener = new TracingCommandListener.Builder(tracer)
3838
.build();
3939

40-
return new TracingMongoClient(commandListener, client.getAllAddress(), client.getCredentialsList(), client.getMongoClientOptions());
40+
return new TracingMongoClient(commandListener, client.getServerAddressList(), client.getCredentialsList(), client.getMongoClientOptions());
4141
}
4242

4343
return bean;

instrument-starters/opentracing-spring-cloud-mongo-starter/src/test/java/io/opentracing/contrib/spring/cloud/mongo/MongoTracingAutoConfigurationTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.junit.Test;
2424
import org.springframework.boot.autoconfigure.AutoConfigurations;
2525
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
26+
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
2627
import org.springframework.boot.context.annotation.UserConfigurations;
2728
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2829
import org.springframework.context.annotation.Bean;
@@ -36,8 +37,12 @@ public class MongoTracingAutoConfigurationTest {
3637
@Test
3738
public void createsTracingPostProcessor() {
3839
final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
40+
.withPropertyValues("spring.data.mongodb.port=27017") // Otherwise a random embedded mongo port is used
3941
.withConfiguration(UserConfigurations.of(TracerConfig.class, MongoConfig.class))
40-
.withConfiguration(AutoConfigurations.of(MongoTracingAutoConfiguration.class));
42+
.withConfiguration(AutoConfigurations.of(
43+
MongoTracingAutoConfiguration.class,
44+
EmbeddedMongoAutoConfiguration.class
45+
));
4146

4247
contextRunner.run(context -> Assertions.assertThat(context).hasSingleBean(TracingMongoClientPostProcessor.class));
4348
}
@@ -73,10 +78,12 @@ public void doesNotCreateTracingPostProcessorWhenDisabled() {
7378
@Test
7479
public void createsTracingPostProcessorWhenAutoConfigured() {
7580
final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
81+
.withPropertyValues("spring.data.mongodb.port=27017") // Otherwise a random embedded mongo port is used
7682
.withConfiguration(AutoConfigurations.of(
7783
MongoTracingAutoConfiguration.class,
7884
TracerAutoConfiguration.class,
79-
MongoAutoConfiguration.class
85+
MongoAutoConfiguration.class,
86+
EmbeddedMongoAutoConfiguration.class
8087
));
8188

8289
contextRunner.run(context -> Assertions.assertThat(context).hasSingleBean(TracingMongoClientPostProcessor.class));

instrument-starters/opentracing-spring-cloud-mongo-starter/src/test/java/io/opentracing/contrib/spring/cloud/mongo/TracingMongoClientPostProcessorTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,17 @@
1818
import com.mongodb.MongoClient;
1919
import com.mongodb.MongoClientOptions;
2020
import com.mongodb.MongoClientURI;
21+
import de.flapdoodle.embed.mongo.MongodExecutable;
22+
import de.flapdoodle.embed.mongo.MongodProcess;
23+
import de.flapdoodle.embed.mongo.MongodStarter;
24+
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
25+
import de.flapdoodle.embed.mongo.config.Net;
26+
import de.flapdoodle.embed.mongo.distribution.Version;
27+
import de.flapdoodle.embed.process.runtime.Network;
2128
import io.opentracing.Tracer;
2229
import io.opentracing.contrib.mongo.TracingMongoClient;
30+
import java.io.IOException;
31+
import org.junit.After;
2332
import org.junit.Before;
2433
import org.junit.Test;
2534
import org.mockito.Mock;
@@ -34,9 +43,23 @@ public class TracingMongoClientPostProcessorTest {
3443

3544
private TracingMongoClientPostProcessor processor;
3645

46+
private MongodProcess process;
47+
3748
@Before
38-
public void setup() {
49+
public void setup() throws IOException {
3950
processor = new TracingMongoClientPostProcessor(tracer);
51+
52+
MongodStarter starter = MongodStarter.getDefaultInstance();
53+
MongodExecutable executable = starter.prepare(new MongodConfigBuilder()
54+
.version(Version.Main.PRODUCTION)
55+
.net(new Net(27017, Network.localhostIsIPv6()))
56+
.build());
57+
process = executable.start();
58+
}
59+
60+
@After
61+
public void tearDown() {
62+
process.stop();
4063
}
4164

4265
@Test

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
<version.org.springframework.boot>2.1.5.RELEASE</version.org.springframework.boot>
9191
<version.org.springframework.cloud-spring-cloud-dependencies>Greenwich.SR1</version.org.springframework.cloud-spring-cloud-dependencies>
9292
<version.org.awaitility-awaitility>3.0.0</version.org.awaitility-awaitility>
93-
<version.de.flapdoodle-embed.mongo>2.0.3</version.de.flapdoodle-embed.mongo>
93+
<version.de.flapdoodle-embed.mongo>2.2.0</version.de.flapdoodle-embed.mongo>
9494
<version.cz.jirutka.spring-embedmongo-spring>1.3.1</version.cz.jirutka.spring-embedmongo-spring>
9595
<version.org.slf4j-log4j-over-slf4j>1.7.25</version.org.slf4j-log4j-over-slf4j>
9696
<version.reactor-core>3.2.8.RELEASE</version.reactor-core>

0 commit comments

Comments
 (0)