killbill-aplcache
Merge remote-tracking branch 'origin/test-fixes' into test-fixes-doc Signed-off-by: …
5/3/2018 11:24:30 AM
Changes
Details
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
index 992d312..a34483e 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/KillbillClient.java
@@ -358,16 +358,4 @@ public abstract class KillbillClient extends GuicyKillbillTestSuiteWithEmbeddedD
return new Account(accountId, name, length, externalKey, email, null, currency, parentAccountId, isPaymentDelegatedToParent, null, null, timeZone,
address1, address2, postalCode, company, city, state, country, locale, phone, notes, false, false, null, null, EMPTY_AUDIT_LOGS);
}
-
- /**
- * We could implement a ClockResource in jaxrs with the ability to sync on user token
- * but until we have a strong need for it, this is in the TODO list...
- */
- protected void crappyWaitForLackOfProperSynchonization() throws Exception {
- crappyWaitForLackOfProperSynchonization(5000);
- }
-
- private void crappyWaitForLackOfProperSynchonization(int sleepValueMSec) throws Exception {
- Thread.sleep(sleepValueMSec);
- }
}
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
index b13e376..0c1e17e 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestOverdue.java
@@ -88,17 +88,19 @@ public class TestOverdue extends TestJaxrsBase {
}).reverse().sortedCopy(invoicesForAccount);
for (final Invoice invoice : mostRecentInvoiceFirst) {
if (invoice.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-
final InvoicePayment invoicePayment = new InvoicePayment();
invoicePayment.setPurchasedAmount(invoice.getAmount());
invoicePayment.setAccountId(accountJson.getAccountId());
invoicePayment.setTargetInvoiceId(invoice.getInvoiceId());
+ callbackServlet.pushExpectedEvents(ExtBusEventType.INVOICE_PAYMENT_SUCCESS, ExtBusEventType.PAYMENT_SUCCESS);
invoiceApi.createInstantPayment(invoice.getInvoiceId(), invoicePayment, true, NULL_PLUGIN_PROPERTIES, requestOptions);
+ callbackServlet.assertListenerStatus();
}
}
// Wait a bit for overdue to pick up the payment events...
- crappyWaitForLackOfProperSynchonization();
+ callbackServlet.pushExpectedEvents(ExtBusEventType.TAG_DELETION, ExtBusEventType.BLOCKING_STATE, ExtBusEventType.OVERDUE_CHANGE);
+ callbackServlet.assertListenerStatus();
// Verify we're in clear state
Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
@@ -167,8 +169,14 @@ public class TestOverdue extends TestJaxrsBase {
// move a month a wait for invoicing
// No payment will be triggered as the account doesn't have a payment method
+ callbackServlet.pushExpectedEvents(ExtBusEventType.SUBSCRIPTION_PHASE,
+ ExtBusEventType.INVOICE_CREATION,
+ ExtBusEventType.INVOICE_PAYMENT_FAILED,
+ ExtBusEventType.SUBSCRIPTION_PHASE,
+ ExtBusEventType.INVOICE_CREATION,
+ ExtBusEventType.INVOICE_PAYMENT_FAILED);
clock.addMonths(1);
- crappyWaitForLackOfProperSynchonization();
+ callbackServlet.assertListenerStatus();
// Get the invoices
final List<Invoice> invoices = accountApi.getInvoicesForAccount(accountJson.getAccountId(), requestOptions);
@@ -183,8 +191,14 @@ public class TestOverdue extends TestJaxrsBase {
Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
Assert.assertTrue(accountApi.getOverdueAccount(accountJsonNoTag.getAccountId(), requestOptions).isClearState());
+ callbackServlet.pushExpectedEvents(ExtBusEventType.INVOICE_CREATION,
+ ExtBusEventType.INVOICE_CREATION,
+ ExtBusEventType.INVOICE_PAYMENT_FAILED,
+ ExtBusEventType.INVOICE_PAYMENT_FAILED,
+ ExtBusEventType.BLOCKING_STATE,
+ ExtBusEventType.OVERDUE_CHANGE);
clock.addDays(30);
- crappyWaitForLackOfProperSynchonization();
+ callbackServlet.assertListenerStatus();
// This account is not expected to move to OD1 state because it does not match with exclusion controlTag defined
Assert.assertTrue(accountApi.getOverdueAccount(accountJson.getAccountId(), requestOptions).isClearState());
diff --git a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
index eb0c634..e5ef206 100644
--- a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
+++ b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
@@ -27,6 +27,7 @@ import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.killbill.billing.api.AbortAfterFirstFailureListener;
import org.killbill.billing.api.FlakyInvokedMethodListener;
+import org.killbill.billing.api.FlakyRetryAnalyzer;
import org.killbill.billing.callcontext.InternalTenantContext;
import org.killbill.billing.callcontext.MutableCallContext;
import org.killbill.billing.callcontext.MutableInternalCallContext;
@@ -232,7 +233,11 @@ public class GuicyKillbillTestSuite implements IHookable {
(result.getEndMillis() - result.getStartMillis()) / 1000});
log.info("***************************************************************************************************");
if (!hasFailed && !result.isSuccess()) {
- hasFailed = true;
+ // Ignore if the current test method is flaky
+ final boolean isFlakyTest = result.getMethod().getRetryAnalyzer() != null && result.getMethod().getRetryAnalyzer() instanceof FlakyRetryAnalyzer;
+ if (!isFlakyTest) {
+ hasFailed = true;
+ }
}
}