Upgrade to Flapdoodle 3.0
This commit is contained in:
@@ -37,10 +37,6 @@
|
||||
<module>util</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<embedded-mongo.version>2.1.1</embedded-mongo.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
|
||||
@@ -16,19 +16,18 @@
|
||||
package example.springdata.mongodb.util;
|
||||
|
||||
import de.flapdoodle.embed.mongo.Command;
|
||||
import de.flapdoodle.embed.mongo.config.IMongoCmdOptions;
|
||||
import de.flapdoodle.embed.mongo.config.IMongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.IMongosConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongoCmdOptionsBuilder;
|
||||
import de.flapdoodle.embed.mongo.config.MongodConfigBuilder;
|
||||
import de.flapdoodle.embed.mongo.config.MongosConfigBuilder;
|
||||
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.ImmutableMongosConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongoCmdOptions;
|
||||
import de.flapdoodle.embed.mongo.config.MongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongosConfig;
|
||||
import de.flapdoodle.embed.mongo.config.Net;
|
||||
import de.flapdoodle.embed.mongo.config.Storage;
|
||||
import de.flapdoodle.embed.mongo.distribution.Feature;
|
||||
import de.flapdoodle.embed.mongo.distribution.IFeatureAwareVersion;
|
||||
import de.flapdoodle.embed.mongo.distribution.Versions;
|
||||
import de.flapdoodle.embed.process.config.io.ProcessOutput;
|
||||
import de.flapdoodle.embed.process.distribution.GenericVersion;
|
||||
import de.flapdoodle.embed.process.distribution.Version;
|
||||
import de.flapdoodle.embed.process.io.Processors;
|
||||
import de.flapdoodle.embed.process.runtime.Network;
|
||||
|
||||
@@ -68,7 +67,7 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
|
||||
private static final String STORAGE_ENGINE = "wiredTiger";
|
||||
|
||||
private static final IFeatureAwareVersion VERSION = Versions.withFeatures(new GenericVersion("3.7.9"),
|
||||
private static final IFeatureAwareVersion VERSION = Versions.withFeatures(Version.of("3.7.9"),
|
||||
Feature.ONLY_WITH_SSL, Feature.ONLY_64BIT, Feature.NO_HTTP_INTERFACE_ARG, Feature.STORAGE_ENGINE,
|
||||
Feature.MONGOS_CONFIGDB_SET_STYLE, Feature.NO_CHUNKSIZE_ARG);
|
||||
|
||||
@@ -302,12 +301,12 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
|
||||
private void doStart() {
|
||||
|
||||
Map<String, List<IMongodConfig>> replicaSets = new LinkedHashMap<>();
|
||||
Map<String, List<MongodConfig>> replicaSets = new LinkedHashMap<>();
|
||||
replicaSets.put(configServerReplicaSetName, initConfigServers());
|
||||
replicaSets.put(replicaSetName, initReplicaSet());
|
||||
|
||||
// create mongos
|
||||
IMongosConfig mongosConfig = defaultMongosConfig(serverVersion, mongosPort, defaultCommandOptions(),
|
||||
MongosConfig mongosConfig = defaultMongosConfig(serverVersion, mongosPort, defaultCommandOptions(),
|
||||
configServerReplicaSetName, configServerPorts[0]);
|
||||
|
||||
mongosTestFactory = new MongosSystemForTestFactory(mongosConfig, replicaSets, Collections.emptyList(),
|
||||
@@ -328,9 +327,9 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
}
|
||||
}
|
||||
|
||||
private List<IMongodConfig> initReplicaSet() {
|
||||
private List<MongodConfig> initReplicaSet() {
|
||||
|
||||
List<IMongodConfig> rs = new ArrayList<>();
|
||||
List<MongodConfig> rs = new ArrayList<>();
|
||||
|
||||
for (int port : serverPorts) {
|
||||
rs.add(defaultMongodConfig(serverVersion, port, defaultCommandOptions(), false, true, replicaSetName));
|
||||
@@ -338,9 +337,9 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
return rs;
|
||||
}
|
||||
|
||||
private List<IMongodConfig> initConfigServers() {
|
||||
private List<MongodConfig> initConfigServers() {
|
||||
|
||||
List<IMongodConfig> configServers = new ArrayList<>(configServerPorts.length);
|
||||
List<MongodConfig> configServers = new ArrayList<>(configServerPorts.length);
|
||||
|
||||
for (Integer port : configServerPorts) {
|
||||
configServers.add(
|
||||
@@ -370,14 +369,14 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
/**
|
||||
* @return Default {@link IMongoCmdOptions command options}.
|
||||
*/
|
||||
private static IMongoCmdOptions defaultCommandOptions() {
|
||||
private static MongoCmdOptions defaultCommandOptions() {
|
||||
|
||||
return new MongoCmdOptionsBuilder() //
|
||||
return MongoCmdOptions.builder() //
|
||||
.useNoPrealloc(false) //
|
||||
.useSmallFiles(false) //
|
||||
.useNoJournal(false) //
|
||||
.useStorageEngine(STORAGE_ENGINE) //
|
||||
.verbose(false) //
|
||||
.storageEngine(STORAGE_ENGINE) //
|
||||
.isVerbose(false) //
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -392,16 +391,16 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
* @param replicaSet
|
||||
* @return
|
||||
*/
|
||||
private static IMongodConfig defaultMongodConfig(IFeatureAwareVersion version, int port, IMongoCmdOptions cmdOptions,
|
||||
private static MongodConfig defaultMongodConfig(IFeatureAwareVersion version, int port, MongoCmdOptions cmdOptions,
|
||||
boolean configServer, boolean shardServer, String replicaSet) {
|
||||
|
||||
try {
|
||||
|
||||
MongodConfigBuilder builder = new MongodConfigBuilder() //
|
||||
ImmutableMongodConfig.Builder builder = MongodConfig.builder() //
|
||||
.version(version) //
|
||||
.withLaunchArgument("--quiet") //
|
||||
.putArgs("--quiet", null) //
|
||||
.net(new Net(LOCALHOST, port, Network.localhostIsIPv6())) //
|
||||
.configServer(configServer).cmdOptions(cmdOptions); //
|
||||
.isConfigServer(configServer).cmdOptions(cmdOptions); //
|
||||
|
||||
if (StringUtils.hasText(replicaSet)) {
|
||||
|
||||
@@ -409,9 +408,9 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
.replication(new Storage(null, replicaSet, 0));
|
||||
|
||||
if (!configServer) {
|
||||
builder = builder.shardServer(shardServer);
|
||||
builder = builder.isShardServer(shardServer);
|
||||
} else {
|
||||
builder = builder.shardServer(false);
|
||||
builder = builder.isShardServer(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -431,14 +430,14 @@ public class EmbeddedMongo extends ExternalResource {
|
||||
* @param configServerPort
|
||||
* @return
|
||||
*/
|
||||
private static IMongosConfig defaultMongosConfig(IFeatureAwareVersion version, int port, IMongoCmdOptions cmdOptions,
|
||||
private static MongosConfig defaultMongosConfig(IFeatureAwareVersion version, int port, MongoCmdOptions cmdOptions,
|
||||
String configServerReplicaSet, int configServerPort) {
|
||||
|
||||
try {
|
||||
|
||||
MongosConfigBuilder builder = new MongosConfigBuilder() //
|
||||
ImmutableMongosConfig.Builder builder = MongosConfig.builder() //
|
||||
.version(version) //
|
||||
.withLaunchArgument("--quiet", null) //
|
||||
.putArgs("--quiet", null) //
|
||||
.net(new Net(LOCALHOST, port, Network.localhostIsIPv6())) //
|
||||
.cmdOptions(cmdOptions);
|
||||
|
||||
|
||||
@@ -22,11 +22,10 @@ import de.flapdoodle.embed.mongo.MongodStarter;
|
||||
import de.flapdoodle.embed.mongo.MongosExecutable;
|
||||
import de.flapdoodle.embed.mongo.MongosProcess;
|
||||
import de.flapdoodle.embed.mongo.MongosStarter;
|
||||
import de.flapdoodle.embed.mongo.config.IMongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.IMongosConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongodConfig;
|
||||
import de.flapdoodle.embed.mongo.config.MongosConfig;
|
||||
import de.flapdoodle.embed.mongo.config.Net;
|
||||
import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder;
|
||||
import de.flapdoodle.embed.process.config.IRuntimeConfig;
|
||||
import de.flapdoodle.embed.process.config.RuntimeConfig;
|
||||
import de.flapdoodle.embed.process.config.io.ProcessOutput;
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@@ -63,9 +62,9 @@ class MongosSystemForTestFactory {
|
||||
public static final String REPLICA_SET_NAME = "rep1";
|
||||
public static final String OPLOG_COLLECTION = "oplog.rs";
|
||||
|
||||
private final IMongosConfig config;
|
||||
private final Map<String, List<IMongodConfig>> replicaSets;
|
||||
private final List<IMongodConfig> configServers;
|
||||
private final MongosConfig config;
|
||||
private final Map<String, List<MongodConfig>> replicaSets;
|
||||
private final List<MongodConfig> configServers;
|
||||
private final String shardDatabase;
|
||||
private final String shardCollection;
|
||||
private final String shardKey;
|
||||
@@ -76,9 +75,8 @@ class MongosSystemForTestFactory {
|
||||
private List<MongodProcess> mongodProcessList;
|
||||
private List<MongodProcess> mongodConfigProcessList;
|
||||
|
||||
public MongosSystemForTestFactory(IMongosConfig config,
|
||||
Map<String, List<IMongodConfig>> replicaSets,
|
||||
List<IMongodConfig> configServers, String shardDatabase,
|
||||
public MongosSystemForTestFactory(MongosConfig config, Map<String, List<MongodConfig>> replicaSets,
|
||||
List<MongodConfig> configServers, String shardDatabase,
|
||||
String shardCollection, String shardKey, Function<Command, ProcessOutput> outputFunction) {
|
||||
this.config = config;
|
||||
this.replicaSets = replicaSets;
|
||||
@@ -92,33 +90,33 @@ class MongosSystemForTestFactory {
|
||||
public void start() throws Throwable {
|
||||
this.mongodProcessList = new ArrayList<>();
|
||||
this.mongodConfigProcessList = new ArrayList<>();
|
||||
for (Entry<String, List<IMongodConfig>> entry : replicaSets.entrySet()) {
|
||||
for (Entry<String, List<MongodConfig>> entry : replicaSets.entrySet()) {
|
||||
initializeReplicaSet(entry);
|
||||
}
|
||||
for (IMongodConfig config : configServers) {
|
||||
for (MongodConfig config : configServers) {
|
||||
initializeConfigServer(config);
|
||||
}
|
||||
initializeMongos();
|
||||
configureMongos();
|
||||
}
|
||||
|
||||
private void initializeReplicaSet(Entry<String, List<IMongodConfig>> entry)
|
||||
private void initializeReplicaSet(Entry<String, List<MongodConfig>> entry)
|
||||
throws Exception {
|
||||
String replicaName = entry.getKey();
|
||||
List<IMongodConfig> mongoConfigList = entry.getValue();
|
||||
List<MongodConfig> mongoConfigList = entry.getValue();
|
||||
|
||||
if (mongoConfigList.size() < 3) {
|
||||
throw new Exception(
|
||||
"A replica set must contain at least 3 members.");
|
||||
}
|
||||
// Create 3 mongod processes
|
||||
for (IMongodConfig mongoConfig : mongoConfigList) {
|
||||
for (MongodConfig mongoConfig : mongoConfigList) {
|
||||
if (!mongoConfig.replication().getReplSetName().equals(replicaName)) {
|
||||
throw new Exception(
|
||||
"Replica set name must match in mongo configuration");
|
||||
}
|
||||
IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder()
|
||||
.defaultsWithLogger(Command.MongoD,logger)
|
||||
RuntimeConfig runtimeConfig = RuntimeConfig.builder()
|
||||
// .defaultsWithLogger(Command.MongoD,logger)
|
||||
.processOutput(outputFunction.apply(Command.MongoD))
|
||||
.build();
|
||||
MongodStarter starter = MongodStarter.getInstance(runtimeConfig);
|
||||
@@ -142,7 +140,7 @@ class MongosSystemForTestFactory {
|
||||
replicaSetSetting.put("_id", replicaName);
|
||||
BasicDBList members = new BasicDBList();
|
||||
int i = 0;
|
||||
for (IMongodConfig mongoConfig : mongoConfigList) {
|
||||
for (MongodConfig mongoConfig : mongoConfigList) {
|
||||
DBObject host = new BasicDBObject();
|
||||
host.put("_id", i++);
|
||||
host.put("host", mongoConfig.net().getServerAddress().getHostName()
|
||||
@@ -192,7 +190,7 @@ class MongosSystemForTestFactory {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void initializeConfigServer(IMongodConfig config) throws Exception {
|
||||
private void initializeConfigServer(MongodConfig config) throws Exception {
|
||||
if (!config.isConfigServer()) {
|
||||
throw new Exception(
|
||||
"Mongo configuration is not a defined for a config server.");
|
||||
@@ -204,8 +202,8 @@ class MongosSystemForTestFactory {
|
||||
}
|
||||
|
||||
private void initializeMongos() throws Exception {
|
||||
MongosStarter runtime = MongosStarter.getInstance(new RuntimeConfigBuilder()
|
||||
.defaultsWithLogger(Command.MongoS,logger)
|
||||
MongosStarter runtime = MongosStarter.getInstance(RuntimeConfig.builder()
|
||||
// .defaultsWithLogger(Command.MongoS,logger)
|
||||
.processOutput(outputFunction.apply(Command.MongoS))
|
||||
.build());
|
||||
|
||||
@@ -223,11 +221,11 @@ class MongosSystemForTestFactory {
|
||||
MongoDatabase mongoAdminDB = mongo.getDatabase(ADMIN_DATABASE_NAME);
|
||||
|
||||
// Add shard from the replica set list
|
||||
for (Entry<String, List<IMongodConfig>> entry : this.replicaSets
|
||||
for (Entry<String, List<MongodConfig>> entry : this.replicaSets
|
||||
.entrySet()) {
|
||||
String replicaName = entry.getKey();
|
||||
String command = "";
|
||||
for (IMongodConfig mongodConfig : entry.getValue()) {
|
||||
for (MongodConfig mongodConfig : entry.getValue()) {
|
||||
if (command.isEmpty()) {
|
||||
command = replicaName + "/";
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user