killbill-memoizeit

test: use Mock locker for H2 Tests should now install the TestGlobalLockerModule,

12/14/2012 3:39:12 PM

Details

diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
index 8a871e5..bd4e9c6 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestModule.java
@@ -30,11 +30,11 @@ import com.ning.billing.junction.glue.DefaultJunctionModule;
 import com.ning.billing.payment.glue.PaymentModule;
 import com.ning.billing.util.email.EmailModule;
 import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.globallocker.TestGlobalLockerModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.CallContextModule;
 import com.ning.billing.util.glue.ClockModule;
 import com.ning.billing.util.glue.CustomFieldModule;
-import com.ning.billing.util.glue.GlobalLockerModule;
 import com.ning.billing.util.glue.NotificationQueueModule;
 import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.billing.util.tag.dao.TagDefinitionSqlDao;
@@ -47,7 +47,7 @@ public class AnalyticsTestModule extends AnalyticsModule {
 
         // Need to configure a few more things for the EventBus
         install(new EmailModule());
-        install(new GlobalLockerModule());
+        install(new TestGlobalLockerModule(KillbillTestSuiteWithEmbeddedDB.getDBTestingHelper()));
         install(new ClockModule());
         install(new CallContextModule());
         install(new CustomFieldModule());
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
index cd04508..982b63c 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/BeatrixIntegrationModule.java
@@ -59,11 +59,11 @@ import com.ning.billing.util.clock.ClockMock;
 import com.ning.billing.util.config.PaymentConfig;
 import com.ning.billing.util.email.EmailModule;
 import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.globallocker.TestGlobalLockerModule;
 import com.ning.billing.util.glue.AuditModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.CallContextModule;
 import com.ning.billing.util.glue.CustomFieldModule;
-import com.ning.billing.util.glue.GlobalLockerModule;
 import com.ning.billing.util.glue.NotificationQueueModule;
 import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.billing.util.svcsapi.bus.BusService;
@@ -101,7 +101,7 @@ public class BeatrixIntegrationModule extends AbstractModule {
 
         install(new EmailModule());
         install(new CallContextModule());
-        install(new GlobalLockerModule());
+        install(new TestGlobalLockerModule(helper));
         install(new BusModule());
         install(new NotificationQueueModule());
         install(new TagStoreModule());
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
index 154b339..79409a5 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithEmbeddedDb.java
@@ -36,9 +36,9 @@ import com.ning.billing.util.callcontext.DefaultCallContextFactory;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.DefaultClock;
 import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.globallocker.TestGlobalLockerModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.CustomFieldModule;
-import com.ning.billing.util.glue.GlobalLockerModule;
 import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.billing.util.notificationq.MockNotificationQueueService;
 import com.ning.billing.util.notificationq.NotificationQueueService;
@@ -80,7 +80,7 @@ public class InvoiceModuleWithEmbeddedDb extends DefaultInvoiceModule {
 
         install(new CatalogModule());
         install(new MockEntitlementModule());
-        install(new GlobalLockerModule());
+        install(new TestGlobalLockerModule(KillbillTestSuiteWithEmbeddedDB.getDBTestingHelper()));
 
         super.configure();
 
diff --git a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
index e8eaa3c..65b6571 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/MockModule.java
@@ -40,9 +40,9 @@ import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.ClockMock;
 import com.ning.billing.util.email.EmailModule;
 import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.globallocker.TestGlobalLockerModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.CustomFieldModule;
-import com.ning.billing.util.glue.GlobalLockerModule;
 import com.ning.billing.util.glue.NotificationQueueModule;
 import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.billing.util.svcapi.account.AccountInternalApi;
@@ -84,7 +84,7 @@ public class MockModule extends AbstractModule {
         bind(EntitlementInternalApi.class).toInstance(Mockito.mock(EntitlementInternalApi.class));
 
         install(new EmailModule());
-        install(new GlobalLockerModule());
+        install(new TestGlobalLockerModule(helper));
         install(new NotificationQueueModule());
         install(new CatalogModule());
         install(new BusModule());
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index a69d0df..715a310 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -59,12 +59,12 @@ import com.ning.billing.util.clock.ClockMock;
 import com.ning.billing.util.config.PaymentConfig;
 import com.ning.billing.util.email.EmailModule;
 import com.ning.billing.util.email.templates.TemplateModule;
+import com.ning.billing.util.globallocker.TestGlobalLockerModule;
 import com.ning.billing.util.glue.AuditModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.CallContextModule;
 import com.ning.billing.util.glue.CustomFieldModule;
 import com.ning.billing.util.glue.ExportModule;
-import com.ning.billing.util.glue.GlobalLockerModule;
 import com.ning.billing.util.glue.NotificationQueueModule;
 import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.http.client.AsyncHttpClient;
@@ -166,7 +166,7 @@ public class TestJaxrsBase extends KillbillClient {
             Modules.override(new com.ning.billing.payment.setup.PaymentModule()).with(new PaymentMockModule());
             */
             install(new EmailModule());
-            install(new GlobalLockerModule());
+            install(new TestGlobalLockerModule(helper));
             install(new CustomFieldModule());
             install(new TagStoreModule());
             install(new AuditModule());
diff --git a/util/src/main/java/com/ning/billing/util/glue/GlobalLockerModule.java b/util/src/main/java/com/ning/billing/util/glue/GlobalLockerModule.java
index 7d976f5..c0245ac 100644
--- a/util/src/main/java/com/ning/billing/util/glue/GlobalLockerModule.java
+++ b/util/src/main/java/com/ning/billing/util/glue/GlobalLockerModule.java
@@ -22,6 +22,7 @@ import com.ning.billing.util.globallocker.MySqlGlobalLocker;
 import com.google.inject.AbstractModule;
 
 public class GlobalLockerModule extends AbstractModule {
+
     @Override
     protected void configure() {
         bind(GlobalLocker.class).to(MySqlGlobalLocker.class).asEagerSingleton();
diff --git a/util/src/test/java/com/ning/billing/dbi/DBTestingHelper.java b/util/src/test/java/com/ning/billing/dbi/DBTestingHelper.java
index 840e330..65a3e9a 100644
--- a/util/src/test/java/com/ning/billing/dbi/DBTestingHelper.java
+++ b/util/src/test/java/com/ning/billing/dbi/DBTestingHelper.java
@@ -37,7 +37,12 @@ public abstract class DBTestingHelper {
     public static final String USERNAME = "root";
     public static final String PASSWORD = "root";
 
-    // Discover dynamically list of all tables in that database;
+    public enum DBEngine {
+        MYSQL,
+        H2
+    }
+
+    // Discover dynamically list of all tables in that database
     protected List<String> allTables;
     protected IDBI dbiInstance = null;
 
@@ -142,6 +147,8 @@ public abstract class DBTestingHelper {
         return DB_NAME;
     }
 
+    public abstract DBEngine getDBEngine();
+
     public abstract boolean isUsingLocalInstance();
 
     // For debugging
diff --git a/util/src/test/java/com/ning/billing/dbi/H2TestingHelper.java b/util/src/test/java/com/ning/billing/dbi/H2TestingHelper.java
index 92e5a90..8431da7 100644
--- a/util/src/test/java/com/ning/billing/dbi/H2TestingHelper.java
+++ b/util/src/test/java/com/ning/billing/dbi/H2TestingHelper.java
@@ -39,6 +39,11 @@ public class H2TestingHelper extends DBTestingHelper {
     }
 
     @Override
+    public DBEngine getDBEngine() {
+        return DBEngine.H2;
+    }
+
+    @Override
     public boolean isUsingLocalInstance() {
         return false;
     }
diff --git a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
index 588d8d9..97bd3a4 100644
--- a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
+++ b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
@@ -66,6 +66,11 @@ public class MysqlTestingHelper extends DBTestingHelper {
     }
 
     @Override
+    public DBEngine getDBEngine() {
+        return DBEngine.MYSQL;
+    }
+
+    @Override
     public boolean isUsingLocalInstance() {
         return (System.getProperty(USE_LOCAL_DB_PROP) != null);
     }
diff --git a/util/src/test/java/com/ning/billing/mock/glue/MockGlobalLockerModule.java b/util/src/test/java/com/ning/billing/mock/glue/MockGlobalLockerModule.java
new file mode 100644
index 0000000..03fd184
--- /dev/null
+++ b/util/src/test/java/com/ning/billing/mock/glue/MockGlobalLockerModule.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.mock.glue;
+
+import com.ning.billing.util.globallocker.GlobalLocker;
+import com.ning.billing.util.globallocker.MockGlobalLocker;
+
+import com.google.inject.AbstractModule;
+
+public class MockGlobalLockerModule extends AbstractModule {
+
+    @Override
+    protected void configure() {
+        bind(GlobalLocker.class).to(MockGlobalLocker.class).asEagerSingleton();
+    }
+}
diff --git a/util/src/test/java/com/ning/billing/util/globallocker/TestGlobalLockerModule.java b/util/src/test/java/com/ning/billing/util/globallocker/TestGlobalLockerModule.java
new file mode 100644
index 0000000..5b0acad
--- /dev/null
+++ b/util/src/test/java/com/ning/billing/util/globallocker/TestGlobalLockerModule.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.globallocker;
+
+import com.ning.billing.dbi.DBTestingHelper;
+import com.ning.billing.dbi.DBTestingHelper.DBEngine;
+import com.ning.billing.mock.glue.MockGlobalLockerModule;
+import com.ning.billing.util.glue.GlobalLockerModule;
+
+import com.google.inject.AbstractModule;
+
+public class TestGlobalLockerModule extends AbstractModule {
+
+    private final DBTestingHelper helper;
+
+    public TestGlobalLockerModule(final DBTestingHelper helper) {
+        this.helper = helper;
+    }
+
+    @Override
+    protected void configure() {
+        if (DBEngine.MYSQL.equals(helper.getDBEngine())) {
+            install(new GlobalLockerModule());
+        } else {
+            install(new MockGlobalLockerModule());
+        }
+    }
+}