killbill-memoizeit

Merge branch 'integration' of github.com:ning/killbill

3/9/2012 8:35:58 PM

Details

diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
index cacbf01..58cc017 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/MockModule.java
@@ -68,7 +68,6 @@ public class MockModule extends AbstractModule {
         bind(ClockMock.class).asEagerSingleton();
         bind(Lifecycle.class).to(SubsetDefaultLifecycle.class).asEagerSingleton();
 
-
         final MysqlTestingHelper helper = new MysqlTestingHelper();
         bind(MysqlTestingHelper.class).toInstance(helper);
         if (helper.isUsingLocalInstance()) {
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
index b4a4019..8e517d1 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestIntegration.java
@@ -560,8 +560,6 @@ public class TestIntegration {
 
     @Test(enabled = true)
     public void testHappyPath() throws AccountApiException, EntitlementUserApiException {
-        long DELAY = 5000 * 10;
-
         Account account = accountUserApi.createAccount(getAccountData(3), null, null);
         assertNotNull(account);
 
@@ -597,8 +595,6 @@ public class TestIntegration {
 
     @Test
     public void testForMultipleRecurringPhases() throws AccountApiException, EntitlementUserApiException, InterruptedException {
-        final long DELAY = 50000;
-
         clock.setDeltaFromReality(new DateTime().getMillis() - clock.getUTCNow().getMillis());
 
         Account account = accountUserApi.createAccount(getAccountData(15), null, null);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
index df9e744..7209239 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/billing/TestDefaultBillingEvent.java
@@ -86,11 +86,11 @@ public class TestDefaultBillingEvent {
 	}
 
 	@Test(groups={"fast"})
-	public void testEventOrderingType() {
+	public void testEventTotalOrdering() {
 
-		BillingEvent event0 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CREATE);
-		BillingEvent event1 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CHANGE);
-		BillingEvent event2 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CANCEL);
+		BillingEvent event0 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CREATE, 1L);
+		BillingEvent event1 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.CANCEL, 2L);
+		BillingEvent event2 = createEvent(subscription(ID_ZERO), new DateTime("2012-01-01T00:02:04.000Z"), SubscriptionTransitionType.RE_CREATE, 3L);
 
 		SortedSet<BillingEvent> set = new TreeSet<BillingEvent>();
 		set.add(event2);
@@ -123,8 +123,11 @@ public class TestDefaultBillingEvent {
 		Assert.assertEquals(event2, it.next());
 	}
 
+    private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type) {
+        return createEvent(sub, effectiveDate, type, 1L);
+    }
 
-	private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type) {
+    private BillingEvent createEvent(Subscription sub, DateTime effectiveDate, SubscriptionTransitionType type, long totalOrdering) {
 		int billCycleDay = 1;
 
 		Plan shotgun = new MockPlan();
@@ -133,7 +136,7 @@ public class TestDefaultBillingEvent {
 		return new DefaultBillingEvent(sub , effectiveDate,
 				shotgun, shotgunMonthly,
 				BigDecimal.ZERO, null, Currency.USD, BillingPeriod.NO_BILLING_PERIOD, billCycleDay,
-				BillingModeType.IN_ADVANCE, "Test Event 1", 1L, type);
+				BillingModeType.IN_ADVANCE, "Test Event 1", totalOrdering, type);
 	}
 
 	private MockPlanPhase createMockMonthlyPlanPhase(@Nullable final BigDecimal recurringRate,
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
index 092e1ec..cff7e91 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/user/TestUserApiRecreate.java
@@ -100,7 +100,15 @@ public abstract class TestUserApiRecreate extends TestApiBase {
         subscription.cancel(null, false);
 
         testListener.pushExpectedEvent(NextEvent.PHASE);
-        testListener.pushExpectedEvent(NextEvent.CREATE);
+        testListener.pushExpectedEvent(NextEvent.RE_CREATE);
+
+        // Avoid ordering issue for events at excat same date; this is actually a real good test, we
+        // we test it at Beatrix level. At this level that would work for sql tests but not for in memory.
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
+
+        }
 
         if (fromUserAPi) {
             subscription = (SubscriptionData) entitlementApi.createSubscription(bundle.getId(),
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
index acb54ad..66c71bd 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/DefaultInvoiceGenerator.java
@@ -246,7 +246,8 @@ public class DefaultInvoiceGenerator implements InvoiceGenerator {
 
                 return new FixedPriceInvoiceItem(invoiceId, thisEvent.getSubscription().getId(),
                                                  thisEvent.getPlan().getName(), thisEvent.getPlanPhase().getName(),
-                                                 thisEvent.getEffectiveDate(), endDate, fixedPrice, currency);
+                                                 thisEvent.getEffectiveDate(), endDate, fixedPrice, currency,
+                                                 clock.getUTCNow());
             } else {
                 return null;
             }
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
index 2c01329..4a1bc1d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/FixedPriceInvoiceItem.java
@@ -25,8 +25,9 @@ import java.util.UUID;
 
 public class FixedPriceInvoiceItem extends InvoiceItemBase {
     public FixedPriceInvoiceItem(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
-                                 DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
-        super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency);
+                                 DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
+                                 DateTime createdDate) {
+        super(invoiceId, subscriptionId, planName, phaseName, startDate, endDate, amount, currency, createdDate);
     }
 
     public FixedPriceInvoiceItem(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
index d855681..6f69e33 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/model/InvoiceItemBase.java
@@ -16,13 +16,10 @@
 
 package com.ning.billing.invoice.model;
 
-import com.google.inject.Inject;
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.util.clock.Clock;
 import org.joda.time.DateTime;
 
-import javax.annotation.Nullable;
 import java.math.BigDecimal;
 import java.util.UUID;
 
@@ -38,18 +35,16 @@ public abstract class InvoiceItemBase implements InvoiceItem {
     protected final Currency currency;
     protected final DateTime createdDate;
 
-    @Inject
-    private Clock clock;
-
     public InvoiceItemBase(UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
-                           DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency) {
+                           DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
+                           DateTime createdDate) {
         this(UUID.randomUUID(), invoiceId, subscriptionId, planName, phaseName,
-                startDate, endDate, amount, currency, null);
+                startDate, endDate, amount, currency, createdDate);
     }
 
     public InvoiceItemBase(UUID id, UUID invoiceId, UUID subscriptionId, String planName, String phaseName,
                            DateTime startDate, DateTime endDate, BigDecimal amount, Currency currency,
-                           @Nullable DateTime createdDate) {
+                           DateTime createdDate) {
         this.id = id;
         this.invoiceId = invoiceId;
         this.subscriptionId = subscriptionId;
@@ -59,7 +54,7 @@ public abstract class InvoiceItemBase implements InvoiceItem {
         this.endDate = endDate;
         this.amount = amount;
         this.currency = currency;
-        this.createdDate = (createdDate == null) ? clock.getUTCNow() : createdDate;
+        this.createdDate = createdDate;
     }
 
     public DateTime getCreatedDate() {