killbill-memoizeit
Changes
entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java 12(+12 -0)
junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteWithEmbeddedDB.java 12(+12 -0)
payment/src/main/java/org/killbill/billing/payment/core/sm/control/CompletionControlOperation.java 5(+5 -0)
payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlCompleted.java 5(+5 -0)
payment/src/main/java/org/killbill/billing/payment/core/sm/payments/PaymentOperation.java 23(+2 -21)
subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteNoDB.java 12(+12 -0)
Details
diff --git a/account/src/test/java/org/killbill/billing/account/AccountTestSuiteNoDB.java b/account/src/test/java/org/killbill/billing/account/AccountTestSuiteNoDB.java
index 447b18d..d892e83 100644
--- a/account/src/test/java/org/killbill/billing/account/AccountTestSuiteNoDB.java
+++ b/account/src/test/java/org/killbill/billing/account/AccountTestSuiteNoDB.java
@@ -18,17 +18,11 @@
package org.killbill.billing.account;
-import org.killbill.billing.account.api.ImmutableAccountInternalApi;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-
import org.killbill.billing.GuicyKillbillTestSuiteNoDB;
import org.killbill.billing.account.api.AccountUserApi;
+import org.killbill.billing.account.api.ImmutableAccountInternalApi;
import org.killbill.billing.account.dao.AccountDao;
import org.killbill.billing.account.glue.TestAccountModuleNoDB;
-import org.killbill.bus.api.PersistentBus;
-import org.killbill.clock.Clock;
import org.killbill.billing.util.audit.dao.AuditDao;
import org.killbill.billing.util.cache.CacheControllerDispatcher;
import org.killbill.billing.util.customfield.dao.CustomFieldDao;
@@ -36,6 +30,11 @@ import org.killbill.billing.util.dao.NonEntityDao;
import org.killbill.billing.util.tag.api.user.TagEventBuilder;
import org.killbill.billing.util.tag.dao.TagDao;
import org.killbill.billing.util.tag.dao.TagDefinitionDao;
+import org.killbill.bus.api.PersistentBus;
+import org.killbill.clock.Clock;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeMethod;
import com.google.inject.Guice;
import com.google.inject.Inject;
@@ -70,12 +69,20 @@ public abstract class AccountTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestAccountModuleNoDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
bus.start();
}
diff --git a/account/src/test/java/org/killbill/billing/account/AccountTestSuiteWithEmbeddedDB.java b/account/src/test/java/org/killbill/billing/account/AccountTestSuiteWithEmbeddedDB.java
index 1e146a5..2f20eda 100644
--- a/account/src/test/java/org/killbill/billing/account/AccountTestSuiteWithEmbeddedDB.java
+++ b/account/src/test/java/org/killbill/billing/account/AccountTestSuiteWithEmbeddedDB.java
@@ -69,12 +69,20 @@ public abstract class AccountTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestAccountModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
controllerDispatcher.clearAll();
bus.start();
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/BeatrixTestSuiteNoDB.java b/beatrix/src/test/java/org/killbill/billing/beatrix/BeatrixTestSuiteNoDB.java
index 0b30880..9e1af49 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/BeatrixTestSuiteNoDB.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/BeatrixTestSuiteNoDB.java
@@ -27,6 +27,10 @@ public abstract class BeatrixTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new BeatrixIntegrationModuleNoDB(configSource));
injector.injectMembers(this);
}
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
index 33fe5ab..f743af8 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
@@ -306,6 +306,10 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB implemen
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final InvoiceConfig defaultInvoiceConfig = new ConfigurationObjectFactory(skifeConfigSource).build(InvoiceConfig.class);
invoiceConfig = new ConfigurableInvoiceConfig(defaultInvoiceConfig);
// The default value is 50, i.e. wait 50 x 100ms = 5s to get the lock. This isn't always enough and can lead to random tests failures
diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithFakeKPMPlugin.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithFakeKPMPlugin.java
index 60e3176..f3892bf 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithFakeKPMPlugin.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestWithFakeKPMPlugin.java
@@ -312,12 +312,20 @@ public class TestWithFakeKPMPlugin extends TestIntegrationBase {
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector g = Guice.createInjector(Stage.PRODUCTION, Modules.override(new BeatrixIntegrationModule(configSource)).with(new OverrideModuleForOSGI()));
g.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
log.debug("RESET TEST FRAMEWORK");
cleanupAllTables();
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteNoDB.java b/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteNoDB.java
index 3109de4..1301e8e 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteNoDB.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteNoDB.java
@@ -52,6 +52,10 @@ public abstract class CatalogTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestCatalogModuleNoDB(configSource));
injector.injectMembers(this);
}
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteWithEmbeddedDB.java b/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteWithEmbeddedDB.java
index a556b15..2767ce8 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteWithEmbeddedDB.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/CatalogTestSuiteWithEmbeddedDB.java
@@ -47,6 +47,10 @@ public class CatalogTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEm
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestCatalogModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteNoDB.java b/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteNoDB.java
index df95234..cd116fc 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteNoDB.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteNoDB.java
@@ -69,17 +69,29 @@ public abstract class EntitlementTestSuiteNoDB extends GuicyKillbillTestSuiteNoD
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestEntitlementModuleNoDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
bus.start();
}
@AfterMethod(groups = "fast")
public void afterMethod() {
+ if (hasFailed()) {
+ return;
+ }
+
bus.stop();
}
}
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java b/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
index 27c7b67..b8f8c94 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/EntitlementTestSuiteWithEmbeddedDB.java
@@ -130,12 +130,20 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(Stage.PRODUCTION, new TestEntitlementModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
startTestFamework(testListener, clock, busService, subscriptionBaseService, entitlementService);
this.catalog = initCatalog(catalogService);
@@ -171,6 +179,10 @@ public class EntitlementTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWi
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
securityApi.logout();
stopTestFramework(testListener, busService, subscriptionBaseService, entitlementService);
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteNoDB.java b/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteNoDB.java
index dff38c1..e097fac 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteNoDB.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteNoDB.java
@@ -112,17 +112,29 @@ public abstract class InvoiceTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestInvoiceModuleNoDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() {
+ if (hasFailed()) {
+ return;
+ }
+
bus.start();
}
@AfterMethod(groups = "fast")
public void afterMethod() {
+ if (hasFailed()) {
+ return;
+ }
+
bus.stop();
}
}
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java b/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
index f0789e8..523e480 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/InvoiceTestSuiteWithEmbeddedDB.java
@@ -117,6 +117,10 @@ public abstract class InvoiceTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestInvoiceModuleWithEmbeddedDb(configSource));
injector.injectMembers(this);
}
@@ -124,6 +128,10 @@ public abstract class InvoiceTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@Override
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
controllerDispatcher.clearAll();
bus.start();
@@ -142,6 +150,10 @@ public abstract class InvoiceTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
bus.stop();
stopInvoiceService(invoiceService);
}
diff --git a/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestSuiteNoDB.java b/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestSuiteNoDB.java
index ee72582..4d4eb02 100644
--- a/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestSuiteNoDB.java
+++ b/jaxrs/src/test/java/org/killbill/billing/jaxrs/JaxrsTestSuiteNoDB.java
@@ -34,6 +34,10 @@ public abstract class JaxrsTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestJaxrsModuleNoDB(configSource));
injector.injectMembers(this);
}
diff --git a/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteNoDB.java b/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteNoDB.java
index c471a7d..eaa44c9 100644
--- a/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteNoDB.java
+++ b/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteNoDB.java
@@ -60,17 +60,29 @@ public abstract class JunctionTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestJunctionModuleNoDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
bus.start();
}
@AfterMethod(groups = "fast")
public void afterMethod() {
+ if (hasFailed()) {
+ return;
+ }
+
bus.stop();
}
}
diff --git a/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteWithEmbeddedDB.java b/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
index 859d024..499fd9a 100644
--- a/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
+++ b/junction/src/test/java/org/killbill/billing/junction/JunctionTestSuiteWithEmbeddedDB.java
@@ -99,12 +99,20 @@ public abstract class JunctionTestSuiteWithEmbeddedDB extends GuicyKillbillTestS
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(Stage.PRODUCTION, new TestJunctionModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
startTestFamework();
this.catalog = initCatalog(catalogService);
@@ -112,6 +120,10 @@ public abstract class JunctionTestSuiteWithEmbeddedDB extends GuicyKillbillTestS
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
stopTestFramework();
}
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
index d7d6462..5e2f224 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteNoDB.java
@@ -108,12 +108,20 @@ public abstract class OverdueTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestOverdueModuleNoDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
bus.start();
service.initialize();
service.start();
@@ -121,6 +129,10 @@ public abstract class OverdueTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@AfterMethod(groups = "fast")
public void afterMethod() {
+ if (hasFailed()) {
+ return;
+ }
+
service.stop();
bus.stop();
}
diff --git a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
index b74d629..da37b6c 100644
--- a/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
+++ b/overdue/src/test/java/org/killbill/billing/overdue/OverdueTestSuiteWithEmbeddedDB.java
@@ -102,12 +102,20 @@ public abstract class OverdueTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestOverdueModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
cacheControllerDispatcher.clearAll();
bus.start();
@@ -119,6 +127,10 @@ public abstract class OverdueTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
service.stop();
bus.unregister(listener);
bus.stop();
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/PluginControlPaymentProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/PluginControlPaymentProcessor.java
index 651d2d1..367db03 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/PluginControlPaymentProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/PluginControlPaymentProcessor.java
@@ -327,6 +327,7 @@ public class PluginControlPaymentProcessor extends ProcessorBase {
callContext,
internalCallContext);
+ log.debug("retryPaymentTransaction result: payment='{}'", payment);
paymentTransaction = Iterables.<PaymentTransaction>find(Lists.<PaymentTransaction>reverse(payment.getTransactions()),
new Predicate<PaymentTransaction>() {
@Override
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/CompletionControlOperation.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/CompletionControlOperation.java
index 7c503ea..91fea81 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/CompletionControlOperation.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/CompletionControlOperation.java
@@ -35,6 +35,8 @@ import org.killbill.billing.payment.dispatcher.PluginDispatcher;
import org.killbill.billing.payment.dispatcher.PluginDispatcher.PluginDispatcherReturnType;
import org.killbill.billing.util.config.definition.PaymentConfig;
import org.killbill.commons.locker.GlobalLocker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
@@ -44,6 +46,8 @@ import com.google.common.collect.ImmutableList;
//
public class CompletionControlOperation extends OperationControlCallback {
+ private static final Logger logger = LoggerFactory.getLogger(CompletionControlOperation.class);
+
private static final Joiner JOINER = Joiner.on(", ");
public CompletionControlOperation(final GlobalLocker locker,
@@ -84,6 +88,7 @@ public class CompletionControlOperation extends OperationControlCallback {
paymentStateContext.getCallContext());
try {
final Payment result = doCallSpecificOperationCallback();
+ logger.debug("doOperationCallback payment='{}', transaction='{}'", result, transaction);
((PaymentStateControlContext) paymentStateContext).setResult(result);
final boolean success = transaction.getTransactionStatus() == TransactionStatus.SUCCESS || transaction.getTransactionStatus() == TransactionStatus.PENDING;
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlCompleted.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlCompleted.java
index 4f67980..7c50297 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlCompleted.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlCompleted.java
@@ -34,6 +34,8 @@ import org.killbill.billing.payment.dao.PaymentTransactionModelDao;
import org.killbill.billing.payment.dao.PluginPropertySerializer;
import org.killbill.billing.payment.dao.PluginPropertySerializer.PluginPropertySerializerException;
import org.killbill.billing.payment.retry.BaseRetryService.RetryServiceScheduler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
@@ -41,6 +43,8 @@ import com.google.common.collect.Iterables;
public class DefaultControlCompleted implements EnteringStateCallback {
+ private static final Logger logger = LoggerFactory.getLogger(DefaultControlCompleted.class);
+
private final PaymentStateControlContext paymentStateContext;
private final RetryServiceScheduler retryServiceScheduler;
private final State retriedState;
@@ -61,6 +65,7 @@ public class DefaultControlCompleted implements EnteringStateCallback {
paymentStateContext.getCurrentTransaction().getId() :
null;
+ logger.debug("enteringState attemptId='{}', transactionId='{}', state='{}'", attempt.getId(), transactionId, state.getName());
// At this stage we can update the paymentAttempt state AND serialize the plugin properties. Control plugins will have had the opportunity to erase sensitive data if required.
retryablePaymentAutomatonRunner.getPaymentDao().updatePaymentAttemptWithProperties(attempt.getId(),
paymentStateContext.getPaymentMethodId(),
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/PaymentOperation.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/PaymentOperation.java
index cd77f0c..f6e42fa 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/PaymentOperation.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/payments/PaymentOperation.java
@@ -123,27 +123,6 @@ public abstract class PaymentOperation extends OperationCallbackBase<PaymentTran
@Override
protected abstract PaymentTransactionInfoPlugin doCallSpecificOperationCallback() throws PaymentPluginApiException;
- protected Iterable<PaymentTransactionModelDao> getOnLeavingStateExistingTransactionsForType(final TransactionType transactionType) {
- if (paymentStateContext.getOnLeavingStateExistingTransactions() == null || paymentStateContext.getOnLeavingStateExistingTransactions().isEmpty()) {
- return ImmutableList.of();
- }
- return Iterables.filter(paymentStateContext.getOnLeavingStateExistingTransactions(), new Predicate<PaymentTransactionModelDao>() {
- @Override
- public boolean apply(final PaymentTransactionModelDao input) {
- return input.getTransactionStatus() == TransactionStatus.SUCCESS && input.getTransactionType() == transactionType;
- }
- });
- }
-
- protected BigDecimal getSumAmount(final Iterable<PaymentTransactionModelDao> transactions) {
- BigDecimal result = BigDecimal.ZERO;
- final Iterator<PaymentTransactionModelDao> iterator = transactions.iterator();
- while (iterator.hasNext()) {
- result = result.add(iterator.next().getAmount());
- }
- return result;
- }
-
private OperationResult doOperationCallbackWithDispatchAndAccountLock(String pluginName) throws OperationException {
return dispatchWithAccountLockAndTimeout(pluginName, new DispatcherCallback<PluginDispatcherReturnType<OperationResult>, OperationException>() {
@Override
@@ -181,6 +160,7 @@ public abstract class PaymentOperation extends OperationCallbackBase<PaymentTran
throw new IllegalStateException("Payment plugin returned a null result");
}
+ logger.debug("Plugin returned paymentTransactionInfoPlugin='{}'", paymentInfoPlugin);
paymentStateContext.setPaymentTransactionInfoPlugin(paymentInfoPlugin);
return PaymentTransactionInfoPluginConverter.toOperationResult(paymentStateContext.getPaymentTransactionInfoPlugin());
} else {
@@ -194,6 +174,7 @@ public abstract class PaymentOperation extends OperationCallbackBase<PaymentTran
buildPaymentPluginStatusFromOperationResult(paymentStateContext.getOverridePluginOperationResult()),
null,
null);
+ logger.debug("Plugin bypassed, paymentTransactionInfoPlugin='{}'", paymentInfoPlugin);
paymentStateContext.setPaymentTransactionInfoPlugin(paymentInfoPlugin);
return paymentStateContext.getOverridePluginOperationResult();
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestDefaultAdminPaymentApi.java b/payment/src/test/java/org/killbill/billing/payment/api/TestDefaultAdminPaymentApi.java
index 3e7d30a..c2d81d2 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestDefaultAdminPaymentApi.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestDefaultAdminPaymentApi.java
@@ -49,12 +49,20 @@ public class TestDefaultAdminPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeClass();
mockPaymentProviderPlugin = (MockPaymentProviderPlugin) registry.getServiceForName(MockPaymentProviderPlugin.PLUGIN_NAME);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
mockPaymentProviderPlugin.clear();
@@ -104,6 +112,7 @@ public class TestDefaultAdminPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
ImmutableList.<PluginProperty>of(),
paymentOptions,
callContext);
+ Assert.assertEquals(payment.getTransactions().size(), 1);
final PaymentModelDao paymentModelDao = paymentDao.getPayment(payment.getId(), internalCallContext);
final PaymentTransactionModelDao paymentTransactionModelDao = paymentDao.getPaymentTransaction(payment.getTransactions().get(0).getId(), internalCallContext);
@@ -117,6 +126,7 @@ public class TestDefaultAdminPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
adminPaymentApi.fixPaymentTransactionState(payment, payment.getTransactions().get(0), TransactionStatus.PAYMENT_FAILURE, null, "AUTH_ERRORED", ImmutableList.<PluginProperty>of(), callContext);
+ Assert.assertEquals(paymentApi.getPayment(payment.getId(), false, false, ImmutableList.<PluginProperty>of(), callContext).getTransactions().size(), 1);
final PaymentModelDao refreshedPaymentModelDao = paymentDao.getPayment(payment.getId(), internalCallContext);
final PaymentTransactionModelDao refreshedPaymentTransactionModelDao = paymentDao.getPaymentTransaction(payment.getTransactions().get(0).getId(), internalCallContext);
Assert.assertEquals(refreshedPaymentModelDao.getStateName(), "AUTH_ERRORED");
@@ -127,6 +137,10 @@ public class TestDefaultAdminPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(refreshedPaymentTransactionModelDao.getGatewayErrorCode(), "");
Assert.assertEquals(refreshedPaymentTransactionModelDao.getGatewayErrorMsg(), "");
+ // Advance the clock to make sure the effective date of the new transaction is after the first one
+ clock.addDays(1);
+ assertListenerStatus();
+
// Verify subsequent payment retries work
retryService.retryPaymentTransaction(refreshedPaymentTransactionModelDao.getAttemptId(), ImmutableList.<String>of(MockPaymentControlProviderPlugin.PLUGIN_NAME), internalCallContext);
diff --git a/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteNoDB.java b/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteNoDB.java
index a41e524..c429872 100644
--- a/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteNoDB.java
+++ b/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteNoDB.java
@@ -115,12 +115,20 @@ public abstract class PaymentTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestPaymentModuleNoDB(configSource, getClock()));
injector.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
stateMachineConfigCache.clearPaymentStateMachineConfig(PLUGIN_NAME, internalCallContext);
stateMachineConfigCache.loadDefaultPaymentStateMachineConfig(PaymentModule.DEFAULT_STATE_MACHINE_PAYMENT_XML);
@@ -132,6 +140,10 @@ public abstract class PaymentTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@AfterMethod(groups = "fast")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
paymentExecutors.stop();
eventBus.stop();
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteWithEmbeddedDB.java b/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
index cf7454d..61dca40 100644
--- a/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
+++ b/payment/src/test/java/org/killbill/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
@@ -119,12 +119,20 @@ public abstract class PaymentTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestPaymentModuleWithEmbeddedDB(configSource, getClock()));
injector.injectMembers(this);
}
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
stateMachineConfigCache.clearPaymentStateMachineConfig(PLUGIN_NAME, internalCallContext);
@@ -141,6 +149,10 @@ public abstract class PaymentTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
janitor.stop();
eventBus.stop();
paymentExecutors.stop();
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestJaxrsBase.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestJaxrsBase.java
index 83e3d47..117d84f 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestJaxrsBase.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestJaxrsBase.java
@@ -240,6 +240,10 @@ public class TestJaxrsBase extends KillbillClient {
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
// TODO PIERRE Unclear why both are needed in beforeClass and beforeSuite
if (config == null) {
config = new ConfigurationObjectFactory(System.getProperties()).build(HttpServerConfig.class);
@@ -252,6 +256,10 @@ public class TestJaxrsBase extends KillbillClient {
@BeforeSuite(groups = "slow")
public void beforeSuite() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeSuite();
if (config == null) {
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/server/log/ServerTestSuiteNoDB.java b/profiles/killbill/src/test/java/org/killbill/billing/server/log/ServerTestSuiteNoDB.java
index f0e5e86..9d12db6 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/server/log/ServerTestSuiteNoDB.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/server/log/ServerTestSuiteNoDB.java
@@ -28,6 +28,10 @@ public abstract class ServerTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestServerModuleNoDB(configSource));
injector.injectMembers(this);
}
diff --git a/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteNoDB.java b/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteNoDB.java
index 255a4d1..3535366 100644
--- a/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteNoDB.java
+++ b/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteNoDB.java
@@ -126,6 +126,10 @@ public class SubscriptionTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestDefaultSubscriptionModuleNoDB(configSource));
g.injectMembers(this);
@@ -135,6 +139,10 @@ public class SubscriptionTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
// CLEANUP ALL DB TABLES OR IN MEMORY STRUCTURES
((MockSubscriptionDaoMemory) dao).reset();
@@ -167,6 +175,10 @@ public class SubscriptionTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@AfterMethod(groups = "fast")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
subscriptionTestInitializer.stopTestFramework(testListener, busService, subscriptionBaseService);
}
diff --git a/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteWithEmbeddedDB.java b/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteWithEmbeddedDB.java
index 4f443c0..b22a8c2 100644
--- a/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteWithEmbeddedDB.java
+++ b/subscription/src/test/java/org/killbill/billing/subscription/SubscriptionTestSuiteWithEmbeddedDB.java
@@ -105,6 +105,10 @@ public class SubscriptionTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteW
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestDefaultSubscriptionModuleWithEmbeddedDB(configSource));
g.injectMembers(this);
}
@@ -112,6 +116,10 @@ public class SubscriptionTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteW
@Override
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
subscriptionTestInitializer.startTestFramework(testListener, clock, busService, subscriptionBaseService);
@@ -124,6 +132,10 @@ public class SubscriptionTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteW
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
subscriptionTestInitializer.stopTestFramework(testListener, busService, subscriptionBaseService);
}
diff --git a/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteNoDB.java b/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteNoDB.java
index dac6c5d..5d15d41 100644
--- a/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteNoDB.java
+++ b/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteNoDB.java
@@ -28,6 +28,10 @@ public class TenantTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestTenantModuleNoDB(configSource));
injector.injectMembers(this);
}
diff --git a/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteWithEmbeddedDb.java b/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
index 45486dc..1c5b407 100644
--- a/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
+++ b/tenant/src/test/java/org/killbill/billing/tenant/TenantTestSuiteWithEmbeddedDb.java
@@ -55,6 +55,10 @@ public class TenantTestSuiteWithEmbeddedDb extends GuicyKillbillTestSuiteWithEmb
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestTenantModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
diff --git a/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteNoDB.java b/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteNoDB.java
index 2b58cea..54b2182 100644
--- a/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteNoDB.java
+++ b/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteNoDB.java
@@ -30,15 +30,11 @@ public class UsageTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestUsageModuleNoDB(configSource));
injector.injectMembers(this);
}
-
- @BeforeMethod(groups = "fast")
- public void beforeMethod() {
- }
-
- @AfterMethod(groups = "fast")
- public void afterMethod() {
- }
}
diff --git a/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteWithEmbeddedDB.java b/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteWithEmbeddedDB.java
index 81030d7..32c5aea 100644
--- a/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteWithEmbeddedDB.java
+++ b/usage/src/test/java/org/killbill/billing/usage/UsageTestSuiteWithEmbeddedDB.java
@@ -35,6 +35,10 @@ public class UsageTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuiteWithEmbe
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector injector = Guice.createInjector(new TestUsageModuleWithEmbeddedDB(configSource));
injector.injectMembers(this);
}
diff --git a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
index 9d48932..135f7aa 100644
--- a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
+++ b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
@@ -258,6 +258,6 @@ public class GuicyKillbillTestSuite implements IHookable {
}
public boolean hasFailed() {
- return hasFailed;
+ return hasFailed || AbortAfterFirstFailureListener.hasFailures();
}
}
diff --git a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteWithEmbeddedDB.java b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteWithEmbeddedDB.java
index 37e3f80..c173e59 100644
--- a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteWithEmbeddedDB.java
@@ -62,6 +62,10 @@ public class GuicyKillbillTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
cleanupAllTables();
controlCacheDispatcher.clearAll();
KillbillApiAopModule.resetDirtyDBFlag();
diff --git a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteNoDB.java b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteNoDB.java
index 920e5cb..cda04b3 100644
--- a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteNoDB.java
+++ b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteNoDB.java
@@ -75,17 +75,29 @@ public class UtilTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@BeforeClass(groups = "fast")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleNoDB(configSource));
g.injectMembers(this);
}
@BeforeMethod(groups = "fast")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
eventBus.start();
}
@AfterMethod(groups = "fast")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
eventBus.stop();
// Reset the security manager
ThreadContext.unbindSecurityManager();
diff --git a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
index f734d68..3868612 100644
--- a/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
+++ b/util/src/test/java/org/killbill/billing/util/UtilTestSuiteWithEmbeddedDB.java
@@ -98,6 +98,10 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
@BeforeClass(groups = "slow")
public void beforeClass() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
final Injector g = Guice.createInjector(Stage.PRODUCTION, new TestUtilModuleWithEmbeddedDB(configSource));
g.injectMembers(this);
@@ -114,6 +118,10 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
@Override
@BeforeMethod(groups = "slow")
public void beforeMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
super.beforeMethod();
eventsListener.reset();
@@ -124,6 +132,10 @@ public abstract class UtilTestSuiteWithEmbeddedDB extends GuicyKillbillTestSuite
@AfterMethod(groups = "slow")
public void afterMethod() throws Exception {
+ if (hasFailed()) {
+ return;
+ }
+
eventBus.unregister(eventsListener);
eventBus.stop();
}