You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by wf...@apache.org on 2014/07/04 06:42:23 UTC

git commit: Configure H2 to use a named (non-private) database, and not close the database.

Repository: incubator-aurora
Updated Branches:
  refs/heads/master 2f6211638 -> e703c5e25


Configure H2 to use a named (non-private) database, and not close the database.

Bugs closed: AURORA-573

Reviewed at https://reviews.apache.org/r/23273/


Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/e703c5e2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/e703c5e2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/e703c5e2

Branch: refs/heads/master
Commit: e703c5e256473d9c770631571ac11af1b69ad6ad
Parents: 2f62116
Author: Bill Farner <wf...@apache.org>
Authored: Thu Jul 3 21:42:18 2014 -0700
Committer: Bill Farner <wf...@apache.org>
Committed: Thu Jul 3 21:42:18 2014 -0700

----------------------------------------------------------------------
 .../aurora/scheduler/storage/db/DbModule.java   | 24 ++++++++++++++++++--
 .../scheduler/storage/mem/MemStorage.java       |  2 +-
 .../scheduler/storage/db/DbLockStoreTest.java   |  2 +-
 .../scheduler/storage/db/DbQuotaStoreTest.java  |  2 +-
 4 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e703c5e2/src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java b/src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java
index 3485279..99d725b 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/db/DbModule.java
@@ -17,6 +17,7 @@ import java.util.Properties;
 
 import javax.inject.Singleton;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.Key;
 import com.google.inject.PrivateModule;
 import com.google.inject.name.Names;
@@ -55,9 +56,28 @@ import static com.google.inject.name.Names.named;
 public class DbModule extends PrivateModule {
 
   private final Bindings.KeyFactory keyFactory;
+  private final String jdbcUrl;
 
-  public DbModule(Bindings.KeyFactory keyFactory) {
+  private DbModule(Bindings.KeyFactory keyFactory, String jdbcUrl) {
     this.keyFactory = requireNonNull(keyFactory);
+    this.jdbcUrl = requireNonNull(jdbcUrl);
+  }
+
+  public DbModule(Bindings.KeyFactory keyFactory) {
+    this(keyFactory, "jdbc:h2:mem:aurora;DB_CLOSE_DELAY=-1");
+  }
+
+  /**
+   * Creates a module that will prepare a private in-memory database.
+   *
+   * @param keyFactory Key factory to scope bindings.
+   * @return A new database module for testing.
+   */
+  @VisibleForTesting
+  public static DbModule testModule(Bindings.KeyFactory keyFactory) {
+    // This creates a private in-memory database.  New connections will have a _new_ database,
+    // and closing the database will expunge its data.
+    return new DbModule(keyFactory, "jdbc:h2:mem:");
   }
 
   private <T> void bindStore(Class<T> binding, Class<? extends T> impl) {
@@ -78,7 +98,7 @@ public class DbModule extends PrivateModule {
         // But the in-memory URL is invalid as far as H2 is concerned, so we had to inline
         // some of the constants here and bind it manually.
         bindConstant().annotatedWith(named("JDBC.driver")).to(Driver.class.getName());
-        bind(Key.get(String.class, named("JDBC.url"))).toInstance("jdbc:h2:mem:");
+        bind(Key.get(String.class, named("JDBC.url"))).toInstance(jdbcUrl);
 
         bindDataSourceProviderType(PooledDataSourceProvider.class);
         bindTransactionFactoryType(JdbcTransactionFactory.class);

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e703c5e2/src/main/java/org/apache/aurora/scheduler/storage/mem/MemStorage.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemStorage.java b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemStorage.java
index cc20631..5cddd12 100644
--- a/src/main/java/org/apache/aurora/scheduler/storage/mem/MemStorage.java
+++ b/src/main/java/org/apache/aurora/scheduler/storage/mem/MemStorage.java
@@ -139,7 +139,7 @@ public class MemStorage implements Storage {
   @VisibleForTesting
   public static Storage newEmptyStorage() {
     Injector injector = Guice.createInjector(
-        new DbModule(Bindings.annotatedKeyFactory(Delegated.class)),
+        DbModule.testModule(Bindings.annotatedKeyFactory(Delegated.class)),
         new MemStorageModule(Bindings.annotatedKeyFactory(Volatile.class)));
 
     Storage storage = injector.getInstance(Key.get(Storage.class, Volatile.class));

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e703c5e2/src/test/java/org/apache/aurora/scheduler/storage/db/DbLockStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/db/DbLockStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/db/DbLockStoreTest.java
index 3a50454..283fc7e 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/db/DbLockStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/db/DbLockStoreTest.java
@@ -99,7 +99,7 @@ public class DbLockStoreTest {
 
   @Before
   public void setUp() throws IOException {
-    Injector injector = Guice.createInjector(new DbModule(Bindings.KeyFactory.PLAIN));
+    Injector injector = Guice.createInjector(DbModule.testModule(Bindings.KeyFactory.PLAIN));
     storage = injector.getInstance(DbStorage.class);
     storage.prepare();
   }

http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/e703c5e2/src/test/java/org/apache/aurora/scheduler/storage/db/DbQuotaStoreTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/aurora/scheduler/storage/db/DbQuotaStoreTest.java b/src/test/java/org/apache/aurora/scheduler/storage/db/DbQuotaStoreTest.java
index 21151f5..1f0af86 100644
--- a/src/test/java/org/apache/aurora/scheduler/storage/db/DbQuotaStoreTest.java
+++ b/src/test/java/org/apache/aurora/scheduler/storage/db/DbQuotaStoreTest.java
@@ -47,7 +47,7 @@ public class DbQuotaStoreTest {
 
   @Before
   public void setUp() throws IOException {
-    Injector injector = Guice.createInjector(new DbModule(Bindings.KeyFactory.PLAIN));
+    Injector injector = Guice.createInjector(DbModule.testModule(Bindings.KeyFactory.PLAIN));
     storage = injector.getInstance(Storage.class);
     storage.prepare();
   }