killbill-aplcache

context: cleanups in tests Signed-off-by: Pierre-Alexandre

2/16/2016 11:40:32 AM

Details

diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEntitlementDateHelper.java b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEntitlementDateHelper.java
index 71fa477..07ddabf 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEntitlementDateHelper.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/api/TestEntitlementDateHelper.java
@@ -138,6 +138,7 @@ public class TestEntitlementDateHelper extends EntitlementTestSuiteNoDB {
                                                      accountInternalApi,
                                                      immutableAccountInternalApi,
                                                      nonEntityDao,
+                                                     clock,
                                                      internalCallContextFactory,
                                                      callContext,
                                                      internalCallContext);
diff --git a/entitlement/src/test/java/org/killbill/billing/entitlement/engine/core/TestEntitlementUtils.java b/entitlement/src/test/java/org/killbill/billing/entitlement/engine/core/TestEntitlementUtils.java
index 5e43715..8b41884 100644
--- a/entitlement/src/test/java/org/killbill/billing/entitlement/engine/core/TestEntitlementUtils.java
+++ b/entitlement/src/test/java/org/killbill/billing/entitlement/engine/core/TestEntitlementUtils.java
@@ -26,22 +26,14 @@ import javax.annotation.Nullable;
 
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
-import org.killbill.billing.ObjectType;
-import org.killbill.billing.entitlement.AccountEventsStreams;
-import org.killbill.billing.payment.api.PluginProperty;
-import org.killbill.billing.util.cache.Cachable.CacheType;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
 import org.killbill.billing.account.api.Account;
 import org.killbill.billing.api.TestApiListener.NextEvent;
-import org.killbill.billing.callcontext.InternalTenantContext;
 import org.killbill.billing.catalog.api.BillingActionPolicy;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
 import org.killbill.billing.catalog.api.PriceListSet;
 import org.killbill.billing.catalog.api.ProductCategory;
+import org.killbill.billing.entitlement.AccountEventsStreams;
 import org.killbill.billing.entitlement.EntitlementService;
 import org.killbill.billing.entitlement.EntitlementTestSuiteWithEmbeddedDB;
 import org.killbill.billing.entitlement.EventsStream;
@@ -52,7 +44,10 @@ import org.killbill.billing.entitlement.api.DefaultEntitlementApi;
 import org.killbill.billing.entitlement.api.Entitlement;
 import org.killbill.billing.entitlement.api.Entitlement.EntitlementActionPolicy;
 import org.killbill.billing.entitlement.api.EntitlementApiException;
-import org.killbill.billing.entitlement.dao.BlockingStateSqlDao;
+import org.killbill.billing.payment.api.PluginProperty;
+import org.testng.Assert;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 import com.google.common.base.Objects;
 import com.google.common.base.Predicate;
@@ -61,8 +56,6 @@ import com.google.common.collect.Iterables;
 
 public class TestEntitlementUtils extends EntitlementTestSuiteWithEmbeddedDB {
 
-    private BlockingStateSqlDao sqlDao;
-    private Account account;
     private DefaultEntitlement baseEntitlement;
     private DefaultEntitlement addOnEntitlement;
     // Dates for the base plan only
@@ -73,10 +66,8 @@ public class TestEntitlementUtils extends EntitlementTestSuiteWithEmbeddedDB {
 
     @BeforeMethod(groups = "slow")
     public void setUp() throws Exception {
-        sqlDao = dbi.onDemand(BlockingStateSqlDao.class);
-
         clock.setDay(initialDate);
-        account = createAccount(getAccountData(7));
+        final Account account = createAccount(getAccountData(7));
 
         testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.CREATE);
 
@@ -452,7 +443,6 @@ public class TestEntitlementUtils extends EntitlementTestSuiteWithEmbeddedDB {
     }
 
     private Collection<BlockingState> computeFutureBlockingStatesForAssociatedAddonsViaAccount(final DefaultEntitlement baseEntitlement) throws EntitlementApiException {
-        setContextAccountRecordId();
         final AccountEventsStreams accountEventsStreams = eventsStreamBuilder.buildForAccount(internalCallContext);
 
         final EventsStream eventsStream = Iterables.<EventsStream>find(Iterables.<EventsStream>concat(accountEventsStreams.getEventsStreams().values()),
@@ -471,7 +461,6 @@ public class TestEntitlementUtils extends EntitlementTestSuiteWithEmbeddedDB {
     }
 
     private Collection<BlockingState> computeBlockingStatesForAssociatedAddonsViaAccount(final DefaultEntitlement baseEntitlement, final DateTime effectiveDate) throws EntitlementApiException {
-        setContextAccountRecordId();
         final AccountEventsStreams accountEventsStreams = eventsStreamBuilder.buildForAccount(internalCallContext);
 
         final EventsStream eventsStream = Iterables.<EventsStream>find(Iterables.<EventsStream>concat(accountEventsStreams.getEventsStreams().values()),
@@ -493,8 +482,4 @@ public class TestEntitlementUtils extends EntitlementTestSuiteWithEmbeddedDB {
                                                                                        }
                                                                                    }));
     }
-
-    private void setContextAccountRecordId() {
-        internalCallContext.setAccountRecordId(nonEntityDao.retrieveRecordIdFromObject(account.getId(), ObjectType.ACCOUNT, controlCacheDispatcher.getCacheController(CacheType.RECORD_ID)));
-    }
 }
diff --git a/invoice/src/test/java/org/killbill/billing/invoice/TestInvoiceHelper.java b/invoice/src/test/java/org/killbill/billing/invoice/TestInvoiceHelper.java
index 973d658..ae351c7 100644
--- a/invoice/src/test/java/org/killbill/billing/invoice/TestInvoiceHelper.java
+++ b/invoice/src/test/java/org/killbill/billing/invoice/TestInvoiceHelper.java
@@ -258,12 +258,12 @@ public class TestInvoiceHelper {
 
         final Account account;
         if (isFastTest()) {
-            account = GuicyKillbillTestSuiteNoDB.createMockAccount(accountData, accountUserApi, accountApi, immutableAccountApi, nonEntityDao, internalCallContextFactory, callContext, internalCallContext);
+            account = GuicyKillbillTestSuiteNoDB.createMockAccount(accountData, accountUserApi, accountApi, immutableAccountApi, nonEntityDao, clock, internalCallContextFactory, callContext, internalCallContext);
         } else {
             account = accountUserApi.createAccount(accountData, callContext);
         }
 
-        GuicyKillbillTestSuite.refreshCallContext(account.getId(), internalCallContextFactory, callContext, internalCallContext);
+        GuicyKillbillTestSuite.refreshCallContext(account.getId(), clock, internalCallContextFactory, callContext, internalCallContext);
 
         return account;
     }
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPaymentLeavingStateCallback.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPaymentLeavingStateCallback.java
index 106c179..1ef93cc 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPaymentLeavingStateCallback.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPaymentLeavingStateCallback.java
@@ -121,8 +121,6 @@ public class TestPaymentLeavingStateCallback extends PaymentTestSuiteWithEmbedde
                                                            transactions.get(0).getId(), TransactionStatus.SUCCESS, BigDecimal.ONE, Currency.BRL,
                                                            "foo", "bar", internalCallContext);
 
-        internalCallContext.setAccountRecordId(123L);
-
         paymentStateContext = new PaymentStateContext(true,
                                                       paymentId,
                                                       null,
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
index ac1860e..5b56ec4 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/TestDefaultPaymentDao.java
@@ -21,7 +21,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.UUID;
 
-import org.joda.time.DateTimeZone;
+import org.killbill.billing.account.api.Account;
 import org.killbill.billing.callcontext.InternalCallContext;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
@@ -37,13 +37,13 @@ public class TestDefaultPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
     @Test(groups = "slow")
     public void testPaymentCRUD() throws Exception {
         for (int i = 0; i < 3; i++) {
-            testPaymentCRUDForAccount(UUID.randomUUID(), i + 1);
+            testPaymentCRUDForAccount();
         }
     }
 
-    public void testPaymentCRUDForAccount(final UUID accountId, final int accountNb) {
-        // We need to create specific call contexts to make the account_record_id magic work
-        internalCallContext.setAccountRecordId((long) accountNb);
+    public void testPaymentCRUDForAccount() throws Exception {
+        final Account account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+        final UUID accountId = account.getId();
 
         final PaymentModelDao specifiedFirstPaymentModelDao = generatePaymentModelDao(accountId);
         final PaymentTransactionModelDao specifiedFirstPaymentTransactionModelDao = generatePaymentTransactionModelDao(specifiedFirstPaymentModelDao.getId());
diff --git a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
index d75b656..8bc6634 100644
--- a/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/org/killbill/billing/payment/dao/TestPaymentDao.java
@@ -25,18 +25,16 @@ import java.util.List;
 import java.util.UUID;
 
 import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
-import org.killbill.billing.callcontext.InternalCallContext;
+import org.killbill.billing.account.api.Account;
 import org.killbill.billing.catalog.api.Currency;
 import org.killbill.billing.payment.PaymentTestSuiteWithEmbeddedDB;
 import org.killbill.billing.payment.api.PluginProperty;
 import org.killbill.billing.payment.api.TransactionStatus;
 import org.killbill.billing.payment.api.TransactionType;
 import org.killbill.billing.payment.dao.PluginPropertySerializer.PluginPropertySerializerException;
-import org.killbill.billing.util.callcontext.CallOrigin;
-import org.killbill.billing.util.callcontext.InternalCallContextFactory;
-import org.killbill.billing.util.callcontext.UserType;
 import org.killbill.billing.util.entity.Pagination;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
@@ -60,8 +58,6 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         final TransactionType transactionType = TransactionType.AUTHORIZE;
         final String pluginName = "superPlugin";
 
-        final UUID accountId = UUID.randomUUID();
-
         final List<PluginProperty> properties = new ArrayList<PluginProperty>();
         properties.add(new PluginProperty("key1", "value1", false));
         properties.add(new PluginProperty("key2", "value2", false));
@@ -315,9 +311,8 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         // Just to guarantee that next clock.getUTCNow() > newTime
         try {
             Thread.sleep(1000);
-        } catch (InterruptedException e) {
+        } catch (final InterruptedException e) {
         }
-        ;
 
         final Iterable<PaymentTransactionModelDao> transactions2 = paymentDao.getByTransactionStatusAcrossTenants(ImmutableList.of(TransactionStatus.PENDING), clock.getUTCNow(), initialTime, 0L, 1L);
         for (PaymentTransactionModelDao paymentTransaction : transactions2) {
@@ -333,10 +328,7 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
     }
 
     @Test(groups = "slow")
-    public void testPaymentByStatesAcrossTenants() {
-
-        final UUID paymentMethodId = UUID.randomUUID();
-        final UUID accountId = UUID.randomUUID();
+    public void testPaymentByStatesAcrossTenants() throws Exception {
         final String externalKey1 = "XXhhhhooo1";
         final String transactionExternalKey1 = "transactionXX1";
 
@@ -357,72 +349,72 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
 
         // Right before createdAfterDate, so should not be returned
         final DateTime createdDate1 = createdAfterDate.minusHours(1);
-        final PaymentModelDao paymentModelDao1 = new PaymentModelDao(createdDate1, createdDate1, accountId, paymentMethodId, externalKey1);
+        clock.setTime(createdDate1);
+        Account account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentModelDao paymentModelDao1 = new PaymentModelDao(createdDate1, createdDate1, account.getId(), account.getPaymentMethodId(), externalKey1);
         paymentModelDao1.setStateName("AUTH_ERRORED");
         final PaymentTransactionModelDao transaction1 = new PaymentTransactionModelDao(createdDate1, createdDate1, null, transactionExternalKey1,
                                                                                        paymentModelDao1.getId(), TransactionType.AUTHORIZE, createdDate1,
                                                                                        TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                        "unknown", "");
 
-        internalCallContext.setAccountRecordId(1L);
-        internalCallContext.setCreatedDate(createdDate1);
-        internalCallContext.setUpdatedDate(createdDate1);
         paymentDao.insertPaymentWithFirstTransaction(paymentModelDao1, transaction1, internalCallContext);
 
         // Right after createdAfterDate, so it should  be returned
         final DateTime createdDate2 = createdAfterDate.plusHours(1);
-        final PaymentModelDao paymentModelDao2 = new PaymentModelDao(createdDate2, createdDate2, accountId, paymentMethodId, externalKey2);
+        clock.setTime(createdDate2);
+        account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentModelDao paymentModelDao2 = new PaymentModelDao(createdDate2, createdDate2, account.getId(), account.getPaymentMethodId(), externalKey2);
         paymentModelDao2.setStateName("CAPTURE_ERRORED");
         final PaymentTransactionModelDao transaction2 = new PaymentTransactionModelDao(createdDate2, createdDate2, null, transactionExternalKey2,
                                                                                        paymentModelDao2.getId(), TransactionType.AUTHORIZE, createdDate2,
                                                                                        TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                        "unknown", "");
 
-        internalCallContext.setAccountRecordId(2L);
-        internalCallContext.setCreatedDate(createdDate2);
-        internalCallContext.setUpdatedDate(createdDate2);
         paymentDao.insertPaymentWithFirstTransaction(paymentModelDao2, transaction2, internalCallContext);
 
         // Right before createdBeforeDate, so it should be returned
         final DateTime createdDate3 = createdBeforeDate.minusDays(1);
-        final PaymentModelDao paymentModelDao3 = new PaymentModelDao(createdDate3, createdDate3, accountId, paymentMethodId, externalKey3);
+        clock.setTime(createdDate3);
+        account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentModelDao paymentModelDao3 = new PaymentModelDao(createdDate3, createdDate3, account.getId(), account.getPaymentMethodId(), externalKey3);
         paymentModelDao3.setStateName("CAPTURE_ERRORED");
         final PaymentTransactionModelDao transaction3 = new PaymentTransactionModelDao(createdDate3, createdDate3, null, transactionExternalKey3,
                                                                                        paymentModelDao3.getId(), TransactionType.AUTHORIZE, createdDate3,
                                                                                        TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                        "unknown", "");
 
-        internalCallContext.setAccountRecordId(3L);
-        internalCallContext.setCreatedDate(createdDate3);
-        internalCallContext.setUpdatedDate(createdDate3);
         paymentDao.insertPaymentWithFirstTransaction(paymentModelDao3, transaction3, internalCallContext);
 
         // Right before createdBeforeDate but with a SUCCESS state so it should NOT be returned
         final DateTime createdDate4 = createdBeforeDate.minusDays(1);
-        final PaymentModelDao paymentModelDao4 = new PaymentModelDao(createdDate4, createdDate4, accountId, paymentMethodId, externalKey4);
+        clock.setTime(createdDate4);
+        account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentModelDao paymentModelDao4 = new PaymentModelDao(createdDate4, createdDate4, account.getId(), account.getPaymentMethodId(), externalKey4);
         paymentModelDao4.setStateName("CAPTURE_SUCCESS");
         final PaymentTransactionModelDao transaction4 = new PaymentTransactionModelDao(createdDate4, createdDate4, null, transactionExternalKey4,
                                                                                        paymentModelDao4.getId(), TransactionType.AUTHORIZE, createdDate4,
                                                                                        TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                        "unknown", "");
 
-        internalCallContext.setAccountRecordId(4L);
-        internalCallContext.setCreatedDate(createdDate4);
-        internalCallContext.setUpdatedDate(createdDate4);
         paymentDao.insertPaymentWithFirstTransaction(paymentModelDao4, transaction4, internalCallContext);
 
         // Right after createdBeforeDate, so it should NOT be returned
         final DateTime createdDate5 = createdBeforeDate.plusDays(1);
-        final PaymentModelDao paymentModelDao5 = new PaymentModelDao(createdDate5, createdDate5, accountId, paymentMethodId, externalKey5);
+        clock.setTime(createdDate5);
+        account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentModelDao paymentModelDao5 = new PaymentModelDao(createdDate5, createdDate5, account.getId(), account.getPaymentMethodId(), externalKey5);
         paymentModelDao5.setStateName("CAPTURE_ERRORED");
         final PaymentTransactionModelDao transaction5 = new PaymentTransactionModelDao(createdDate5, createdDate5, null, transactionExternalKey5,
                                                                                        paymentModelDao5.getId(), TransactionType.AUTHORIZE, createdDate5,
                                                                                        TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                        "unknown", "");
 
-        internalCallContext.setAccountRecordId(5L);
-        internalCallContext.setCreatedDate(createdDate5);
-        internalCallContext.setUpdatedDate(createdDate5);
         paymentDao.insertPaymentWithFirstTransaction(paymentModelDao5, transaction5, internalCallContext);
 
         final String[] errorStates = {"AUTH_ERRORED", "CAPTURE_ERRORED", "REFUND_ERRORED", "CREDIT_ERRORED"};
@@ -431,25 +423,26 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
     }
 
     @Test(groups = "slow")
-    public void testPaginationForPaymentByStatesAcrossTenants() {
-        // Right before createdAfterDate, so should not be returned
+    public void testPaginationForPaymentByStatesAcrossTenants() throws Exception {
         final DateTime createdDate1 = clock.getUTCNow().minusHours(1);
+        clock.setTime(createdDate1);
+
+        final Account account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
 
         final int NB_ENTRIES = 30;
         for (int i = 0; i < NB_ENTRIES; i++) {
-            final PaymentModelDao paymentModelDao1 = new PaymentModelDao(createdDate1, createdDate1, UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID().toString());
+            final PaymentModelDao paymentModelDao1 = new PaymentModelDao(createdDate1, createdDate1, account.getId(), account.getPaymentMethodId(), UUID.randomUUID().toString());
             final PaymentTransactionModelDao transaction1 = new PaymentTransactionModelDao(createdDate1, createdDate1, null, UUID.randomUUID().toString(),
                                                                                            paymentModelDao1.getId(), TransactionType.AUTHORIZE, createdDate1,
                                                                                            TransactionStatus.UNKNOWN, BigDecimal.TEN, Currency.AED,
                                                                                            "unknown", "");
 
-            internalCallContext.setAccountRecordId(1L);
-            internalCallContext.setCreatedDate(createdDate1);
-            internalCallContext.setUpdatedDate(createdDate1);
             paymentDao.insertPaymentWithFirstTransaction(paymentModelDao1, transaction1, internalCallContext);
         }
 
-        final Pagination<PaymentTransactionModelDao> result = paymentDao.getByTransactionStatusAcrossTenants(ImmutableList.of(TransactionStatus.UNKNOWN), clock.getUTCNow(), createdDate1, 0L, new Long(NB_ENTRIES));
+        clock.setTime(createdDate1.plusHours(1));
+
+        final Pagination<PaymentTransactionModelDao> result = paymentDao.getByTransactionStatusAcrossTenants(ImmutableList.of(TransactionStatus.UNKNOWN), clock.getUTCNow(), createdDate1, 0L, (long) NB_ENTRIES);
         Assert.assertEquals(result.getTotalNbRecords(), new Long(NB_ENTRIES));
 
         final Iterator<PaymentTransactionModelDao> iterator = result.iterator();
@@ -461,10 +454,7 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
     }
 
     @Test(groups = "slow")
-    public void testPaymentAttemptsByStateAcrossTenants() {
-
-        final UUID paymentMethodId = UUID.randomUUID();
-        final UUID accountId = UUID.randomUUID();
+    public void testPaymentAttemptsByStateAcrossTenants() throws Exception {
         final String externalKey1 = "gfhfg";
         final String transactionExternalKey1 = "sadas";
 
@@ -477,42 +467,41 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         final String stateName = "FOO";
         final String pluginName = "miraculous";
 
-        final PaymentAttemptModelDao attempt1 = new PaymentAttemptModelDao(accountId, paymentMethodId, createdAfterDate, createdAfterDate, externalKey1,
+        clock.setTime(createdAfterDate);
+        Account account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentAttemptModelDao attempt1 = new PaymentAttemptModelDao(account.getId(), account.getPaymentMethodId(), createdAfterDate, createdAfterDate, externalKey1,
                                                                            UUID.randomUUID(), transactionExternalKey1, TransactionType.AUTHORIZE, stateName, BigDecimal.ONE, Currency.USD,
                                                                            ImmutableList.<String>of(pluginName), null);
 
-        final PaymentAttemptModelDao attempt2 = new PaymentAttemptModelDao(accountId, paymentMethodId, createdAfterDate, createdAfterDate, externalKey2,
+        paymentDao.insertPaymentAttemptWithProperties(attempt1, internalCallContext);
+
+        account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
+
+        final PaymentAttemptModelDao attempt2 = new PaymentAttemptModelDao(account.getId(), account.getPaymentMethodId(), createdAfterDate, createdAfterDate, externalKey2,
                                                                            UUID.randomUUID(), transactionExternalKey2, TransactionType.AUTHORIZE, stateName, BigDecimal.ONE, Currency.USD,
                                                                            ImmutableList.<String>of(pluginName), null);
 
-        internalCallContext.setAccountRecordId(1L);
-        internalCallContext.setCreatedDate(createdAfterDate);
-        internalCallContext.setUpdatedDate(createdAfterDate);
-        paymentDao.insertPaymentAttemptWithProperties(attempt1, internalCallContext);
-
-        internalCallContext.setAccountRecordId(2L);
-        internalCallContext.setCreatedDate(createdAfterDate);
-        internalCallContext.setUpdatedDate(createdAfterDate);
-        paymentDao.insertPaymentAttemptWithProperties(attempt2, internalCallContext);
+       paymentDao.insertPaymentAttemptWithProperties(attempt2, internalCallContext);
 
         final Pagination<PaymentAttemptModelDao> result = paymentDao.getPaymentAttemptsByStateAcrossTenants(stateName, createdBeforeDate, 0L, 2L);
         Assert.assertEquals(result.getTotalNbRecords().longValue(), 2L);
     }
 
     @Test(groups = "slow")
-    public void testUpdatePaymentAttempt() throws PluginPropertySerializerException {
+    public void testUpdatePaymentAttempt() throws Exception {
+        final DateTime createdAfterDate = clock.getUTCNow().minusDays(10);
+        clock.setTime(createdAfterDate);
+
+        final Account account = testHelper.createTestAccount(UUID.randomUUID().toString(), true);
 
-        final UUID paymentMethodId = UUID.randomUUID();
-        final UUID accountId = UUID.randomUUID();
         final String externalKey1 = "2354";
         final String transactionExternalKey1 = "jkjkjk";
 
-        final DateTime createdAfterDate = clock.getUTCNow().minusDays(10);
-
         final String stateName = "RRRRR";
         final String pluginName = "elated";
 
-        final PaymentAttemptModelDao attempt = new PaymentAttemptModelDao(accountId, paymentMethodId, createdAfterDate, createdAfterDate, externalKey1,
+        final PaymentAttemptModelDao attempt = new PaymentAttemptModelDao(account.getId(), account.getPaymentMethodId(), createdAfterDate, createdAfterDate, externalKey1,
                                                                           UUID.randomUUID(), transactionExternalKey1, TransactionType.AUTHORIZE, stateName, BigDecimal.ONE, Currency.USD,
                                                                           ImmutableList.<String>of(pluginName), null);
 
@@ -530,7 +519,6 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         properties.add(new PluginProperty("prop1", "value1", false));
         properties.add(new PluginProperty("prop2", "value2", false));
 
-
         final byte [] serializedProperties = PluginPropertySerializer.serialize(properties);
         paymentDao.updatePaymentAttemptWithProperties(rehydratedAttempt.getId(), transactionId, newStateName, serializedProperties, internalCallContext);
         final PaymentAttemptModelDao attempt2 = paymentDao.getPaymentAttempt(rehydratedAttempt.getId(), internalCallContext);
@@ -540,7 +528,6 @@ public class TestPaymentDao extends PaymentTestSuiteWithEmbeddedDB {
         final Iterable<PluginProperty> properties2 = PluginPropertySerializer.deserialize(attempt2.getPluginProperties());
         checkProperty(properties2, new PluginProperty("prop1", "value1", false));
         checkProperty(properties2, new PluginProperty("prop2", "value2", false));
-
     }
 
     private void checkProperty(final Iterable<PluginProperty> properties, final PluginProperty expected) {
diff --git a/payment/src/test/java/org/killbill/billing/payment/TestPaymentHelper.java b/payment/src/test/java/org/killbill/billing/payment/TestPaymentHelper.java
index e52d7a3..0c47d84 100644
--- a/payment/src/test/java/org/killbill/billing/payment/TestPaymentHelper.java
+++ b/payment/src/test/java/org/killbill/billing/payment/TestPaymentHelper.java
@@ -148,12 +148,12 @@ public class TestPaymentHelper {
 
         Account account;
         if (isFastTest()) {
-            account = GuicyKillbillTestSuiteNoDB.createMockAccount(accountData, accountApi, accountInternalApi, immutableAccountInternalApi, nonEntityDao, internalCallContextFactory, context, internalCallContext);
+            account = GuicyKillbillTestSuiteNoDB.createMockAccount(accountData, accountApi, accountInternalApi, immutableAccountInternalApi, nonEntityDao, clock, internalCallContextFactory, context, internalCallContext);
         } else {
             account = accountApi.createAccount(accountData, context);
         }
 
-        GuicyKillbillTestSuite.refreshCallContext(account.getId(), internalCallContextFactory, context, internalCallContext);
+        GuicyKillbillTestSuite.refreshCallContext(account.getId(), clock, internalCallContextFactory, context, internalCallContext);
 
         if (addPaymentMethod) {
             final PaymentMethodPlugin pm = new DefaultNoOpPaymentMethodPlugin(UUID.randomUUID().toString(), true, null);
diff --git a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
index 2e9b743..badf00a 100644
--- a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
+++ b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuite.java
@@ -30,6 +30,7 @@ import org.killbill.billing.platform.test.config.TestKillbillConfigSource;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.callcontext.TenantContext;
+import org.killbill.clock.Clock;
 import org.killbill.clock.ClockMock;
 import org.skife.config.ConfigSource;
 import org.slf4j.Logger;
@@ -103,6 +104,7 @@ public class GuicyKillbillTestSuite {
     }
 
     public static void refreshCallContext(final UUID accountId,
+                                          final Clock clock,
                                           final InternalCallContextFactory internalCallContextFactory,
                                           final TenantContext callContext,
                                           final MutableInternalCallContext internalCallContext) {
@@ -110,10 +112,12 @@ public class GuicyKillbillTestSuite {
         internalCallContext.setAccountRecordId(tmp.getAccountRecordId());
         internalCallContext.setFixedOffsetTimeZone(tmp.getFixedOffsetTimeZone());
         internalCallContext.setReferenceTime(tmp.getReferenceTime());
+        internalCallContext.setCreatedDate(clock.getUTCNow());
+        internalCallContext.setUpdatedDate(clock.getUTCNow());
     }
 
     protected void refreshCallContext(final UUID accountId) {
-        refreshCallContext(accountId, internalCallContextFactory, callContext, internalCallContext);
+        refreshCallContext(accountId, clock, internalCallContextFactory, callContext, internalCallContext);
     }
 
     @BeforeMethod(alwaysRun = true)
diff --git a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteNoDB.java b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteNoDB.java
index 0abf3c0..cc2e479 100644
--- a/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteNoDB.java
+++ b/util/src/test/java/org/killbill/billing/GuicyKillbillTestSuiteNoDB.java
@@ -29,6 +29,7 @@ import org.killbill.billing.dao.MockNonEntityDao;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.InternalCallContextFactory;
 import org.killbill.billing.util.dao.NonEntityDao;
+import org.killbill.clock.Clock;
 import org.mockito.Mockito;
 
 public class GuicyKillbillTestSuiteNoDB extends GuicyKillbillTestSuite {
@@ -38,6 +39,7 @@ public class GuicyKillbillTestSuiteNoDB extends GuicyKillbillTestSuite {
                                             final AccountInternalApi accountInternalApi,
                                             final ImmutableAccountInternalApi immutableAccountInternalApi,
                                             final NonEntityDao nonEntityDao,
+                                            final Clock clock,
                                             final InternalCallContextFactory internalCallContextFactory,
                                             final CallContext callContext,
                                             final MutableInternalCallContext internalCallContext) throws AccountApiException {
@@ -51,7 +53,7 @@ public class GuicyKillbillTestSuiteNoDB extends GuicyKillbillTestSuite {
         ((MockNonEntityDao) nonEntityDao).addTenantRecordIdMapping(account.getId(), internalCallContext);
         ((MockNonEntityDao) nonEntityDao).addAccountRecordIdMapping(account.getId(), internalCallContext);
 
-        refreshCallContext(account.getId(), internalCallContextFactory, callContext, internalCallContext);
+        refreshCallContext(account.getId(), clock, internalCallContextFactory, callContext, internalCallContext);
 
         return account;
     }