Skip to content

Commit

Permalink
[#8911] Change the temp directory of mongod
Browse files Browse the repository at this point in the history
  • Loading branch information
emeroad committed Jun 15, 2022
1 parent 725f3be commit 1dd05c8
Show file tree
Hide file tree
Showing 6 changed files with 100 additions and 28 deletions.
2 changes: 1 addition & 1 deletion agent-testweb/mongodb-plugin-testweb/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>3.4.3</version>
<version>${embed.mongo}</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
Expand Down
2 changes: 1 addition & 1 deletion agent-testweb/mongodb-reactive-plugin-testweb/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>3.4.3</version>
<version>${embed.mongo}</version>
</dependency>

<dependency>
Expand Down
2 changes: 1 addition & 1 deletion plugins-it/mongodb-it/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<version>3.4.6</version>
<version>${embed.mongo}</version>
<scope>test</scope>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,18 @@

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;
import com.navercorp.pinpoint.common.util.StringStringValue;
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;
Expand Down Expand Up @@ -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();

Expand All @@ -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();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
}
2 changes: 2 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,8 @@
<curator.framework.version>4.2.1</curator.framework.version>
<curator.test.version>2.13.0</curator.test.version>

<embed.mongo>3.4.6</embed.mongo>

<testcontainers.version>1.16.2</testcontainers.version>

<!-- maven-plugin -->
Expand Down

0 comments on commit 1dd05c8

Please sign in to comment.