killbill-uncached

Details

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 14d2139..8946d1f 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
@@ -21,6 +21,7 @@ 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 {
 
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 d322910..b9c86e6 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/InvoiceTestSuiteNoDB.java
@@ -25,6 +25,7 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 
+import com.ning.billing.GuicyKillbillTestSuiteNoDB;
 import com.ning.billing.KillbillTestSuite;
 import com.ning.billing.invoice.api.InvoiceMigrationApi;
 import com.ning.billing.invoice.api.InvoicePaymentApi;
@@ -50,11 +51,10 @@ import com.google.inject.Injector;
 
 import static org.testng.Assert.assertNotNull;
 
-public abstract class InvoiceTestSuiteNoDB extends KillbillTestSuite {
+public abstract class InvoiceTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
 
     private static final Logger log = LoggerFactory.getLogger(InvoiceTestSuiteNoDB.class);
 
-
     @Inject
     protected InternalBus bus;
     @Inject
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java b/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
index 1fde26e..1cfdfdd 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
@@ -23,12 +23,12 @@ import org.joda.time.DateTime;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.payment.PaymentTestSuite;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
 import com.ning.billing.util.events.PaymentErrorInternalEvent;
 import com.ning.billing.util.events.PaymentInfoInternalEvent;
 import com.ning.billing.util.jackson.ObjectMapper;
 
-public class TestEventJson extends PaymentTestSuite {
+public class TestEventJson extends PaymentTestSuiteNoDB {
     private final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups = "fast")
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
index 27c1399..c833cdc 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestPaymentApi.java
@@ -25,72 +25,42 @@ import org.joda.time.LocalDate;
 import org.mockito.Mockito;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
 import com.ning.billing.ErrorCode;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.Invoice;
-import com.ning.billing.mock.glue.MockClockModule;
-import com.ning.billing.mock.glue.MockJunctionModule;
-import com.ning.billing.mock.glue.MockNonEntityDaoModule;
 import com.ning.billing.payment.MockRecurringInvoiceItem;
-import com.ning.billing.payment.PaymentTestSuite;
-import com.ning.billing.payment.TestHelper;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
+import com.ning.billing.payment.TestPaymentHelper;
 import com.ning.billing.payment.api.Payment.PaymentAttempt;
-import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
 import com.ning.billing.payment.provider.DefaultNoOpPaymentMethodPlugin;
-import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.glue.CacheModule;
-import com.ning.billing.util.glue.CallContextModule;
-import com.ning.billing.util.glue.NonEntityDaoModule;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
-import com.ning.billing.util.svcsapi.bus.InternalBus.EventBusException;
-
-import com.google.inject.Inject;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
-@Guice(modules = {PaymentTestModuleWithMocks.class, MockClockModule.class, MockJunctionModule.class, CacheModule.class, MockNonEntityDaoModule.class, CallContextModule.class})
-public class TestPaymentApi extends PaymentTestSuite {
-    private static final Logger log = LoggerFactory.getLogger(TestPaymentApi.class);
+public class TestPaymentApi extends PaymentTestSuiteNoDB {
 
-    @Inject
-    private InternalBus eventBus;
-    @Inject
-    protected PaymentApi paymentApi;
-    @Inject
-    protected AccountInternalApi accountApi;
-    @Inject
-    protected TestHelper testHelper;
-    @Inject
-    protected Clock clock;
+    private static final Logger log = LoggerFactory.getLogger(TestPaymentApi.class);
 
     private Account account;
 
     @BeforeClass(groups = "fast")
-    public void setupClass() throws Exception {
+    public void setup() throws Exception {
+        super.setup();
         account = testHelper.createTestAccount("yoyo.yahoo.com", false);
     }
 
     @BeforeMethod(groups = "fast")
-    public void setUp() throws Exception {
+    public void setupTest() throws Exception {
+        super.setupTest();
         final PaymentMethodPlugin paymentMethodInfo = new DefaultNoOpPaymentMethodPlugin(UUID.randomUUID().toString(), true, null);
         testHelper.addTestPaymentMethod(account, paymentMethodInfo);
-        eventBus.start();
-    }
-
-    @AfterMethod(groups = "fast")
-    public void tearDown() throws EventBusException {
-        eventBus.stop();
     }
 
     @Test(groups = "fast")
@@ -181,7 +151,7 @@ public class TestPaymentApi extends PaymentTestSuite {
         assertEquals(initDefaultMethod.getId(), account.getPaymentMethodId());
 
         final PaymentMethodPlugin newPaymenrMethod = new DefaultNoOpPaymentMethodPlugin(UUID.randomUUID().toString(), true, null);
-        final UUID newPaymentMethodId = paymentApi.addPaymentMethod(PaymentTestModuleWithMocks.PLUGIN_TEST_NAME, account, true, newPaymenrMethod, callContext);
+        final UUID newPaymentMethodId = paymentApi.addPaymentMethod(TestPaymentHelper.PLUGIN_TEST_NAME, account, true, newPaymenrMethod, callContext);
         Mockito.when(account.getPaymentMethodId()).thenReturn(newPaymentMethodId);
 
         methods = paymentApi.getPaymentMethods(account, false, callContext);
diff --git a/payment/src/test/java/com/ning/billing/payment/core/TestPaymentMethodProcessor.java b/payment/src/test/java/com/ning/billing/payment/core/TestPaymentMethodProcessor.java
index ce87305..18c0f5d 100644
--- a/payment/src/test/java/com/ning/billing/payment/core/TestPaymentMethodProcessor.java
+++ b/payment/src/test/java/com/ning/billing/payment/core/TestPaymentMethodProcessor.java
@@ -18,43 +18,17 @@ package com.ning.billing.payment.core;
 
 import java.util.List;
 import java.util.UUID;
-import java.util.concurrent.ExecutorService;
 
 import org.mockito.Mockito;
 import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.ning.billing.account.api.Account;
-import com.ning.billing.util.config.PaymentConfig;
-import com.ning.billing.payment.PaymentTestSuite;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
 import com.ning.billing.payment.api.PaymentMethod;
-import com.ning.billing.payment.dao.MockPaymentDao;
-import com.ning.billing.payment.provider.DefaultPaymentProviderPluginRegistry;
 import com.ning.billing.payment.provider.ExternalPaymentProviderPlugin;
-import com.ning.billing.util.clock.ClockMock;
-import com.ning.billing.util.globallocker.GlobalLocker;
-import com.ning.billing.util.svcapi.account.AccountInternalApi;
-import com.ning.billing.util.svcapi.tag.TagInternalApi;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
 
-public class TestPaymentMethodProcessor extends PaymentTestSuite {
-
-    private PaymentMethodProcessor processor;
-
-    @BeforeMethod(groups = "fast")
-    public void setUp() throws Exception {
-        final DefaultPaymentProviderPluginRegistry pluginRegistry = new DefaultPaymentProviderPluginRegistry(Mockito.mock(PaymentConfig.class));
-        pluginRegistry.register(new ExternalPaymentProviderPlugin(new ClockMock()), ExternalPaymentProviderPlugin.PLUGIN_NAME);
-
-        final AccountInternalApi accountUserApi = Mockito.mock(AccountInternalApi.class);
-        final InternalBus bus = Mockito.mock(InternalBus.class);
-        final MockPaymentDao paymentDao = new MockPaymentDao();
-        final GlobalLocker globalLocker = Mockito.mock(GlobalLocker.class);
-        final ExecutorService executorService = Mockito.mock(ExecutorService.class);
-        final TagInternalApi tagUserApi =  Mockito.mock(TagInternalApi.class);
-        processor = new PaymentMethodProcessor(pluginRegistry, accountUserApi, bus, paymentDao, tagUserApi, globalLocker, executorService);
-    }
+public class TestPaymentMethodProcessor extends PaymentTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testGetExternalPaymentProviderPlugin() throws Exception {
@@ -63,12 +37,12 @@ public class TestPaymentMethodProcessor extends PaymentTestSuite {
         Mockito.when(account.getId()).thenReturn(accountId);
         Mockito.when(account.getExternalKey()).thenReturn(accountId.toString());
 
-        Assert.assertEquals(processor.getPaymentMethods(account, false, internalCallContext).size(), 0);
+        Assert.assertEquals(paymentMethodProcessor.getPaymentMethods(account, false, internalCallContext).size(), 0);
 
         // The first call should create the payment method
-        final ExternalPaymentProviderPlugin providerPlugin = processor.getExternalPaymentProviderPlugin(account, internalCallContext);
+        final ExternalPaymentProviderPlugin providerPlugin = paymentMethodProcessor.getExternalPaymentProviderPlugin(account, internalCallContext);
         Assert.assertEquals(providerPlugin.getName(), ExternalPaymentProviderPlugin.PLUGIN_NAME);
-        final List<PaymentMethod> paymentMethods = processor.getPaymentMethods(account, false, internalCallContext);
+        final List<PaymentMethod> paymentMethods = paymentMethodProcessor.getPaymentMethods(account, false, internalCallContext);
         Assert.assertEquals(paymentMethods.size(), 1);
         Assert.assertEquals(paymentMethods.get(0).getPluginName(), ExternalPaymentProviderPlugin.PLUGIN_NAME);
         Assert.assertEquals(paymentMethods.get(0).getAccountId(), account.getId());
@@ -76,10 +50,10 @@ public class TestPaymentMethodProcessor extends PaymentTestSuite {
         // The succeeding calls should not create any other payment method
         final UUID externalPaymentMethodId = paymentMethods.get(0).getId();
         for (int i = 0; i < 50; i++) {
-            final ExternalPaymentProviderPlugin foundProviderPlugin = processor.getExternalPaymentProviderPlugin(account, internalCallContext);
+            final ExternalPaymentProviderPlugin foundProviderPlugin = paymentMethodProcessor.getExternalPaymentProviderPlugin(account, internalCallContext);
             Assert.assertEquals(foundProviderPlugin.getName(), ExternalPaymentProviderPlugin.PLUGIN_NAME);
 
-            final List<PaymentMethod> foundPaymentMethods = processor.getPaymentMethods(account, false, internalCallContext);
+            final List<PaymentMethod> foundPaymentMethods = paymentMethodProcessor.getPaymentMethods(account, false, internalCallContext);
             Assert.assertEquals(foundPaymentMethods.size(), 1);
             Assert.assertEquals(foundPaymentMethods.get(0).getPluginName(), ExternalPaymentProviderPlugin.PLUGIN_NAME);
             Assert.assertEquals(foundPaymentMethods.get(0).getAccountId(), account.getId());
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
index a55e42b..7581025 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
@@ -48,32 +48,6 @@ import static org.testng.Assert.fail;
 
 public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
 
-    private PaymentDao paymentDao;
-    private DBTestingHelper helper;
-    private IDBI dbi;
-    private Clock clock;
-    private CacheControllerDispatcher controllerDispatcher;
-
-
-    @BeforeSuite(groups = "slow")
-    public void setup() throws IOException {
-        clock = new DefaultClock();
-        controllerDispatcher = new CacheControllerDispatcher();
-        setupDb();
-        paymentDao = new DefaultPaymentDao(dbi, clock, controllerDispatcher, new DefaultNonEntityDao(dbi));
-    }
-
-    private void setupDb() {
-        helper = KillbillTestSuiteWithEmbeddedDB.getDBTestingHelper();
-        if (helper.isUsingLocalInstance()) {
-            final DbiConfig config = new ConfigurationObjectFactory(System.getProperties()).build(DbiConfig.class);
-            final DBIProvider provider = new DBIProvider(config);
-            dbi = provider.get();
-        } else {
-            dbi = helper.getDBI();
-        }
-    }
-
     @Test(groups = "slow")
     public void testRefund() {
         final UUID accountId = UUID.randomUUID();
diff --git a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
new file mode 100644
index 0000000..571fb2f
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2010-2012 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.payment;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+
+import com.ning.billing.GuicyKillbillTestSuiteNoDB;
+import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.core.PaymentMethodProcessor;
+import com.ning.billing.payment.core.PaymentProcessor;
+import com.ning.billing.payment.glue.TestPaymentModuleNoDB;
+import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
+import com.ning.billing.payment.retry.FailedPaymentRetryService;
+import com.ning.billing.payment.retry.PluginFailureRetryService;
+import com.ning.billing.util.config.PaymentConfig;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
+import com.ning.billing.util.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+import static org.testng.Assert.assertNotNull;
+
+public abstract class PaymentTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
+
+    @Inject
+    protected PaymentConfig paymentConfig;
+    @Inject
+    protected PaymentProcessor paymentProcessor;
+    @Inject
+    protected PaymentMethodProcessor paymentMethodProcessor;
+    @Inject
+    protected InvoiceInternalApi invoiceApi;
+    @Inject
+    protected PaymentProviderPluginRegistry registry;
+    @Inject
+    protected FailedPaymentRetryService retryService;
+    @Inject
+    protected PluginFailureRetryService pluginRetryService;
+    @Inject
+    protected InternalBus eventBus;
+    @Inject
+    protected PaymentApi paymentApi;
+    @Inject
+    protected AccountInternalApi accountApi;
+    @Inject
+    protected TestPaymentHelper testHelper;
+
+
+
+    @BeforeClass(groups = "fast")
+    protected void setup() throws Exception {
+
+        loadSystemPropertiesFromClasspath("/resource.properties");
+
+        final Injector injector = Guice.createInjector(new TestPaymentModuleNoDB());
+        injector.injectMembers(this);
+    }
+
+    @BeforeMethod(groups = "fast")
+    public void setupTest() throws Exception {
+        eventBus.start();
+    }
+
+    @AfterMethod(groups = "fast")
+    public void cleanupTest()throws Exception  {
+        eventBus.stop();
+    }
+
+
+
+    private void loadSystemPropertiesFromClasspath(final String resource) {
+        final URL url = PaymentTestSuiteNoDB.class.getResource(resource);
+        assertNotNull(url);
+
+        try {
+            final Properties properties = System.getProperties();
+            properties.load(url.openStream());
+
+            properties.setProperty("killbill.payment.provider.default", TestPaymentHelper.PLUGIN_TEST_NAME);
+            properties.setProperty("killbill.payment.engine.events.off", "false");
+
+            //configSource = new SimplePropertyConfigSource(properties);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+}
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 50e82a6..bc3fef5 100644
--- a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
@@ -16,7 +16,91 @@
 
 package com.ning.billing.payment;
 
-import com.ning.billing.KillbillTestSuiteWithEmbeddedDB;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
 
-public abstract class PaymentTestSuiteWithEmbeddedDB extends KillbillTestSuiteWithEmbeddedDB {
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
+
+import com.ning.billing.GuicyKillbillTestSuiteWithEmbeddedDB;
+import com.ning.billing.payment.api.PaymentApi;
+import com.ning.billing.payment.core.PaymentMethodProcessor;
+import com.ning.billing.payment.core.PaymentProcessor;
+import com.ning.billing.payment.dao.PaymentDao;
+import com.ning.billing.payment.glue.TestPaymentModuleWithEmbeddedDB;
+import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
+import com.ning.billing.payment.retry.FailedPaymentRetryService;
+import com.ning.billing.payment.retry.PluginFailureRetryService;
+import com.ning.billing.util.config.PaymentConfig;
+import com.ning.billing.util.svcapi.account.AccountInternalApi;
+import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
+import com.ning.billing.util.svcsapi.bus.InternalBus;
+
+import com.google.inject.Guice;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+import static org.testng.Assert.assertNotNull;
+
+public abstract class PaymentTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbeddedDB {
+
+    @Inject
+    protected PaymentConfig paymentConfig;
+    @Inject
+    protected PaymentProcessor paymentProcessor;
+    @Inject
+    protected PaymentMethodProcessor paymentMethodProcessor;
+    @Inject
+    protected InvoiceInternalApi invoiceApi;
+    @Inject
+    protected PaymentProviderPluginRegistry registry;
+    @Inject
+    protected FailedPaymentRetryService retryService;
+    @Inject
+    protected PluginFailureRetryService pluginRetryService;
+    @Inject
+    protected InternalBus eventBus;
+    @Inject
+    protected PaymentApi paymentApi;
+    @Inject
+    protected AccountInternalApi accountApi;
+    @Inject
+    protected PaymentDao paymentDao;
+    @Inject
+    protected TestPaymentHelper testHelper;
+
+    @BeforeClass(groups = "slow")
+    protected void setup() throws Exception {
+
+        loadSystemPropertiesFromClasspath("/resource.properties");
+
+        final Injector injector = Guice.createInjector(new TestPaymentModuleWithEmbeddedDB());
+        injector.injectMembers(this);
+    }
+
+    @BeforeMethod(groups = "slow")
+    public void setupTest() throws Exception {
+        eventBus.start();
+    }
+
+    @AfterMethod(groups = "slow")
+    public void cleanupTest()throws Exception  {
+        eventBus.stop();
+    }
+
+
+
+    private void loadSystemPropertiesFromClasspath(final String resource) {
+        final URL url = PaymentTestSuiteWithEmbeddedDB.class.getResource(resource);
+        assertNotNull(url);
+
+        try {
+            final Properties properties = System.getProperties();
+            properties.load(url.openStream());
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentInfoPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentInfoPlugin.java
index 158f30e..26a40b9 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentInfoPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentInfoPlugin.java
@@ -23,14 +23,12 @@ import org.joda.time.DateTime;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.payment.PaymentTestSuite;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
 import com.ning.billing.payment.plugin.api.PaymentInfoPlugin.PaymentPluginStatus;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.ClockMock;
 
-public class TestDefaultNoOpPaymentInfoPlugin extends PaymentTestSuite {
-
-    private final Clock clock = new ClockMock();
+public class TestDefaultNoOpPaymentInfoPlugin extends PaymentTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testEquals() throws Exception {
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentMethodPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentMethodPlugin.java
index d093077..4d4a15c 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentMethodPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/TestDefaultNoOpPaymentMethodPlugin.java
@@ -22,12 +22,12 @@ import java.util.UUID;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
-import com.ning.billing.payment.PaymentTestSuite;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
 import com.ning.billing.payment.api.PaymentMethodPlugin.PaymentMethodKVInfo;
 
 import com.google.common.collect.ImmutableList;
 
-public class TestDefaultNoOpPaymentMethodPlugin extends PaymentTestSuite {
+public class TestDefaultNoOpPaymentMethodPlugin extends PaymentTestSuiteNoDB {
 
     @Test(groups = "fast")
     public void testEquals() throws Exception {
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/TestExternalPaymentProviderPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/TestExternalPaymentProviderPlugin.java
index 9c8a2c8..1741ed6 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/TestExternalPaymentProviderPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/TestExternalPaymentProviderPlugin.java
@@ -26,14 +26,14 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.ning.billing.account.api.Account;
-import com.ning.billing.payment.PaymentTestSuite;
+import com.ning.billing.payment.PaymentTestSuiteNoDB;
 import com.ning.billing.payment.plugin.api.PaymentInfoPlugin;
 import com.ning.billing.payment.plugin.api.PaymentInfoPlugin.PaymentPluginStatus;
 import com.ning.billing.payment.plugin.api.PaymentPluginApiException;
 import com.ning.billing.util.clock.Clock;
 import com.ning.billing.util.clock.ClockMock;
 
-public class TestExternalPaymentProviderPlugin extends PaymentTestSuite {
+public class TestExternalPaymentProviderPlugin extends PaymentTestSuiteNoDB {
 
     private final Clock clock = new ClockMock();
     private ExternalPaymentProviderPlugin plugin;
diff --git a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
index 3ca7eb4..7ea7797 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestRetryService.java
@@ -27,35 +27,17 @@ import java.util.concurrent.TimeoutException;
 import org.joda.time.LocalDate;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Guice;
 import org.testng.annotations.Test;
 
 import com.ning.billing.account.api.Account;
 import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.mock.glue.MockNonEntityDaoModule;
-import com.ning.billing.util.config.PaymentConfig;
 import com.ning.billing.invoice.api.Invoice;
-import com.ning.billing.mock.glue.MockClockModule;
-import com.ning.billing.mock.glue.MockJunctionModule;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.payment.api.Payment.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentApiException;
 import com.ning.billing.payment.api.PaymentStatus;
-import com.ning.billing.payment.core.PaymentProcessor;
 import com.ning.billing.payment.glue.DefaultPaymentService;
-import com.ning.billing.payment.glue.PaymentTestModuleWithMocks;
 import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
-import com.ning.billing.payment.provider.PaymentProviderPluginRegistry;
-import com.ning.billing.payment.retry.FailedPaymentRetryService;
-import com.ning.billing.payment.retry.PluginFailureRetryService;
-import com.ning.billing.util.clock.ClockMock;
-import com.ning.billing.util.glue.CacheModule;
-import com.ning.billing.util.glue.CallContextModule;
-import com.ning.billing.util.glue.NonEntityDaoModule;
-import com.ning.billing.util.svcapi.invoice.InvoiceInternalApi;
-import com.ning.billing.util.svcsapi.bus.InternalBus;
-
-import com.google.inject.Inject;
 
 import static com.jayway.awaitility.Awaitility.await;
 import static java.util.concurrent.TimeUnit.SECONDS;
@@ -63,48 +45,30 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
-@Guice(modules = {PaymentTestModuleWithMocks.class, MockClockModule.class, MockJunctionModule.class, CacheModule.class, CallContextModule.class, MockNonEntityDaoModule.class})
-public class TestRetryService extends PaymentTestSuite {
-    @Inject
-    private PaymentConfig paymentConfig;
-    @Inject
-    private InternalBus eventBus;
-    @Inject
-    private PaymentProcessor paymentProcessor;
-    @Inject
-    private InvoiceInternalApi invoiceApi;
-    @Inject
-    private TestHelper testHelper;
-    @Inject
-    private PaymentProviderPluginRegistry registry;
-    @Inject
-    private FailedPaymentRetryService retryService;
-    @Inject
-    private PluginFailureRetryService pluginRetryService;
-
-    @Inject
-    private ClockMock clock;
+public class TestRetryService extends PaymentTestSuiteNoDB {
 
     private MockPaymentProviderPlugin mockPaymentProviderPlugin;
 
+    @Override
     @BeforeMethod(groups = "fast")
-    public void setUp() throws Exception {
+    public void setupTest() throws Exception {
+        super.setupTest();
         pluginRetryService.initialize(DefaultPaymentService.SERVICE_NAME);
         pluginRetryService.start();
 
         retryService.initialize(DefaultPaymentService.SERVICE_NAME);
         retryService.start();
-        eventBus.start();
 
         mockPaymentProviderPlugin = (MockPaymentProviderPlugin) registry.getPlugin(null);
         mockPaymentProviderPlugin.clear();
     }
 
+    @Override
     @AfterMethod(groups = "fast")
-    public void tearDown() throws Exception {
+    public void cleanupTest() throws Exception {
+        super.cleanupTest();
         retryService.stop();
         pluginRetryService.stop();
-        eventBus.stop();
     }
 
     private Payment getPaymentForInvoice(final UUID invoiceId) throws PaymentApiException {