This is an automated email from the ASF dual-hosted git repository. drazzib pushed a commit to branch GORA-647-test-containers-mongo in repository https://gitbox.apache.org/repos/asf/gora.git
commit 0b8dfa51c17fde173b5501a240f36116b29aaf6a Author: Damien Raude-Morvan <draz...@drazzib.com> AuthorDate: Sat Mar 21 23:35:02 2020 +0100 GORA-647 Refactor GoraMongodbTestDriver * Provided container (passed in constructor) to configure Gora properties --- .../apache/gora/mongodb/GoraMongodbTestDriver.java | 58 +++++----------------- 1 file changed, 13 insertions(+), 45 deletions(-) diff --git a/gora-mongodb/src/test/java/org/apache/gora/mongodb/GoraMongodbTestDriver.java b/gora-mongodb/src/test/java/org/apache/gora/mongodb/GoraMongodbTestDriver.java index a7fe2cf..9859b1c 100644 --- a/gora-mongodb/src/test/java/org/apache/gora/mongodb/GoraMongodbTestDriver.java +++ b/gora-mongodb/src/test/java/org/apache/gora/mongodb/GoraMongodbTestDriver.java @@ -19,81 +19,50 @@ package org.apache.gora.mongodb; import com.mongodb.Mongo; import com.mongodb.MongoClient; -import de.flapdoodle.embed.mongo.Command; -import de.flapdoodle.embed.mongo.MongodExecutable; -import de.flapdoodle.embed.mongo.MongodProcess; -import de.flapdoodle.embed.mongo.MongodStarter; -import de.flapdoodle.embed.mongo.config.IMongodConfig; -import de.flapdoodle.embed.mongo.config.MongodConfigBuilder; -import de.flapdoodle.embed.mongo.config.Net; -import de.flapdoodle.embed.mongo.config.RuntimeConfigBuilder; -import de.flapdoodle.embed.mongo.distribution.Version; -import de.flapdoodle.embed.process.config.IRuntimeConfig; -import de.flapdoodle.embed.process.config.io.ProcessOutput; -import de.flapdoodle.embed.process.runtime.Network; +import com.mongodb.ServerAddress; import org.apache.gora.GoraTestDriver; import org.apache.gora.mongodb.store.MongoStore; import org.apache.gora.mongodb.store.MongoStoreParameters; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; - /** * Driver to set up an embedded MongoDB database instance for use in our - * unit tests. We use embedded mongodb which is available from - * https://github.com/flapdoodle-oss/embedmongo.flapdoodle.de + * unit tests. We use testcontainers.org project. */ public class GoraMongodbTestDriver extends GoraTestDriver { private static Logger log = LoggerFactory .getLogger(GoraMongodbTestDriver.class); - private MongodExecutable _mongodExe; - private MongodProcess _mongod; + private MongoContainer _container; private MongoClient _mongo; - private final Version.Main version; /** * Constructor for this class. */ - public GoraMongodbTestDriver() { - this(Version.Main.PRODUCTION); - } - - public GoraMongodbTestDriver(Version.Main version) { + public GoraMongodbTestDriver(MongoContainer startedContainer) { super(MongoStore.class); - this.version = version; + this._container = startedContainer; } /** * Initiate the MongoDB server on the default port */ @Override - public void setUpClass() throws IOException { - IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder() - .defaultsWithLogger(Command.MongoD, log) - .processOutput(ProcessOutput.getDefaultInstanceSilent()) - .build(); - - MongodStarter runtime = MongodStarter.getInstance(runtimeConfig); - - int port = Network.getFreeServerPort(); - IMongodConfig mongodConfig = new MongodConfigBuilder() - .version(version) - .net(new Net(port, Network.localhostIsIPv6())).build(); + public void setUpClass() { + ServerAddress address = _container.getServerAddress(); + int port = address.getPort(); + String host = address.getHost(); // Store Mongo server "host:port" in Hadoop configuration // so that MongoStore will be able to get it latter - conf.set(MongoStoreParameters.PROP_MONGO_SERVERS, "127.0.0.1:" + port); + String mongoServersProp = String.format("%s:%d", host, port); + conf.set(MongoStoreParameters.PROP_MONGO_SERVERS, mongoServersProp); log.info("Starting embedded Mongodb server on {} port.", port); try { - - _mongodExe = runtime.prepare(mongodConfig); - _mongod = _mongodExe.start(); - - _mongo = new MongoClient("localhost", port); + _mongo = new MongoClient(address); } catch (Exception e) { log.error("Error starting embedded Mongodb server... tearing down test driver."); tearDownClass(); @@ -106,8 +75,7 @@ public class GoraMongodbTestDriver extends GoraTestDriver { @Override public void tearDownClass() { log.info("Shutting down mongodb server..."); - _mongod.stop(); - _mongodExe.stop(); + _container.stop(); } public Mongo getMongo() {