diff --git a/agent-testweb/mongodb-plugin-testweb/pom.xml b/agent-testweb/mongodb-plugin-testweb/pom.xml
index 507c59f456a6..4b76e54b7eb9 100644
--- a/agent-testweb/mongodb-plugin-testweb/pom.xml
+++ b/agent-testweb/mongodb-plugin-testweb/pom.xml
@@ -43,7 +43,7 @@
de.flapdoodle.embed
de.flapdoodle.embed.mongo
- 3.4.3
+ ${embed.mongo}
org.mongodb
diff --git a/agent-testweb/mongodb-reactive-plugin-testweb/pom.xml b/agent-testweb/mongodb-reactive-plugin-testweb/pom.xml
index 79bbe9f57cfa..c288fb97e11d 100644
--- a/agent-testweb/mongodb-reactive-plugin-testweb/pom.xml
+++ b/agent-testweb/mongodb-reactive-plugin-testweb/pom.xml
@@ -43,7 +43,7 @@
de.flapdoodle.embed
de.flapdoodle.embed.mongo
- 3.4.3
+ ${embed.mongo}
diff --git a/plugins-it/mongodb-it/pom.xml b/plugins-it/mongodb-it/pom.xml
index 4c8dea4baa92..db67dacc750d 100644
--- a/plugins-it/mongodb-it/pom.xml
+++ b/plugins-it/mongodb-it/pom.xml
@@ -54,7 +54,7 @@
de.flapdoodle.embed
de.flapdoodle.embed.mongo
- 3.4.6
+ ${embed.mongo}
test
diff --git a/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongoDBITBase.java b/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongoDBITBase.java
index 088bec5ab9eb..81d97bed783a 100644
--- a/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongoDBITBase.java
+++ b/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongoDBITBase.java
@@ -16,6 +16,11 @@
package com.navercorp.pinpoint.plugin.mongodb;
+import com.mongodb.WriteConcern;
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoCursor;
+import com.mongodb.client.MongoDatabase;
+import com.mongodb.client.result.DeleteResult;
import com.navercorp.pinpoint.bootstrap.plugin.test.ExpectedAnnotation;
import com.navercorp.pinpoint.bootstrap.plugin.test.PluginTestVerifier;
import com.navercorp.pinpoint.bootstrap.plugin.test.PluginTestVerifierHolder;
@@ -23,19 +28,6 @@
import com.navercorp.pinpoint.plugin.mongo.MongoConstants;
import com.navercorp.pinpoint.plugin.mongo.MongoUtil;
import com.navercorp.pinpoint.plugin.mongo.NormalizedBson;
-
-import com.mongodb.WriteConcern;
-import com.mongodb.client.MongoCollection;
-import com.mongodb.client.MongoCursor;
-import com.mongodb.client.MongoDatabase;
-import com.mongodb.client.result.DeleteResult;
-import de.flapdoodle.embed.mongo.MongodExecutable;
-import de.flapdoodle.embed.mongo.MongodProcess;
-import de.flapdoodle.embed.mongo.MongodStarter;
-import de.flapdoodle.embed.mongo.config.MongodConfig;
-import de.flapdoodle.embed.mongo.config.Net;
-import de.flapdoodle.embed.mongo.distribution.Version;
-import de.flapdoodle.embed.process.runtime.Network;
import org.bson.BsonArray;
import org.bson.BsonBinary;
import org.bson.BsonBinarySubType;
@@ -82,7 +74,7 @@ public abstract class MongoDBITBase {
protected static final String MONGO_EXECUTE_QUERY = "MONGO_EXECUTE_QUERY";
public static MongoDatabase database;
public static String secondCollectionDefaultOption = "ACKNOWLEDGED";
- MongodProcess mongod;
+ MongodServer mongod;
public abstract void setClient();
@@ -95,18 +87,9 @@ abstract void insertComplex(PluginTestVerifier verifier,
String collectionInfo, String collectionOption);
public void startDB() throws Exception {
- MongodStarter starter = MongodStarter.getDefaultInstance();
- MongodConfig mongodConfig = MongodConfig.builder()
- .version(Version.Main.PRODUCTION)
- .net(new Net(MongoDBITConstants.BIND_ADDRESS, MongoDBITConstants.PORT, Network.localhostIsIPv6()))
- .build();
-
- MongodExecutable mongodExecutable = starter.prepare(mongodConfig);
-// replaced via awaitCompleted()
-// //give time for previous DB close to finish and port to be released"
-// Thread.sleep(200L);
+ mongod = new MongodServer();
+ mongod.start();
- mongod = mongodExecutable.start();
setClient();
}
diff --git a/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongodServer.java b/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongodServer.java
new file mode 100644
index 000000000000..3f02dfe904d3
--- /dev/null
+++ b/plugins-it/mongodb-it/src/test/java/com/navercorp/pinpoint/plugin/mongodb/MongodServer.java
@@ -0,0 +1,87 @@
+package com.navercorp.pinpoint.plugin.mongodb;
+
+import de.flapdoodle.embed.mongo.MongodExecutable;
+import de.flapdoodle.embed.mongo.MongodProcess;
+import de.flapdoodle.embed.mongo.MongodStarter;
+import de.flapdoodle.embed.mongo.config.Defaults;
+import de.flapdoodle.embed.mongo.config.MongodConfig;
+import de.flapdoodle.embed.mongo.config.Net;
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.mongo.packageresolver.Command;
+import de.flapdoodle.embed.process.config.RuntimeConfig;
+import de.flapdoodle.embed.process.extract.DirectoryAndExecutableNaming;
+import de.flapdoodle.embed.process.extract.ImmutableDirectoryAndExecutableNaming;
+import de.flapdoodle.embed.process.extract.NoopTempNaming;
+import de.flapdoodle.embed.process.io.directories.FixedPath;
+import de.flapdoodle.embed.process.runtime.Network;
+import de.flapdoodle.embed.process.store.ImmutableExtractedArtifactStore;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+public class MongodServer {
+
+ private final MongodExecutable mongodExecutable;
+ private MongodProcess mongod;
+
+ public MongodServer() throws IOException {
+ MongodStarter starter = newStarter();
+
+ MongodConfig mongodConfig = MongodConfig.builder()
+ .version(Version.Main.V4_4)
+ .net(new Net(MongoDBITConstants.BIND_ADDRESS, MongoDBITConstants.PORT, Network.localhostIsIPv6()))
+ .build();
+ this.mongodExecutable = starter.prepare(mongodConfig);
+ }
+
+ public void start() throws IOException {
+ mongod = mongodExecutable.start();
+ }
+
+ private String getTempPath() throws IOException {
+ URL resource = MongoDBITBase.class.getProtectionDomain().getCodeSource().getLocation();
+ if (resource == null) {
+ throw new IOException("build class path not found");
+ }
+ try {
+ Path target = Paths.get(resource.toURI()).getParent();
+ Path mongodBinary = target.resolve("mongod_mock");
+ return mongodBinary.toString();
+ } catch (URISyntaxException e) {
+ throw new IOException(e);
+ }
+ }
+
+ private MongodStarter newStarter() throws IOException {
+ Command command = Command.MongoD;
+
+ ImmutableDirectoryAndExecutableNaming temp = DirectoryAndExecutableNaming.builder()
+ .directory(new FixedPath(getTempPath()))
+ .executableNaming(new NoopTempNaming())
+ .build();
+ ImmutableExtractedArtifactStore artifactStore = Defaults.extractedArtifactStoreFor(command)
+ .withTemp(temp);
+
+ RuntimeConfig runtimeConfig = Defaults.runtimeConfigFor(command)
+ .artifactStore(artifactStore)
+ .build();
+ return MongodStarter.getInstance(runtimeConfig);
+
+ }
+
+ public boolean isProcessRunning() {
+ if (mongod == null) {
+ return false;
+ }
+ return this.mongod.isProcessRunning();
+ }
+
+ public void stop() {
+ if (mongod != null) {
+ mongod.stop();
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 19d4fbcf2bce..30cd85aebf05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -197,6 +197,8 @@
4.2.1
2.13.0
+ 3.4.6
+
1.16.2