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