killbill-memoizeit

guice: stop relying on System properties in modules Instead,

2/22/2013 1:46:31 PM

Changes

util/src/test/java/com/ning/billing/mock/glue/TestDbiModule.java 43(+0 -43)

Details

diff --git a/account/src/main/java/com/ning/billing/account/glue/DefaultAccountModule.java b/account/src/main/java/com/ning/billing/account/glue/DefaultAccountModule.java
index 96c45ef..eb31347 100644
--- a/account/src/main/java/com/ning/billing/account/glue/DefaultAccountModule.java
+++ b/account/src/main/java/com/ning/billing/account/glue/DefaultAccountModule.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.account.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.account.api.AccountService;
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.account.api.DefaultAccountService;
@@ -31,6 +33,12 @@ import com.google.inject.AbstractModule;
 
 public class DefaultAccountModule extends AbstractModule implements AccountModule {
 
+    protected final ConfigSource configSource;
+
+    public DefaultAccountModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     private void installConfig() {
     }
 
diff --git a/account/src/test/java/com/ning/billing/account/AccountTestSuiteNoDB.java b/account/src/test/java/com/ning/billing/account/AccountTestSuiteNoDB.java
index f246c08..1171013 100644
--- a/account/src/test/java/com/ning/billing/account/AccountTestSuiteNoDB.java
+++ b/account/src/test/java/com/ning/billing/account/AccountTestSuiteNoDB.java
@@ -67,7 +67,7 @@ public abstract class AccountTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestAccountModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestAccountModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/account/src/test/java/com/ning/billing/account/AccountTestSuiteWithEmbeddedDB.java b/account/src/test/java/com/ning/billing/account/AccountTestSuiteWithEmbeddedDB.java
index 8bf7352..74df794 100644
--- a/account/src/test/java/com/ning/billing/account/AccountTestSuiteWithEmbeddedDB.java
+++ b/account/src/test/java/com/ning/billing/account/AccountTestSuiteWithEmbeddedDB.java
@@ -67,7 +67,7 @@ public abstract class AccountTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestAccountModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestAccountModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/account/src/test/java/com/ning/billing/account/glue/TestAccountModule.java b/account/src/test/java/com/ning/billing/account/glue/TestAccountModule.java
index b6cb812..a2bbf6d 100644
--- a/account/src/test/java/com/ning/billing/account/glue/TestAccountModule.java
+++ b/account/src/test/java/com/ning/billing/account/glue/TestAccountModule.java
@@ -16,10 +16,7 @@
 
 package com.ning.billing.account.glue;
 
-import java.util.Properties;
-
 import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.mock.glue.MockEntitlementModule;
 import com.ning.billing.util.glue.AuditModule;
@@ -30,17 +27,8 @@ import com.ning.billing.util.glue.TagStoreModule;
 
 public class TestAccountModule extends DefaultAccountModule {
 
-    protected final ConfigSource configSource;
-
-    public TestAccountModule() {
-        final Properties properties = new Properties(System.getProperties());
-        // Speed up the bus
-        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
-        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-        configSource = new SimplePropertyConfigSource(properties);
-
-        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
-        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    public TestAccountModule(final ConfigSource configSource) {
+        super(configSource);
     }
 
     @Override
@@ -48,7 +36,7 @@ public class TestAccountModule extends DefaultAccountModule {
         super.configure();
 
         install(new AuditModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         install(new CallContextModule());
         install(new CustomFieldModule());
         // Needed for Audit
diff --git a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
index 53ed416..dcb9665 100644
--- a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
+++ b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleNoDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.account.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.account.dao.AccountDao;
 import com.ning.billing.account.dao.MockAccountDao;
@@ -24,6 +26,10 @@ import com.ning.billing.util.bus.InMemoryBusModule;
 
 public class TestAccountModuleNoDB extends TestAccountModule {
 
+    public TestAccountModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void installAccountDao() {
         bind(AccountDao.class).to(MockAccountDao.class);
diff --git a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleWithEmbeddedDB.java b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleWithEmbeddedDB.java
index 3a30677..dfd1b29 100644
--- a/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleWithEmbeddedDB.java
+++ b/account/src/test/java/com/ning/billing/account/glue/TestAccountModuleWithEmbeddedDB.java
@@ -16,12 +16,18 @@
 
 package com.ning.billing.account.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestAccountModuleWithEmbeddedDB extends TestAccountModule {
 
+    public TestAccountModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
index dfedeeb..0867140 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/setup/AnalyticsModule.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.analytics.setup;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.analytics.AnalyticsListener;
 import com.ning.billing.analytics.BusinessAccountDao;
 import com.ning.billing.analytics.BusinessSubscriptionTransitionDao;
@@ -50,6 +52,12 @@ import com.google.inject.AbstractModule;
 
 public class AnalyticsModule extends AbstractModule {
 
+    protected final ConfigSource configSource;
+
+    public AnalyticsModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     @Override
     protected void configure() {
         installAnalyticsUserApi();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java
index 7dc70dd..ba36b48 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteNoDB.java
@@ -123,7 +123,7 @@ public abstract class AnalyticsTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB 
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestAnalyticsModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestAnalyticsModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
index 6060dcd..0f70b21 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/AnalyticsTestSuiteWithEmbeddedDB.java
@@ -126,7 +126,7 @@ public abstract class AnalyticsTestSuiteWithEmbeddedDB extends GuicyKillbillTest
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestAnalyticsModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestAnalyticsModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java
index 5956954..a414303 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModule.java
@@ -16,11 +16,8 @@
 
 package com.ning.billing.analytics.glue;
 
-import java.util.Properties;
-
 import org.mockito.Mockito;
 import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.analytics.setup.AnalyticsModule;
 import com.ning.billing.catalog.MockCatalogModule;
@@ -42,17 +39,8 @@ import com.ning.billing.util.glue.TagStoreModule;
 
 public class TestAnalyticsModule extends AnalyticsModule {
 
-    protected final ConfigSource configSource;
-
-    public TestAnalyticsModule() {
-        final Properties properties = new Properties(System.getProperties());
-        // Speed up the bus
-        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
-        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-        configSource = new SimplePropertyConfigSource(properties);
-
-        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
-        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    public TestAnalyticsModule(final ConfigSource configSource) {
+        super(configSource);
     }
 
     @Override
@@ -60,7 +48,7 @@ public class TestAnalyticsModule extends AnalyticsModule {
         super.configure();
 
         install(new AuditModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         install(new CallContextModule());
         install(new CustomFieldModule());
         install(new MockAccountModule());
@@ -71,7 +59,7 @@ public class TestAnalyticsModule extends AnalyticsModule {
         install(new MockOverdueModule());
         install(new MockPaymentModule());
         install(new MockGlobalLockerModule());
-        install(new NotificationQueueModule());
+        install(new NotificationQueueModule(configSource));
         install(new TagStoreModule());
 
         bind(InvoiceDao.class).toInstance(Mockito.mock(InvoiceDao.class));
diff --git a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java
index 55f675e..5a6e851 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleNoDB.java
@@ -17,6 +17,7 @@
 package com.ning.billing.analytics.glue;
 
 import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.analytics.MockBusinessSubscriptionTransitionSqlDao;
@@ -39,6 +40,10 @@ import com.ning.billing.util.bus.InMemoryBusModule;
 
 public class TestAnalyticsModuleNoDB extends TestAnalyticsModule {
 
+    public TestAnalyticsModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void installAnalyticsSqlDao() {
         bind(BusinessSubscriptionTransitionSqlDao.class).to(MockBusinessSubscriptionTransitionSqlDao.class).asEagerSingleton();
diff --git a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleWithEmbeddedDB.java b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleWithEmbeddedDB.java
index f749c31..fc9ecaf 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleWithEmbeddedDB.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/glue/TestAnalyticsModuleWithEmbeddedDB.java
@@ -16,12 +16,18 @@
 
 package com.ning.billing.analytics.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestAnalyticsModuleWithEmbeddedDB extends TestAnalyticsModule {
 
+    public TestAnalyticsModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/BeatrixTestSuite.java b/beatrix/src/test/java/com/ning/billing/beatrix/BeatrixTestSuite.java
index 80922a9..1e391ad 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/BeatrixTestSuite.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/BeatrixTestSuite.java
@@ -16,7 +16,7 @@
 
 package com.ning.billing.beatrix;
 
-import com.ning.billing.KillbillTestSuite;
+import com.ning.billing.GuicyKillbillTestSuite;
 
-public abstract class BeatrixTestSuite extends KillbillTestSuite {
+public abstract class BeatrixTestSuite extends GuicyKillbillTestSuite {
 }
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 7399ddf..47df951 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
@@ -18,9 +18,10 @@ package com.ning.billing.beatrix.integration;
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.Properties;
 import java.util.Set;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.account.api.AccountService;
 import com.ning.billing.account.glue.DefaultAccountModule;
@@ -80,6 +81,12 @@ public class BeatrixIntegrationModule extends AbstractModule {
 
     public static final String PLUGIN_NAME = "yoyo";
 
+    private final ConfigSource configSource;
+
+    public BeatrixIntegrationModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     @Override
     protected void configure() {
 
@@ -90,27 +97,27 @@ public class BeatrixIntegrationModule extends AbstractModule {
         install(new GuicyKillbillTestWithEmbeddedDBModule());
 
         install(new GlobalLockerModule());
-        install(new CacheModule());
-        install(new EmailModule());
+        install(new CacheModule(configSource));
+        install(new EmailModule(configSource));
         install(new CallContextModule());
-        install(new BusModule());
-        install(new NotificationQueueModule());
+        install(new BusModule(configSource));
+        install(new NotificationQueueModule(configSource));
         install(new TagStoreModule());
         install(new CustomFieldModule());
-        install(new DefaultAccountModule());
-        install(new AnalyticsModule());
-        install(new CatalogModule());
-        install(new DefaultEntitlementModule());
-        install(new DefaultInvoiceModule());
+        install(new DefaultAccountModule(configSource));
+        install(new AnalyticsModule(configSource));
+        install(new CatalogModule(configSource));
+        install(new DefaultEntitlementModule(configSource));
+        install(new DefaultInvoiceModule(configSource));
         install(new TemplateModule());
-        install(new PaymentPluginMockModule());
-        install(new DefaultJunctionModule());
-        install(new IntegrationTestOverdueModule());
+        install(new PaymentPluginMockModule(configSource));
+        install(new DefaultJunctionModule(configSource));
+        install(new IntegrationTestOverdueModule(configSource));
         install(new AuditModule());
-        install(new UsageModule());
-        install(new TenantModule());
+        install(new UsageModule(configSource));
+        install(new TenantModule(configSource));
         install(new ExportModule());
-        install(new DefaultOSGIModule());
+        install(new DefaultOSGIModule(configSource));
         install(new NonEntityDaoModule());
 
         bind(AccountChecker.class).asEagerSingleton();
@@ -131,6 +138,10 @@ public class BeatrixIntegrationModule extends AbstractModule {
 
     private static final class PaymentPluginMockModule extends PaymentModule {
 
+        public PaymentPluginMockModule(final ConfigSource configSource) {
+            super(configSource);
+        }
+
         @Override
         protected void installPaymentProviderPlugins(final PaymentConfig config) {
             install(new MockPaymentProviderPluginModule(PLUGIN_NAME, TestIntegrationBase.getClock()));
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/IntegrationTestOverdueModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/IntegrationTestOverdueModule.java
index 1290f7e..2f80d30 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/IntegrationTestOverdueModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/overdue/IntegrationTestOverdueModule.java
@@ -16,15 +16,18 @@
 
 package com.ning.billing.beatrix.integration.overdue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.overdue.OverdueService;
 import com.ning.billing.overdue.glue.DefaultOverdueModule;
 
 public class IntegrationTestOverdueModule extends DefaultOverdueModule {
 
+    public IntegrationTestOverdueModule(final ConfigSource configSource) {
+        super(configSource);
+    }
 
     protected void installOverdueService() {
         bind(OverdueService.class).to(MockOverdueService.class);
     }
-
-
 }
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
index 0e19854..682201f 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegrationBase.java
@@ -224,7 +224,7 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
 
     @BeforeClass(groups = "slow")
     public void beforeClass() throws Exception {
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new BeatrixIntegrationModule());
+        final Injector g = Guice.createInjector(Stage.PRODUCTION, new BeatrixIntegrationModule(configSource));
         g.injectMembers(this);
         busHandler = new TestApiListener(this);
 
diff --git a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
index 0227fc5..21ccadc 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/glue/CatalogModule.java
@@ -16,11 +16,8 @@
 
 package com.ning.billing.catalog.glue;
 
-import java.util.Properties;
-
 import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.catalog.DefaultCatalogService;
 import com.ning.billing.catalog.api.CatalogService;
@@ -34,15 +31,7 @@ import com.google.inject.AbstractModule;
 
 public class CatalogModule extends AbstractModule {
 
-    final ConfigSource configSource;
-
-    public CatalogModule() {
-        this(System.getProperties());
-    }
-
-    public CatalogModule(final Properties properties) {
-        this(new SimplePropertyConfigSource(properties));
-    }
+    protected final ConfigSource configSource;
 
     public CatalogModule(final ConfigSource configSource) {
         this.configSource = configSource;
diff --git a/catalog/src/test/java/com/ning/billing/catalog/CatalogTestSuiteNoDB.java b/catalog/src/test/java/com/ning/billing/catalog/CatalogTestSuiteNoDB.java
index 1c7df9a..fa03508 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/CatalogTestSuiteNoDB.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/CatalogTestSuiteNoDB.java
@@ -33,7 +33,7 @@ public abstract class CatalogTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestCatalogModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestCatalogModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 }
diff --git a/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModule.java b/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModule.java
index 0b7dec4..41b5bb4 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModule.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModule.java
@@ -16,10 +16,16 @@
 
 package com.ning.billing.catalog.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 
 public class TestCatalogModule extends CatalogModule {
 
+    public TestCatalogModule(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModuleNoDB.java b/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModuleNoDB.java
index b895a87..a0608bf 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModuleNoDB.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/glue/TestCatalogModuleNoDB.java
@@ -16,5 +16,11 @@
 
 package com.ning.billing.catalog.glue;
 
+import org.skife.config.ConfigSource;
+
 public class TestCatalogModuleNoDB extends TestCatalogModule {
+
+    public TestCatalogModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
 }
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/glue/DefaultEntitlementModule.java b/entitlement/src/main/java/com/ning/billing/entitlement/glue/DefaultEntitlementModule.java
index 83fcd7f..c23c51f 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/glue/DefaultEntitlementModule.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/glue/DefaultEntitlementModule.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.entitlement.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.entitlement.engine.dao.DefaultEntitlementDao;
@@ -51,8 +52,14 @@ public class DefaultEntitlementModule extends AbstractModule implements Entitlem
 
     public static final String REPAIR_NAMED = "repair";
 
+    protected final ConfigSource configSource;
+
+    public DefaultEntitlementModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     protected void installConfig() {
-        final EntitlementConfig config = new ConfigurationObjectFactory(System.getProperties()).build(EntitlementConfig.class);
+        final EntitlementConfig config = new ConfigurationObjectFactory(configSource).build(EntitlementConfig.class);
         bind(EntitlementConfig.class).toInstance(config);
     }
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteNoDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteNoDB.java
index 371a119..64b95ac 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteNoDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteNoDB.java
@@ -95,7 +95,7 @@ public class EntitlementTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
     @BeforeClass(groups = "fast")
     public void beforeClass() throws Exception {
         DefaultEntitlementTestInitializer.loadSystemPropertiesFromClasspath("/entitlement.properties");
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestEngineModuleNoDB());
+        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestEngineModuleNoDB(configSource));
         g.injectMembers(this);
     }
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
index 459eb80..a4b084b 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
@@ -93,7 +93,7 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
     @BeforeClass(groups = "slow")
     public void beforeClass() throws Exception {
         DefaultEntitlementTestInitializer.loadSystemPropertiesFromClasspath("/entitlement.properties");
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestEngineModuleWithEmbeddedDB());
+        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestEngineModuleWithEmbeddedDB(configSource));
         g.injectMembers(this);
     }
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModule.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModule.java
index 5df0b4e..b648503 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModule.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModule.java
@@ -17,6 +17,7 @@
 package com.ning.billing.entitlement.glue;
 
 import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.api.TestApiListener;
@@ -33,6 +34,9 @@ import com.ning.billing.util.glue.CallContextModule;
 
 public class TestEngineModule extends DefaultEntitlementModule {
 
+    public TestEngineModule(final ConfigSource configSource) {
+        super(configSource);
+    }
 
     @Override
     public void installEntitlementUserApi() {
@@ -42,9 +46,9 @@ public class TestEngineModule extends DefaultEntitlementModule {
     @Override
     protected void configure() {
         super.configure();
-        install(new CatalogModule());
+        install(new CatalogModule(configSource));
         install(new CallContextModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
 
         bind(AccountUserApi.class).toInstance(Mockito.mock(AccountUserApi.class));
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleNoDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleNoDB.java
index 1346b54..1e9f07d 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleNoDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleNoDB.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.entitlement.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.GuicyKillbillTestNoDBModule;
@@ -24,8 +25,7 @@ import com.ning.billing.entitlement.engine.dao.EntitlementDao;
 import com.ning.billing.entitlement.engine.dao.MockEntitlementDaoMemory;
 import com.ning.billing.entitlement.engine.dao.RepairEntitlementDao;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
-import com.ning.billing.util.glue.BusModule;
-import com.ning.billing.util.glue.BusModule.BusType;
+import com.ning.billing.util.bus.InMemoryBusModule;
 import com.ning.billing.util.notificationq.MockNotificationQueueService;
 import com.ning.billing.util.notificationq.NotificationQueueConfig;
 import com.ning.billing.util.notificationq.NotificationQueueService;
@@ -34,6 +34,10 @@ import com.google.inject.name.Names;
 
 public class TestEngineModuleNoDB extends TestEngineModule {
 
+    public TestEngineModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void installEntitlementDao() {
         bind(EntitlementDao.class).to(MockEntitlementDaoMemory.class).asEagerSingleton();
@@ -48,7 +52,7 @@ public class TestEngineModuleNoDB extends TestEngineModule {
     }
 
     protected void configureNotificationQueueConfig() {
-        final NotificationQueueConfig config = new ConfigurationObjectFactory(System.getProperties()).build(NotificationQueueConfig.class);
+        final NotificationQueueConfig config = new ConfigurationObjectFactory(configSource).build(NotificationQueueConfig.class);
         bind(NotificationQueueConfig.class).toInstance(config);
     }
 
@@ -59,7 +63,7 @@ public class TestEngineModuleNoDB extends TestEngineModule {
 
         super.configure();
 
-        install(new BusModule(BusType.MEMORY));
+        install(new InMemoryBusModule(configSource));
         installNotificationQueue();
 
         install(new MockNonEntityDaoModule());
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleWithEmbeddedDB.java b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleWithEmbeddedDB.java
index d926521..0f1d8ae 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleWithEmbeddedDB.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/glue/TestEngineModuleWithEmbeddedDB.java
@@ -16,13 +16,14 @@
 
 package com.ning.billing.entitlement.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.entitlement.api.timeline.RepairEntitlementLifecycleDao;
 import com.ning.billing.entitlement.engine.dao.EntitlementDao;
 import com.ning.billing.entitlement.engine.dao.MockEntitlementDaoSql;
 import com.ning.billing.entitlement.engine.dao.RepairEntitlementDao;
 import com.ning.billing.util.glue.BusModule;
-import com.ning.billing.util.glue.BusModule.BusType;
 import com.ning.billing.util.glue.CustomFieldModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
 import com.ning.billing.util.glue.NotificationQueueModule;
@@ -30,6 +31,11 @@ import com.ning.billing.util.glue.NotificationQueueModule;
 import com.google.inject.name.Names;
 
 public class TestEngineModuleWithEmbeddedDB extends TestEngineModule {
+
+    public TestEngineModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void installEntitlementDao() {
         bind(EntitlementDao.class).to(MockEntitlementDaoSql.class).asEagerSingleton();
@@ -47,9 +53,9 @@ public class TestEngineModuleWithEmbeddedDB extends TestEngineModule {
 
         //installDBI();
 
-        install(new NotificationQueueModule());
+        install(new NotificationQueueModule(configSource));
         install(new CustomFieldModule());
-        install(new BusModule(BusType.PERSISTENT));
+        install(new BusModule(configSource));
         super.configure();
     }
 }
diff --git a/invoice/src/main/java/com/ning/billing/invoice/glue/DefaultInvoiceModule.java b/invoice/src/main/java/com/ning/billing/invoice/glue/DefaultInvoiceModule.java
index 2338ccf..f1f1f01 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/glue/DefaultInvoiceModule.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/glue/DefaultInvoiceModule.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.invoice.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.glue.InvoiceModule;
@@ -52,6 +53,12 @@ public class DefaultInvoiceModule extends AbstractModule implements InvoiceModul
 
     InvoiceConfig config;
 
+    protected final ConfigSource configSource;
+
+    public DefaultInvoiceModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     protected void installInvoiceDao() {
         bind(InvoiceDao.class).to(DefaultInvoiceDao.class).asEagerSingleton();
     }
@@ -72,7 +79,7 @@ public class DefaultInvoiceModule extends AbstractModule implements InvoiceModul
     }
 
     protected void installConfig() {
-        config = new ConfigurationObjectFactory(System.getProperties()).build(InvoiceConfig.class);
+        config = new ConfigurationObjectFactory(configSource).build(InvoiceConfig.class);
         bind(InvoiceConfig.class).toInstance(config);
     }
 
@@ -88,7 +95,7 @@ public class DefaultInvoiceModule extends AbstractModule implements InvoiceModul
     protected void installNotifiers() {
         bind(NextBillingDateNotifier.class).to(DefaultNextBillingDateNotifier.class).asEagerSingleton();
         bind(NextBillingDatePoster.class).to(DefaultNextBillingDatePoster.class).asEagerSingleton();
-        final TranslatorConfig config = new ConfigurationObjectFactory(System.getProperties()).build(TranslatorConfig.class);
+        final TranslatorConfig config = new ConfigurationObjectFactory(configSource).build(TranslatorConfig.class);
         bind(TranslatorConfig.class).toInstance(config);
         bind(InvoiceFormatterFactory.class).to(config.getInvoiceFormatterFactoryClass()).asEagerSingleton();
     }
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModule.java b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModule.java
index 7bfc867..f094d0f 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModule.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModule.java
@@ -17,6 +17,7 @@
 package com.ning.billing.invoice.glue;
 
 import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.catalog.glue.CatalogModule;
 import com.ning.billing.invoice.TestInvoiceHelper;
@@ -34,6 +35,10 @@ import com.ning.billing.util.svcapi.junction.BillingInternalApi;
 
 public class TestInvoiceModule extends DefaultInvoiceModule {
 
+    public TestInvoiceModule(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     private void installExternalApis() {
         bind(EntitlementInternalApi.class).toInstance(Mockito.mock(EntitlementInternalApi.class));
         bind(AccountInternalApi.class).toInstance(Mockito.mock(AccountInternalApi.class));
@@ -46,12 +51,12 @@ public class TestInvoiceModule extends DefaultInvoiceModule {
 
         install(new MockGlobalLockerModule());
 
-        install(new CatalogModule());
-        install(new CacheModule());
+        install(new CatalogModule(configSource));
+        install(new CacheModule(configSource));
         install(new TemplateModule());
-        install(new EmailModule());
+        install(new EmailModule(configSource));
 
-        install(new NotificationQueueModule());
+        install(new NotificationQueueModule(configSource));
         install(new TagStoreModule());
         install(new CustomFieldModule());
 
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleNoDB.java b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleNoDB.java
index 8946d1f..58d4a49 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleNoDB.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleNoDB.java
@@ -16,15 +16,20 @@
 
 package com.ning.billing.invoice.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.invoice.dao.InvoiceDao;
 import com.ning.billing.invoice.dao.MockInvoiceDao;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 import com.ning.billing.util.bus.InMemoryBusModule;
-import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestInvoiceModuleNoDB extends TestInvoiceModule {
 
+    public TestInvoiceModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     protected void installInvoiceDao() {
         bind(InvoiceDao.class).to(MockInvoiceDao.class);
     }
@@ -34,6 +39,6 @@ public class TestInvoiceModuleNoDB extends TestInvoiceModule {
         super.configure();
         install(new GuicyKillbillTestNoDBModule());
         install(new MockNonEntityDaoModule());
-        install(new InMemoryBusModule());
+        install(new InMemoryBusModule(configSource));
     }
 }
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleWithEmbeddedDb.java b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleWithEmbeddedDb.java
index 5986a0f..9517d0b 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleWithEmbeddedDb.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/TestInvoiceModuleWithEmbeddedDb.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.invoice.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.invoice.InvoiceListener;
 import com.ning.billing.invoice.TestInvoiceNotificationQListener;
@@ -24,6 +26,10 @@ import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestInvoiceModuleWithEmbeddedDb extends TestInvoiceModule {
 
+    public TestInvoiceModuleWithEmbeddedDb(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void installInvoiceListener() {
         bind(InvoiceListener.class).to(TestInvoiceNotificationQListener.class).asEagerSingleton();
@@ -36,6 +42,6 @@ public class TestInvoiceModuleWithEmbeddedDb extends TestInvoiceModule {
 
         install(new GuicyKillbillTestWithEmbeddedDBModule());
         install(new NonEntityDaoModule());
-        install(new BusModule());
+        install(new BusModule(configSource));
     }
 }
diff --git a/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java b/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java
index 3194359..f11a650 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java
@@ -95,7 +95,7 @@ public abstract class InvoiceTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
         loadSystemPropertiesFromClasspath("/resource.properties");
 
-        final Injector injector = Guice.createInjector(new TestInvoiceModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestInvoiceModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java b/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
index 71bb132..a969367 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
@@ -110,7 +110,7 @@ public abstract class InvoiceTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
     protected void beforeClass() throws Exception {
         loadSystemPropertiesFromClasspath("/resource.properties");
 
-        final Injector injector = Guice.createInjector(new TestInvoiceModuleWithEmbeddedDb());
+        final Injector injector = Guice.createInjector(new TestInvoiceModuleWithEmbeddedDb(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/junction/src/main/java/com/ning/billing/junction/glue/DefaultJunctionModule.java b/junction/src/main/java/com/ning/billing/junction/glue/DefaultJunctionModule.java
index f0308b3..ce80386 100644
--- a/junction/src/main/java/com/ning/billing/junction/glue/DefaultJunctionModule.java
+++ b/junction/src/main/java/com/ning/billing/junction/glue/DefaultJunctionModule.java
@@ -16,7 +16,7 @@
 
 package com.ning.billing.junction.glue;
 
-import org.skife.jdbi.v2.IDBI;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.account.api.AccountUserApi;
 import com.ning.billing.entitlement.api.user.EntitlementUserApi;
@@ -25,7 +25,6 @@ import com.ning.billing.junction.api.svcs.DefaultInternalBlockingApi;
 import com.ning.billing.junction.block.BlockingChecker;
 import com.ning.billing.junction.block.DefaultBlockingChecker;
 import com.ning.billing.junction.dao.BlockingStateDao;
-import com.ning.billing.junction.dao.BlockingStateSqlDao;
 import com.ning.billing.junction.dao.DefaultBlockingStateDao;
 import com.ning.billing.junction.plumbing.api.BlockingAccountUserApi;
 import com.ning.billing.junction.plumbing.api.BlockingEntitlementUserApi;
@@ -33,14 +32,17 @@ import com.ning.billing.junction.plumbing.billing.BlockingCalculator;
 import com.ning.billing.junction.plumbing.billing.DefaultInternalBillingApi;
 import com.ning.billing.util.svcapi.junction.BillingInternalApi;
 import com.ning.billing.util.svcapi.junction.BlockingInternalApi;
-import com.ning.billing.util.svcapi.junction.DefaultBlockingState;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
 
 public class DefaultJunctionModule extends AbstractModule implements JunctionModule {
 
+    protected final ConfigSource configSource;
+
+    public DefaultJunctionModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     @Override
     protected void configure() {
         // External
@@ -57,7 +59,6 @@ public class DefaultJunctionModule extends AbstractModule implements JunctionMod
 
     public void installBlockingChecker() {
         bind(BlockingChecker.class).to(DefaultBlockingChecker.class).asEagerSingleton();
-
     }
 
     public void installBillingApi() {
diff --git a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModule.java b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModule.java
index 964344c..c0ad3e5 100644
--- a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModule.java
+++ b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModule.java
@@ -16,10 +16,7 @@
 
 package com.ning.billing.junction.glue;
 
-import java.util.Properties;
-
 import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.catalog.MockCatalogModule;
 import com.ning.billing.mock.glue.MockAccountModule;
@@ -29,24 +26,15 @@ import com.ning.billing.util.glue.CallContextModule;
 
 public class TestJunctionModule extends DefaultJunctionModule {
 
-    protected final ConfigSource configSource;
-
-    public TestJunctionModule() {
-        final Properties properties = new Properties(System.getProperties());
-        // Speed up the bus
-        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
-        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-        configSource = new SimplePropertyConfigSource(properties);
-
-        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
-        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    public TestJunctionModule(final ConfigSource configSource) {
+        super(configSource);
     }
 
     @Override
     protected void configure() {
         super.configure();
 
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         install(new CallContextModule());
         install(new MockAccountModule());
         install(new MockCatalogModule());
diff --git a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleNoDB.java b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleNoDB.java
index f188d30..2139fe6 100644
--- a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleNoDB.java
+++ b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleNoDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.junction.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.junction.dao.BlockingStateDao;
 import com.ning.billing.junction.dao.MockBlockingStateDao;
@@ -25,6 +27,10 @@ import com.ning.billing.util.bus.InMemoryBusModule;
 
 public class TestJunctionModuleNoDB extends TestJunctionModule {
 
+    public TestJunctionModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void installBlockingStateDao() {
         bind(BlockingStateDao.class).toInstance(new MockBlockingStateDao());
diff --git a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleWithEmbeddedDB.java b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleWithEmbeddedDB.java
index 5cf5ffc..ab54197 100644
--- a/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleWithEmbeddedDB.java
+++ b/junction/src/test/java/com/ning/billing/junction/glue/TestJunctionModuleWithEmbeddedDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.junction.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
@@ -23,6 +25,10 @@ import com.ning.billing.util.glue.TagStoreModule;
 
 public class TestJunctionModuleWithEmbeddedDB extends TestJunctionModule {
 
+    public TestJunctionModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void configure() {
         super.configure();
diff --git a/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteNoDB.java b/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteNoDB.java
index 0972b2a..d9c4aa9 100644
--- a/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteNoDB.java
+++ b/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteNoDB.java
@@ -73,7 +73,7 @@ public abstract class JunctionTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestJunctionModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestJunctionModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteWithEmbeddedDB.java b/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
index 874ed47..afa132c 100644
--- a/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
+++ b/junction/src/test/java/com/ning/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
@@ -70,7 +70,7 @@ public abstract class JunctionTestSuiteWithEmbeddedDB extends GuicyKillbillTestS
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestJunctionModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestJunctionModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/osgi/src/main/java/com/ning/billing/osgi/glue/DefaultOSGIModule.java b/osgi/src/main/java/com/ning/billing/osgi/glue/DefaultOSGIModule.java
index 32d2811..42af5aa 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/glue/DefaultOSGIModule.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/glue/DefaultOSGIModule.java
@@ -21,6 +21,7 @@ import javax.servlet.http.HttpServlet;
 import javax.sql.DataSource;
 
 import org.osgi.service.http.HttpService;
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.osgi.DefaultOSGIKillbill;
@@ -46,11 +47,17 @@ public class DefaultOSGIModule extends AbstractModule {
 
     public static final String OSGI_NAMED = "osgi";
 
+    protected final ConfigSource configSource;
+
+    public DefaultOSGIModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     protected void installConfig() {
-        final OSGIConfig config = new ConfigurationObjectFactory(System.getProperties()).build(OSGIConfig.class);
+        final OSGIConfig config = new ConfigurationObjectFactory(configSource).build(OSGIConfig.class);
         bind(OSGIConfig.class).toInstance(config);
 
-        final OSGIDataSourceConfig osgiDataSourceConfig = new ConfigurationObjectFactory(System.getProperties()).build(OSGIDataSourceConfig.class);
+        final OSGIDataSourceConfig osgiDataSourceConfig = new ConfigurationObjectFactory(configSource).build(OSGIDataSourceConfig.class);
         bind(OSGIDataSourceConfig.class).toInstance(osgiDataSourceConfig);
     }
 
diff --git a/overdue/src/main/java/com/ning/billing/overdue/glue/DefaultOverdueModule.java b/overdue/src/main/java/com/ning/billing/overdue/glue/DefaultOverdueModule.java
index fb0989c..06e9e98 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/glue/DefaultOverdueModule.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/glue/DefaultOverdueModule.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.overdue.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.glue.OverdueModule;
@@ -37,6 +38,12 @@ import com.google.inject.AbstractModule;
 
 public class DefaultOverdueModule extends AbstractModule implements OverdueModule {
 
+    protected final ConfigSource configSource;
+
+    public DefaultOverdueModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     @Override
     protected void configure() {
         installOverdueUserApi();
@@ -46,7 +53,7 @@ public class DefaultOverdueModule extends AbstractModule implements OverdueModul
         installOverdueWrapperFactory();
         installOverdueEmail();
 
-        final OverdueProperties config = new ConfigurationObjectFactory(System.getProperties()).build(OverdueProperties.class);
+        final OverdueProperties config = new ConfigurationObjectFactory(configSource).build(OverdueProperties.class);
         bind(OverdueProperties.class).toInstance(config);
         //bind(ExtendedOverdueService.class).to(DefaultOverdueService.class).asEagerSingleton();
         bind(OverdueCheckNotifier.class).to(DefaultOverdueCheckNotifier.class).asEagerSingleton();
diff --git a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java
index e5a4cca..411e922 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModule.java
@@ -16,10 +16,7 @@
 
 package com.ning.billing.overdue.glue;
 
-import java.util.Properties;
-
 import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.mock.glue.MockAccountModule;
 import com.ning.billing.mock.glue.MockEntitlementModule;
@@ -36,17 +33,8 @@ import com.ning.billing.util.glue.CustomFieldModule;
 
 public class TestOverdueModule extends DefaultOverdueModule {
 
-    protected final ConfigSource configSource;
-
-    public TestOverdueModule() {
-        final Properties properties = new Properties(System.getProperties());
-        // Speed up the bus
-        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
-        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-        configSource = new SimplePropertyConfigSource(properties);
-
-        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
-        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    public TestOverdueModule(final ConfigSource configSource) {
+        super(configSource);
     }
 
     @Override
@@ -54,10 +42,10 @@ public class TestOverdueModule extends DefaultOverdueModule {
         super.configure();
 
         install(new AuditModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         install(new CallContextModule());
         install(new CustomFieldModule());
-        install(new EmailModule());
+        install(new EmailModule(configSource));
         install(new MockAccountModule());
         install(new MockEntitlementModule());
         install(new MockInvoiceModule());
diff --git a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleNoDB.java b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleNoDB.java
index 5754d8f..006f79a 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleNoDB.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleNoDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.overdue.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 import com.ning.billing.mock.glue.MockNotificationQueueModule;
@@ -23,13 +25,17 @@ import com.ning.billing.util.bus.InMemoryBusModule;
 
 public class TestOverdueModuleNoDB extends TestOverdueModule {
 
+    public TestOverdueModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
 
         install(new GuicyKillbillTestNoDBModule());
         install(new MockNonEntityDaoModule());
-        install(new MockNotificationQueueModule());
+        install(new MockNotificationQueueModule(configSource));
         install(new InMemoryBusModule(configSource));
     }
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleWithEmbeddedDB.java b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleWithEmbeddedDB.java
index faa4480..863b5ab 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleWithEmbeddedDB.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/glue/TestOverdueModuleWithEmbeddedDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.overdue.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.glue.BusModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
@@ -23,13 +25,17 @@ import com.ning.billing.util.glue.NotificationQueueModule;
 
 public class TestOverdueModuleWithEmbeddedDB extends TestOverdueModule {
 
+    public TestOverdueModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
 
         install(new GuicyKillbillTestWithEmbeddedDBModule());
         install(new NonEntityDaoModule());
-        install(new NotificationQueueModule());
+        install(new NotificationQueueModule(configSource));
         install(new BusModule(configSource));
     }
 }
diff --git a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java
index 5db2ff7..641b87e 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteNoDB.java
@@ -32,7 +32,6 @@ import com.ning.billing.overdue.service.DefaultOverdueService;
 import com.ning.billing.overdue.wrapper.OverdueWrapperFactory;
 import com.ning.billing.util.callcontext.InternalCallContextFactory;
 import com.ning.billing.util.notificationq.NotificationQueueService;
-import com.ning.billing.util.notificationq.NotificationQueueService.NotificationQueueAlreadyExists;
 import com.ning.billing.util.svcapi.account.AccountInternalApi;
 import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
 import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
@@ -85,7 +84,7 @@ public abstract class OverdueTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestOverdueModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestOverdueModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
index 9f5777e..7eeca11 100644
--- a/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
+++ b/overdue/src/test/java/com/ning/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
@@ -90,7 +90,7 @@ public abstract class OverdueTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestOverdueModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestOverdueModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/payment/src/main/java/com/ning/billing/payment/glue/PaymentModule.java b/payment/src/main/java/com/ning/billing/payment/glue/PaymentModule.java
index 45ac567..fd45392 100644
--- a/payment/src/main/java/com/ning/billing/payment/glue/PaymentModule.java
+++ b/payment/src/main/java/com/ning/billing/payment/glue/PaymentModule.java
@@ -16,14 +16,12 @@
 
 package com.ning.billing.payment.glue;
 
-import java.util.Properties;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
 import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.osgi.api.OSGIServiceRegistration;
 import com.ning.billing.payment.api.DefaultPaymentApi;
@@ -47,7 +45,6 @@ import com.ning.billing.payment.retry.PluginFailureRetryService.PluginFailureRet
 import com.ning.billing.util.config.PaymentConfig;
 import com.ning.billing.util.svcapi.payment.PaymentInternalApi;
 
-import com.google.common.annotations.VisibleForTesting;
 import com.google.inject.AbstractModule;
 import com.google.inject.TypeLiteral;
 import com.google.inject.name.Names;
@@ -59,21 +56,12 @@ public class PaymentModule extends AbstractModule {
 
     public static final String PLUGIN_EXECUTOR_NAMED = "PluginExecutor";
 
-    @VisibleForTesting
     protected ConfigSource configSource;
 
-    public PaymentModule() {
-        this(System.getProperties());
-    }
-
     public PaymentModule(final ConfigSource configSource) {
         this.configSource = configSource;
     }
 
-    public PaymentModule(final Properties properties) {
-        this(new SimplePropertyConfigSource(properties));
-    }
-
     protected void installPaymentDao() {
         bind(PaymentDao.class).to(DefaultPaymentDao.class).asEagerSingleton();
     }
diff --git a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
index 915607b..8bfcd03 100644
--- a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
+++ b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
@@ -19,6 +19,7 @@ package com.ning.billing.payment.glue;
 import java.util.UUID;
 
 import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.ObjectType;
 import com.ning.billing.mock.glue.MockAccountModule;
@@ -28,30 +29,22 @@ import com.ning.billing.mock.glue.MockInvoiceModule;
 import com.ning.billing.mock.glue.MockNotificationQueueModule;
 import com.ning.billing.payment.TestPaymentHelper;
 import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
+import com.ning.billing.util.bus.InMemoryBusModule;
 import com.ning.billing.util.callcontext.InternalTenantContext;
 import com.ning.billing.util.clock.Clock;
 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.glue.BusModule;
-import com.ning.billing.util.glue.BusModule.BusType;
 import com.ning.billing.util.glue.CacheModule;
-import com.ning.billing.util.glue.CustomFieldModule;
-import com.ning.billing.util.glue.NotificationQueueModule;
-import com.ning.billing.util.glue.TagStoreModule;
 import com.ning.billing.util.svcapi.tag.TagInternalApi;
 import com.ning.billing.util.tag.Tag;
 
 import com.google.common.collect.ImmutableList;
 
-import static org.testng.Assert.assertNotNull;
-
 public class TestPaymentModule extends PaymentModule {
 
-
     private final Clock clock;
 
-    public TestPaymentModule(final Clock clock) {
+    public TestPaymentModule(final ConfigSource configSource, final Clock clock) {
+        super(configSource);
         this.clock = clock;
     }
 
@@ -69,13 +62,13 @@ public class TestPaymentModule extends PaymentModule {
     @Override
     protected void configure() {
         super.configure();
-        install(new BusModule(BusType.MEMORY));
-        install(new MockNotificationQueueModule());
+        install(new InMemoryBusModule(configSource));
+        install(new MockNotificationQueueModule(configSource));
         install(new MockInvoiceModule());
         install(new MockAccountModule());
         install(new MockEntitlementModule());
         install(new MockGlobalLockerModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         installExternalApis();
 
         bind(TestPaymentHelper.class).asEagerSingleton();
diff --git a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleNoDB.java b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleNoDB.java
index 6ae07e0..31791b3 100644
--- a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleNoDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleNoDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.payment.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 import com.ning.billing.payment.dao.MockPaymentDao;
@@ -24,8 +26,8 @@ import com.ning.billing.util.clock.Clock;
 
 public class TestPaymentModuleNoDB extends TestPaymentModule {
 
-    public TestPaymentModuleNoDB(final Clock clock) {
-        super(clock);
+    public TestPaymentModuleNoDB(final ConfigSource configSource, final Clock clock) {
+        super(configSource, clock);
     }
 
     @Override
diff --git a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleWithEmbeddedDB.java b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleWithEmbeddedDB.java
index a8d8109..1c984d1 100644
--- a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleWithEmbeddedDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModuleWithEmbeddedDB.java
@@ -16,14 +16,16 @@
 
 package com.ning.billing.payment.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestPaymentModuleWithEmbeddedDB extends TestPaymentModule {
 
-    public TestPaymentModuleWithEmbeddedDB(final Clock clock) {
-        super(clock);
+    public TestPaymentModuleWithEmbeddedDB(final ConfigSource configSource, final Clock clock) {
+        super(configSource, clock);
     }
 
     @Override
diff --git a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
index df47692..7acac6c 100644
--- a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
@@ -76,7 +76,7 @@ public abstract class PaymentTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
         loadSystemPropertiesFromClasspath("/resource.properties");
 
-        final Injector injector = Guice.createInjector(new TestPaymentModuleNoDB(getClock()));
+        final Injector injector = Guice.createInjector(new TestPaymentModuleNoDB(configSource, getClock()));
         injector.injectMembers(this);
     }
 
diff --git a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
index 0a94367..c116455 100644
--- a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
@@ -77,7 +77,7 @@ public abstract class PaymentTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
 
         loadSystemPropertiesFromClasspath("/resource.properties");
 
-        final Injector injector = Guice.createInjector(new TestPaymentModuleWithEmbeddedDB(getClock()));
+        final Injector injector = Guice.createInjector(new TestPaymentModuleWithEmbeddedDB(configSource, getClock()));
         injector.injectMembers(this);
     }
 
diff --git a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
index 7ac6d45..e6ff204 100644
--- a/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
+++ b/server/src/main/java/com/ning/billing/server/modules/KillbillServerModule.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.server.modules;
 
+import org.skife.config.ConfigSource;
+import org.skife.config.SimplePropertyConfigSource;
 import org.skife.jdbi.v2.DBI;
 import org.skife.jdbi.v2.IDBI;
 
@@ -107,30 +109,32 @@ public class KillbillServerModule extends AbstractModule {
     }
 
     protected void installKillbillModules() {
-        install(new EmailModule());
-        install(new CacheModule());
+        final ConfigSource configSource = new SimplePropertyConfigSource(System.getProperties());
+
+        install(new EmailModule(configSource));
+        install(new CacheModule(configSource));
         install(new GlobalLockerModule());
         install(new CustomFieldModule());
         install(new AuditModule());
-        install(new CatalogModule());
-        install(new BusModule());
-        install(new NotificationQueueModule());
+        install(new CatalogModule(configSource));
+        install(new BusModule(configSource));
+        install(new NotificationQueueModule(configSource));
         install(new CallContextModule());
-        install(new DefaultAccountModule());
-        install(new DefaultInvoiceModule());
+        install(new DefaultAccountModule(configSource));
+        install(new DefaultInvoiceModule(configSource));
         install(new TemplateModule());
-        install(new DefaultEntitlementModule());
-        install(new AnalyticsModule());
-        install(new PaymentModule());
+        install(new DefaultEntitlementModule(configSource));
+        install(new AnalyticsModule(configSource));
+        install(new PaymentModule(configSource));
         install(new BeatrixModule());
-        install(new DefaultJunctionModule());
-        install(new DefaultOverdueModule());
-        install(new TenantModule());
+        install(new DefaultJunctionModule(configSource));
+        install(new DefaultOverdueModule(configSource));
+        install(new TenantModule(configSource));
         install(new ExportModule());
         install(new TagStoreModule());
         install(new NonEntityDaoModule());
-        install(new DefaultOSGIModule());
-        install(new UsageModule());
+        install(new DefaultOSGIModule(configSource));
+        install(new UsageModule(configSource));
 
         installClock();
     }
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 31b7879..421caef 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -28,7 +28,9 @@ import javax.servlet.Servlet;
 
 import org.eclipse.jetty.servlet.FilterHolder;
 import org.joda.time.LocalDate;
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
+import org.skife.config.SimplePropertyConfigSource;
 import org.testng.annotations.AfterSuite;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
@@ -125,6 +127,10 @@ public class TestJaxrsBase extends KillbillClient {
 
     public static class InvoiceModuleWithMockSender extends DefaultInvoiceModule {
 
+        public InvoiceModuleWithMockSender(final ConfigSource configSource) {
+            super(configSource);
+        }
+
         @Override
         protected void installInvoiceNotifier() {
             bind(InvoiceNotifier.class).to(NullInvoiceNotifier.class).asEagerSingleton();
@@ -152,6 +158,10 @@ public class TestJaxrsBase extends KillbillClient {
 
         private static final class PaymentMockModule extends PaymentModule {
 
+            public PaymentMockModule(final ConfigSource configSource) {
+                super(configSource);
+            }
+
             @Override
             protected void installPaymentProviderPlugins(final PaymentConfig config) {
                 install(new MockPaymentProviderPluginModule(PLUGIN_NAME, getClock()));
@@ -160,6 +170,7 @@ public class TestJaxrsBase extends KillbillClient {
 
         @Override
         protected void installKillbillModules() {
+            final ConfigSource configSource = new SimplePropertyConfigSource(System.getProperties());
 
             /*
              * For a lack of getting module override working, copy all install modules from parent class...
@@ -171,30 +182,30 @@ public class TestJaxrsBase extends KillbillClient {
             install(new GuicyKillbillTestWithEmbeddedDBModule());
 
 
-            install(new EmailModule());
-            install(new CacheModule());
+            install(new EmailModule(configSource));
+            install(new CacheModule(configSource));
             install(new NonEntityDaoModule());
             install(new TestGlobalLockerModule(helper));
             install(new CustomFieldModule());
             install(new TagStoreModule());
             install(new AuditModule());
-            install(new CatalogModule());
-            install(new BusModule());
-            install(new NotificationQueueModule());
+            install(new CatalogModule(configSource));
+            install(new BusModule(configSource));
+            install(new NotificationQueueModule(configSource));
             install(new CallContextModule());
-            install(new DefaultAccountModule());
-            install(new InvoiceModuleWithMockSender());
+            install(new DefaultAccountModule(configSource));
+            install(new InvoiceModuleWithMockSender(configSource));
             install(new TemplateModule());
-            install(new DefaultEntitlementModule());
-            install(new AnalyticsModule());
-            install(new PaymentMockModule());
+            install(new DefaultEntitlementModule(configSource));
+            install(new AnalyticsModule(configSource));
+            install(new PaymentMockModule(configSource));
             install(new BeatrixModule());
-            install(new DefaultJunctionModule());
-            install(new DefaultOverdueModule());
-            install(new TenantModule());
+            install(new DefaultJunctionModule(configSource));
+            install(new DefaultOverdueModule(configSource));
+            install(new TenantModule(configSource));
             install(new ExportModule());
-            install(new DefaultOSGIModule());
-            install(new UsageModule());
+            install(new DefaultOSGIModule(configSource));
+            install(new UsageModule(configSource));
             installClock();
         }
     }
diff --git a/tenant/src/main/java/com/ning/billing/tenant/glue/TenantModule.java b/tenant/src/main/java/com/ning/billing/tenant/glue/TenantModule.java
index 17bdf5a..ddcc847 100644
--- a/tenant/src/main/java/com/ning/billing/tenant/glue/TenantModule.java
+++ b/tenant/src/main/java/com/ning/billing/tenant/glue/TenantModule.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.tenant.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.tenant.api.DefaultTenantService;
 import com.ning.billing.tenant.api.TenantService;
 import com.ning.billing.tenant.api.TenantUserApi;
@@ -27,6 +29,12 @@ import com.google.inject.AbstractModule;
 
 public class TenantModule extends AbstractModule {
 
+    protected final ConfigSource configSource;
+
+    public TenantModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     private void installConfig() {
     }
 
diff --git a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModule.java b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModule.java
index b59207d..62a715c 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModule.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModule.java
@@ -16,34 +16,22 @@
 
 package com.ning.billing.tenant.glue;
 
-import java.util.Properties;
-
 import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.util.glue.CacheModule;
 import com.ning.billing.util.glue.CallContextModule;
 
 public class TestTenantModule extends TenantModule {
 
-    protected final ConfigSource configSource;
-
-    public TestTenantModule() {
-        final Properties properties = new Properties(System.getProperties());
-        // Speed up the bus
-        properties.put("killbill.billing.util.persistent.bus.sleep", "10");
-        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-        configSource = new SimplePropertyConfigSource(properties);
-
-        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
-        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    public TestTenantModule(final ConfigSource configSource) {
+        super(configSource);
     }
 
     @Override
     protected void configure() {
         super.configure();
 
-        install(new CacheModule());
+        install(new CacheModule(configSource));
         install(new CallContextModule());
     }
 }
diff --git a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleNoDB.java b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleNoDB.java
index 91d463a..f369f2e 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleNoDB.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleNoDB.java
@@ -16,11 +16,17 @@
 
 package com.ning.billing.tenant.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 
 public class TestTenantModuleNoDB extends TestTenantModule {
 
+    public TestTenantModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleWithEmbeddedDB.java b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleWithEmbeddedDB.java
index 8a3821b..b05792a 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleWithEmbeddedDB.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/glue/TestTenantModuleWithEmbeddedDB.java
@@ -16,11 +16,17 @@
 
 package com.ning.billing.tenant.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 import com.ning.billing.util.glue.NonEntityDaoModule;
 
 public class TestTenantModuleWithEmbeddedDB extends TestTenantModule {
 
+    public TestTenantModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteNoDB.java b/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteNoDB.java
index 4f0f6fa..57272d2 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteNoDB.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteNoDB.java
@@ -28,7 +28,7 @@ public class TenantTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestTenantModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestTenantModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 }
diff --git a/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteWithEmbeddedDb.java b/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
index f1adbd1..6296380 100644
--- a/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
+++ b/tenant/src/test/java/com/ning/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
@@ -35,7 +35,7 @@ public class TenantTestSuiteWithEmbeddedDb extends GuicyKillbillTestSuiteWithEmb
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestTenantModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestTenantModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/usage/src/main/java/com/ning/billing/usage/glue/UsageModule.java b/usage/src/main/java/com/ning/billing/usage/glue/UsageModule.java
index 38f92ae..29af1c6 100644
--- a/usage/src/main/java/com/ning/billing/usage/glue/UsageModule.java
+++ b/usage/src/main/java/com/ning/billing/usage/glue/UsageModule.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.usage.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.usage.api.UsageUserApi;
 import com.ning.billing.usage.api.user.DefaultUsageUserApi;
 import com.ning.billing.usage.dao.DefaultRolledUpUsageDao;
@@ -25,6 +27,12 @@ import com.google.inject.AbstractModule;
 
 public class UsageModule extends AbstractModule {
 
+    protected final ConfigSource configSource;
+
+    public UsageModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     protected void installRolledUpUsageDao() {
         bind(RolledUpUsageDao.class).to(DefaultRolledUpUsageDao.class).asEagerSingleton();
     }
diff --git a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModule.java b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModule.java
index 2456757..2ba70bc 100644
--- a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModule.java
+++ b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModule.java
@@ -16,8 +16,14 @@
 
 package com.ning.billing.usage.glue;
 
+import org.skife.config.ConfigSource;
+
 public class TestUsageModule extends UsageModule {
 
+    public TestUsageModule(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void configure() {
         super.configure();
diff --git a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleNoDB.java b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleNoDB.java
index 57ee1bf..4015808 100644
--- a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleNoDB.java
+++ b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleNoDB.java
@@ -16,10 +16,16 @@
 
 package com.ning.billing.usage.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 
 public class TestUsageModuleNoDB extends TestUsageModule {
 
+    public TestUsageModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleWithEmbeddedDB.java b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleWithEmbeddedDB.java
index 8a3b6ac..6ed8a2e 100644
--- a/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleWithEmbeddedDB.java
+++ b/usage/src/test/java/com/ning/billing/usage/glue/TestUsageModuleWithEmbeddedDB.java
@@ -16,10 +16,16 @@
 
 package com.ning.billing.usage.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 
 public class TestUsageModuleWithEmbeddedDB extends TestUsageModule {
 
+    public TestUsageModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     public void configure() {
         super.configure();
diff --git a/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteNoDB.java b/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteNoDB.java
index 23ba2b9..39126c9 100644
--- a/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteNoDB.java
+++ b/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteNoDB.java
@@ -30,7 +30,7 @@ public class UsageTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestUsageModuleNoDB());
+        final Injector injector = Guice.createInjector(new TestUsageModuleNoDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteWithEmbeddedDB.java b/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteWithEmbeddedDB.java
index 7b92aa3..cf3a123 100644
--- a/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteWithEmbeddedDB.java
+++ b/usage/src/test/java/com/ning/billing/usage/UsageTestSuiteWithEmbeddedDB.java
@@ -30,7 +30,7 @@ public class UsageTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbe
 
     @BeforeClass(groups = "slow")
     protected void beforeClass() throws Exception {
-        final Injector injector = Guice.createInjector(new TestUsageModuleWithEmbeddedDB());
+        final Injector injector = Guice.createInjector(new TestUsageModuleWithEmbeddedDB(configSource));
         injector.injectMembers(this);
     }
 
diff --git a/util/src/main/java/com/ning/billing/util/bus/PersistentBusConfig.java b/util/src/main/java/com/ning/billing/util/bus/PersistentBusConfig.java
index cf27ca6..6ca9bdc 100644
--- a/util/src/main/java/com/ning/billing/util/bus/PersistentBusConfig.java
+++ b/util/src/main/java/com/ning/billing/util/bus/PersistentBusConfig.java
@@ -24,7 +24,7 @@ public interface PersistentBusConfig extends PersistentQueueConfig {
 
     @Override
     @Config("killbill.billing.util.persistent.bus.sleep")
-    @Default("500")
+    @Default("3000")
     public long getSleepTimeMs();
 
     @Config("killbill.billing.util.persistent.bus.off")
diff --git a/util/src/main/java/com/ning/billing/util/email/EmailModule.java b/util/src/main/java/com/ning/billing/util/email/EmailModule.java
index e8574cd..55d9cb4 100644
--- a/util/src/main/java/com/ning/billing/util/email/EmailModule.java
+++ b/util/src/main/java/com/ning/billing/util/email/EmailModule.java
@@ -16,13 +16,21 @@
 
 package com.ning.billing.util.email;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.google.inject.AbstractModule;
 
 public class EmailModule extends AbstractModule {
+
+    protected final ConfigSource configSource;
+
+    public EmailModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     protected void installEmailConfig() {
-        final EmailConfig config = new ConfigurationObjectFactory(System.getProperties()).build(EmailConfig.class);
+        final EmailConfig config = new ConfigurationObjectFactory(configSource).build(EmailConfig.class);
         bind(EmailConfig.class).toInstance(config);
     }
 
diff --git a/util/src/main/java/com/ning/billing/util/glue/BusModule.java b/util/src/main/java/com/ning/billing/util/glue/BusModule.java
index b736ea4..7712d6c 100644
--- a/util/src/main/java/com/ning/billing/util/glue/BusModule.java
+++ b/util/src/main/java/com/ning/billing/util/glue/BusModule.java
@@ -18,7 +18,6 @@ package com.ning.billing.util.glue;
 
 import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.util.bus.DefaultBusService;
 import com.ning.billing.util.bus.InMemoryInternalBus;
@@ -34,19 +33,11 @@ public class BusModule extends AbstractModule {
     private final BusType type;
     private final ConfigSource configSource;
 
-    public BusModule() {
-        this(BusType.PERSISTENT);
-    }
-
     public BusModule(final ConfigSource configSource) {
         this(BusType.PERSISTENT, configSource);
     }
 
-    public BusModule(final BusType type) {
-        this(type, new SimplePropertyConfigSource(System.getProperties()));
-    }
-
-    public BusModule(final BusType type, final ConfigSource configSource) {
+    protected BusModule(final BusType type, final ConfigSource configSource) {
         this.type = type;
         this.configSource = configSource;
     }
diff --git a/util/src/main/java/com/ning/billing/util/glue/CacheModule.java b/util/src/main/java/com/ning/billing/util/glue/CacheModule.java
index 827367c..df3c014 100644
--- a/util/src/main/java/com/ning/billing/util/glue/CacheModule.java
+++ b/util/src/main/java/com/ning/billing/util/glue/CacheModule.java
@@ -20,7 +20,6 @@ import java.util.UUID;
 
 import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
-import org.skife.config.SimplePropertyConfigSource;
 
 import com.ning.billing.util.cache.AccountRecordIdCacheLoader;
 import com.ning.billing.util.cache.Cachable;
@@ -47,10 +46,6 @@ public class CacheModule extends AbstractModule {
 
     private final ConfigSource configSource;
 
-    public CacheModule() {
-        this(new SimplePropertyConfigSource(System.getProperties()));
-    }
-
     public CacheModule(final ConfigSource configSource) {
         this.configSource = configSource;
     }
diff --git a/util/src/main/java/com/ning/billing/util/glue/NotificationQueueModule.java b/util/src/main/java/com/ning/billing/util/glue/NotificationQueueModule.java
index a5140e8..97f2a13 100644
--- a/util/src/main/java/com/ning/billing/util/glue/NotificationQueueModule.java
+++ b/util/src/main/java/com/ning/billing/util/glue/NotificationQueueModule.java
@@ -16,6 +16,7 @@
 
 package com.ning.billing.util.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
 import com.ning.billing.util.notificationq.DefaultNotificationQueueService;
@@ -26,9 +27,14 @@ import com.google.inject.AbstractModule;
 
 public class NotificationQueueModule extends AbstractModule {
 
+    protected final ConfigSource configSource;
+
+    public NotificationQueueModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
 
     protected void configureNotificationQueueConfig() {
-        final NotificationQueueConfig config = new ConfigurationObjectFactory(System.getProperties()).build(NotificationQueueConfig.class);
+        final NotificationQueueConfig config = new ConfigurationObjectFactory(configSource).build(NotificationQueueConfig.class);
         bind(NotificationQueueConfig.class).toInstance(config);
     }
     @Override
diff --git a/util/src/main/java/com/ning/billing/util/notificationq/NotificationQueueConfig.java b/util/src/main/java/com/ning/billing/util/notificationq/NotificationQueueConfig.java
index 7c7bab1..86cbd51 100644
--- a/util/src/main/java/com/ning/billing/util/notificationq/NotificationQueueConfig.java
+++ b/util/src/main/java/com/ning/billing/util/notificationq/NotificationQueueConfig.java
@@ -29,7 +29,7 @@ public interface NotificationQueueConfig extends PersistentQueueConfig {
 
     @Override
     @Config("killbill.billing.util.notificationq.sleep")
-    @Default("500")
+    @Default("3000")
     public long getSleepTimeMs();
 
     @Config("killbill.billing.util.notificationq.notification.off")
diff --git a/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java b/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
index 0605d36..4c0617f 100644
--- a/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
+++ b/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
@@ -17,9 +17,12 @@
 package com.ning.billing;
 
 import java.lang.reflect.Method;
+import java.util.Properties;
 
 import javax.inject.Inject;
 
+import org.skife.config.ConfigSource;
+import org.skife.config.SimplePropertyConfigSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.ITestResult;
@@ -48,7 +51,25 @@ public class GuicyKillbillTestSuite {
     protected ClockMock clock;
 
 
-    private final static ClockMock theStaticClock = new ClockMock();
+    private static final ClockMock theStaticClock = new ClockMock();
+
+    protected final ConfigSource configSource;
+
+    public GuicyKillbillTestSuite() {
+        final Properties properties = new Properties(System.getProperties());
+        properties.put("user.timezone", "UTC");
+
+        // Speed up the notification queue
+        properties.put("killbill.billing.util.notificationq.sleep", "100");
+        // Speed up the bus
+        properties.put("killbill.billing.util.persistent.bus.sleep", "100");
+        properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
+
+        configSource = new SimplePropertyConfigSource(properties);
+
+        // Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
+        System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
+    }
 
     public static ClockMock getClock() {
         return theStaticClock;
diff --git a/util/src/test/java/com/ning/billing/mock/glue/MockNotificationQueueModule.java b/util/src/test/java/com/ning/billing/mock/glue/MockNotificationQueueModule.java
index 93ef001..46fb7d9 100644
--- a/util/src/test/java/com/ning/billing/mock/glue/MockNotificationQueueModule.java
+++ b/util/src/test/java/com/ning/billing/mock/glue/MockNotificationQueueModule.java
@@ -16,18 +16,23 @@
 
 package com.ning.billing.mock.glue;
 
+import org.skife.config.ConfigSource;
 import org.skife.config.ConfigurationObjectFactory;
 
+import com.ning.billing.util.glue.NotificationQueueModule;
 import com.ning.billing.util.notificationq.MockNotificationQueueService;
 import com.ning.billing.util.notificationq.NotificationQueueConfig;
 import com.ning.billing.util.notificationq.NotificationQueueService;
 
-import com.google.inject.AbstractModule;
+public class MockNotificationQueueModule extends NotificationQueueModule {
 
-public class MockNotificationQueueModule extends AbstractModule {
+    public MockNotificationQueueModule(final ConfigSource configSource) {
+        super(configSource);
+    }
 
+    @Override
     protected void configureNotificationQueueConfig() {
-        final NotificationQueueConfig config = new ConfigurationObjectFactory(System.getProperties()).build(NotificationQueueConfig.class);
+        final NotificationQueueConfig config = new ConfigurationObjectFactory(configSource).build(NotificationQueueConfig.class);
         bind(NotificationQueueConfig.class).toInstance(config);
     }
     @Override
diff --git a/util/src/test/java/com/ning/billing/util/bus/InMemoryBusModule.java b/util/src/test/java/com/ning/billing/util/bus/InMemoryBusModule.java
index e178bad..21034e5 100644
--- a/util/src/test/java/com/ning/billing/util/bus/InMemoryBusModule.java
+++ b/util/src/test/java/com/ning/billing/util/bus/InMemoryBusModule.java
@@ -22,10 +22,6 @@ import com.ning.billing.util.glue.BusModule;
 
 public class InMemoryBusModule extends BusModule {
 
-    public InMemoryBusModule() {
-        super(BusType.MEMORY);
-    }
-
     public InMemoryBusModule(final ConfigSource configSource) {
         super(BusType.MEMORY, configSource);
     }
diff --git a/util/src/test/java/com/ning/billing/util/glue/TestUtilModule.java b/util/src/test/java/com/ning/billing/util/glue/TestUtilModule.java
index f45f2e6..d2932fa 100644
--- a/util/src/test/java/com/ning/billing/util/glue/TestUtilModule.java
+++ b/util/src/test/java/com/ning/billing/util/glue/TestUtilModule.java
@@ -17,6 +17,7 @@
 package com.ning.billing.util.glue;
 
 import org.mockito.Mockito;
+import org.skife.config.ConfigSource;
 
 import com.ning.billing.entitlement.api.timeline.EntitlementTimelineApi;
 
@@ -24,6 +25,12 @@ import com.google.inject.AbstractModule;
 
 public class TestUtilModule extends AbstractModule {
 
+    protected final ConfigSource configSource;
+
+    public TestUtilModule(final ConfigSource configSource) {
+        this.configSource = configSource;
+    }
+
     // TODO STEPH this is bad-- because DefaultAuditUserApi is using entitlementTimeline API
     public void installHack() {
         bind(EntitlementTimelineApi.class).toInstance(Mockito.mock(EntitlementTimelineApi.class));
@@ -32,7 +39,7 @@ public class TestUtilModule extends AbstractModule {
     @Override
     protected void configure() {
         //install(new CallContextModule());
-        install(new CacheModule());
+        install(new CacheModule(configSource));
 
         installHack();
     }
diff --git a/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleNoDB.java b/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleNoDB.java
index f7a7af6..ec302c8 100644
--- a/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleNoDB.java
+++ b/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleNoDB.java
@@ -16,6 +16,8 @@
 
 package com.ning.billing.util.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestNoDBModule;
 import com.ning.billing.mock.glue.MockGlobalLockerModule;
 import com.ning.billing.mock.glue.MockNonEntityDaoModule;
@@ -28,6 +30,9 @@ import com.ning.billing.util.bus.InMemoryBusModule;
 
 public class TestUtilModuleNoDB extends TestUtilModule {
 
+    public TestUtilModuleNoDB(final ConfigSource configSource) {
+        super(configSource);
+    }
 
     private void installAuditMock() {
         bind(AuditDao.class).toInstance(new MockAuditDao());
@@ -41,8 +46,8 @@ public class TestUtilModuleNoDB extends TestUtilModule {
 
         install(new MockNonEntityDaoModule());
         install(new MockGlobalLockerModule());
-        install(new InMemoryBusModule());
-        install(new MockNotificationQueueModule());
+        install(new InMemoryBusModule(configSource));
+        install(new MockNotificationQueueModule(configSource));
 
         installAuditMock();
     }
diff --git a/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleWithEmbeddedDB.java b/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
index 5db3bf1..cdf1b98 100644
--- a/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
+++ b/util/src/test/java/com/ning/billing/util/glue/TestUtilModuleWithEmbeddedDB.java
@@ -16,10 +16,16 @@
 
 package com.ning.billing.util.glue;
 
+import org.skife.config.ConfigSource;
+
 import com.ning.billing.GuicyKillbillTestWithEmbeddedDBModule;
 
 public class TestUtilModuleWithEmbeddedDB extends TestUtilModule {
 
+    public TestUtilModuleWithEmbeddedDB(final ConfigSource configSource) {
+        super(configSource);
+    }
+
     @Override
     protected void configure() {
         super.configure();
@@ -28,8 +34,8 @@ public class TestUtilModuleWithEmbeddedDB extends TestUtilModule {
         install(new AuditModule());
         install(new TagStoreModule());
         install(new CustomFieldModule());
-        install(new BusModule());
-        install(new NotificationQueueModule());
+        install(new BusModule(configSource));
+        install(new NotificationQueueModule(configSource));
         install(new NonEntityDaoModule());
         install(new GlobalLockerModule());
     }
diff --git a/util/src/test/java/com/ning/billing/util/UtilTestSuiteNoDB.java b/util/src/test/java/com/ning/billing/util/UtilTestSuiteNoDB.java
index 8a707a4..2022493 100644
--- a/util/src/test/java/com/ning/billing/util/UtilTestSuiteNoDB.java
+++ b/util/src/test/java/com/ning/billing/util/UtilTestSuiteNoDB.java
@@ -55,7 +55,7 @@ public class UtilTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     @BeforeClass(groups = "fast")
     public void beforeClass() throws Exception {
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleNoDB());
+        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleNoDB(configSource));
         g.injectMembers(this);
     }
 
diff --git a/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java b/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
index ed154d0..410b21a 100644
--- a/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/com/ning/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -19,10 +19,8 @@ package com.ning.billing.util;
 import javax.inject.Inject;
 
 import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterTest;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeTest;
 
 import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
 import com.ning.billing.util.audit.dao.AuditDao;
@@ -72,7 +70,7 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
 
     @BeforeClass(groups = "slow")
     public void beforeClass() throws Exception {
-        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleWithEmbeddedDB());
+        final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleWithEmbeddedDB(configSource));
         g.injectMembers(this);
     }