From 006e61a34185907274eb2a661fde70ce18c18b00 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 22 Mar 2021 12:04:42 +0100 Subject: [PATCH] Upgrade to Flapdoodle 3.0 --- mongodb/pom.xml | 4 -- .../mongodb/util/EmbeddedMongo.java | 53 +++++++++---------- .../util/MongosSystemForTestFactory.java | 44 ++++++++------- 3 files changed, 47 insertions(+), 54 deletions(-) diff --git a/mongodb/pom.xml b/mongodb/pom.xml index 965744e8..4dcde8af 100644 --- a/mongodb/pom.xml +++ b/mongodb/pom.xml @@ -37,10 +37,6 @@ util - - 2.1.1 - - diff --git a/mongodb/util/src/main/java/example/springdata/mongodb/util/EmbeddedMongo.java b/mongodb/util/src/main/java/example/springdata/mongodb/util/EmbeddedMongo.java index d5213385..32e50a6f 100644 --- a/mongodb/util/src/main/java/example/springdata/mongodb/util/EmbeddedMongo.java +++ b/mongodb/util/src/main/java/example/springdata/mongodb/util/EmbeddedMongo.java @@ -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> replicaSets = new LinkedHashMap<>(); + Map> 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 initReplicaSet() { + private List initReplicaSet() { - List rs = new ArrayList<>(); + List 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 initConfigServers() { + private List initConfigServers() { - List configServers = new ArrayList<>(configServerPorts.length); + List 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); diff --git a/mongodb/util/src/main/java/example/springdata/mongodb/util/MongosSystemForTestFactory.java b/mongodb/util/src/main/java/example/springdata/mongodb/util/MongosSystemForTestFactory.java index 7cc0458a..99dce6bd 100644 --- a/mongodb/util/src/main/java/example/springdata/mongodb/util/MongosSystemForTestFactory.java +++ b/mongodb/util/src/main/java/example/springdata/mongodb/util/MongosSystemForTestFactory.java @@ -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> replicaSets; - private final List configServers; + private final MongosConfig config; + private final Map> replicaSets; + private final List configServers; private final String shardDatabase; private final String shardCollection; private final String shardKey; @@ -76,9 +75,8 @@ class MongosSystemForTestFactory { private List mongodProcessList; private List mongodConfigProcessList; - public MongosSystemForTestFactory(IMongosConfig config, - Map> replicaSets, - List configServers, String shardDatabase, + public MongosSystemForTestFactory(MongosConfig config, Map> replicaSets, + List configServers, String shardDatabase, String shardCollection, String shardKey, Function 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> entry : replicaSets.entrySet()) { + for (Entry> entry : replicaSets.entrySet()) { initializeReplicaSet(entry); } - for (IMongodConfig config : configServers) { + for (MongodConfig config : configServers) { initializeConfigServer(config); } initializeMongos(); configureMongos(); } - private void initializeReplicaSet(Entry> entry) + private void initializeReplicaSet(Entry> entry) throws Exception { String replicaName = entry.getKey(); - List mongoConfigList = entry.getValue(); + List 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> entry : this.replicaSets + for (Entry> 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 {