You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gora.apache.org by dr...@apache.org on 2020/03/21 22:39:46 UTC

[gora] 05/07: GORA-647 Refactor GoraMongodbTestDriver

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 <dr...@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() {