killbill-memoizeit
Changes
payment/pom.xml 4(+4 -0)
Details
diff --git a/account/src/main/java/com/ning/billing/account/glue/AccountModule.java b/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
index 2905db3..f6e51f4 100644
--- a/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
+++ b/account/src/main/java/com/ning/billing/account/glue/AccountModule.java
@@ -33,9 +33,6 @@ public class AccountModule extends AbstractModule {
bind(AccountConfig.class).toInstance(config);
}
- private void installAccountCore() {
- }
-
protected void installAccountDao() {
bind(AccountDao.class).to(DefaultAccountDao.class).asEagerSingleton();
}
diff --git a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
index b18a41b..6d56436 100644
--- a/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
+++ b/account/src/test/java/com/ning/billing/account/dao/AccountDaoTestBase.java
@@ -19,7 +19,7 @@ package com.ning.billing.account.dao;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
-import com.ning.billing.account.glue.AccountModuleMock;
+import com.ning.billing.account.glue.AccountModuleWithEmbeddedDb;
import com.ning.billing.util.eventbus.DefaultEventBusService;
import com.ning.billing.util.eventbus.EventBusService;
import org.apache.commons.io.IOUtils;
@@ -32,7 +32,7 @@ import java.io.IOException;
import static org.testng.Assert.fail;
public abstract class AccountDaoTestBase {
- protected AccountModuleMock module;
+ protected AccountModuleWithEmbeddedDb module;
protected AccountDao accountDao;
protected IDBI dbi;
@@ -40,7 +40,7 @@ public abstract class AccountDaoTestBase {
protected void setup() throws IOException {
// Health check test to make sure MySQL is setup properly
try {
- module = new AccountModuleMock();
+ module = new AccountModuleWithEmbeddedDb();
final String accountDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/account/ddl.sql"));
final String invoiceDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
final String utilDdl = IOUtils.toString(AccountSqlDao.class.getResourceAsStream("/com/ning/billing/util/ddl.sql"));
diff --git a/account/src/test/java/com/ning/billing/account/dao/MockAccountDao.java b/account/src/test/java/com/ning/billing/account/dao/MockAccountDao.java
index a11818a..69efaa1 100644
--- a/account/src/test/java/com/ning/billing/account/dao/MockAccountDao.java
+++ b/account/src/test/java/com/ning/billing/account/dao/MockAccountDao.java
@@ -22,14 +22,33 @@ import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.AccountChangeNotification;
+import com.ning.billing.account.api.user.DefaultAccountChangeNotification;
+import com.ning.billing.account.api.user.DefaultAccountCreationEvent;
+import com.ning.billing.util.eventbus.EventBus;
+import com.ning.billing.util.eventbus.EventBus.EventBusException;
public class MockAccountDao implements AccountDao {
+ private final EventBus eventBus;
private final Map<String, Account> accounts = new ConcurrentHashMap<String, Account>();
+ @Inject
+ public MockAccountDao(EventBus eventBus) {
+ this.eventBus = eventBus;
+ }
+
@Override
- public void create(Account entity) {
- accounts.put(entity.getId().toString(), entity);
+ public void create(Account account) {
+ accounts.put(account.getId().toString(), account);
+
+ try {
+ eventBus.post(new DefaultAccountCreationEvent(account));
+ }
+ catch (EventBusException ex) {
+ throw new RuntimeException(ex);
+ }
}
@Override
@@ -63,8 +82,17 @@ public class MockAccountDao implements AccountDao {
}
@Override
- public void update(Account entity) {
- accounts.put(entity.getId().toString(), entity);
- }
+ public void update(Account account) {
+ Account currentAccount = accounts.put(account.getId().toString(), account);
+ AccountChangeNotification changeEvent = new DefaultAccountChangeNotification(account.getId(), currentAccount, account);
+ if (changeEvent.hasChanges()) {
+ try {
+ eventBus.post(changeEvent);
+ }
+ catch (EventBusException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+ }
}
diff --git a/account/src/test/java/com/ning/billing/account/glue/AccountModuleWithMocks.java b/account/src/test/java/com/ning/billing/account/glue/AccountModuleWithMocks.java
new file mode 100644
index 0000000..fb72404
--- /dev/null
+++ b/account/src/test/java/com/ning/billing/account/glue/AccountModuleWithMocks.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2011 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.account.glue;
+
+import com.ning.billing.account.dao.AccountDao;
+import com.ning.billing.account.dao.MockAccountDao;
+
+public class AccountModuleWithMocks extends AccountModule {
+ @Override
+ protected void installAccountDao() {
+ bind(MockAccountDao.class).asEagerSingleton();
+ bind(AccountDao.class).to(MockAccountDao.class);
+ }
+}
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
index 0e330a0..0c8f8c4 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentAttempt.java
@@ -35,8 +35,19 @@ public class PaymentAttempt {
private final String paymentId;
private final DateTime invoiceDate;
private final DateTime paymentAttemptDate;
-
- public PaymentAttempt(UUID paymentAttemptId, UUID invoiceId, UUID accountId, BigDecimal amount, Currency currency, DateTime invoiceDate, DateTime paymentAttemptDate, String paymentId) {
+ private final DateTime createdDate;
+ private final DateTime updatedDate;
+
+ public PaymentAttempt(UUID paymentAttemptId,
+ UUID invoiceId,
+ UUID accountId,
+ BigDecimal amount,
+ Currency currency,
+ DateTime invoiceDate,
+ DateTime paymentAttemptDate,
+ String paymentId,
+ DateTime createdDate,
+ DateTime updatedDate) {
this.paymentAttemptId = paymentAttemptId;
this.invoiceId = invoiceId;
this.accountId = accountId;
@@ -45,6 +56,19 @@ public class PaymentAttempt {
this.invoiceDate = invoiceDate;
this.paymentAttemptDate = paymentAttemptDate == null ? new DateTime(DateTimeZone.UTC) : paymentAttemptDate;
this.paymentId = paymentId;
+ this.createdDate = createdDate;
+ this.updatedDate = updatedDate;
+ }
+
+ public PaymentAttempt(UUID paymentAttemptId,
+ UUID invoiceId,
+ UUID accountId,
+ BigDecimal amount,
+ Currency currency,
+ DateTime invoiceDate,
+ DateTime paymentAttemptDate,
+ String paymentId) {
+ this(paymentAttemptId, invoiceId, accountId, amount, currency, invoiceDate, paymentAttemptDate, paymentId, new DateTime(DateTimeZone.UTC), new DateTime(DateTimeZone.UTC));
}
public PaymentAttempt(UUID paymentAttemptId, UUID invoiceId, UUID accountId, BigDecimal amount, Currency currency, DateTime invoiceDate, DateTime paymentAttemptDate) {
@@ -83,6 +107,14 @@ public class PaymentAttempt {
return accountId;
}
+ public DateTime getCreatedDate() {
+ return createdDate;
+ }
+
+ public DateTime getUpdatedDate() {
+ return updatedDate;
+ }
+
public BigDecimal getAmount() {
return amount;
}
@@ -109,6 +141,8 @@ public class PaymentAttempt {
private DateTime invoiceDate;
private DateTime paymentAttemptDate;
private String paymentId;
+ private DateTime createdDate;
+ private DateTime updatedDate;
public Builder() {
}
@@ -122,6 +156,8 @@ public class PaymentAttempt {
this.invoiceDate = src.invoiceDate;
this.paymentAttemptDate = src.paymentAttemptDate;
this.paymentId = src.paymentId;
+ this.createdDate = src.createdDate;
+ this.updatedDate = src.updatedDate;
}
public Builder setPaymentAttemptId(UUID paymentAttemptId) {
@@ -149,6 +185,16 @@ public class PaymentAttempt {
return this;
}
+ public Builder setCreatedDate(DateTime createdDate) {
+ this.createdDate = createdDate;
+ return this;
+ }
+
+ public Builder setUpdatedDate(DateTime updatedDate) {
+ this.updatedDate = updatedDate;
+ return this;
+ }
+
public Builder setInvoiceDate(DateTime invoiceDate) {
this.invoiceDate = invoiceDate;
return this;
@@ -172,7 +218,9 @@ public class PaymentAttempt {
currency,
invoiceDate,
paymentAttemptDate,
- paymentId);
+ paymentId,
+ createdDate,
+ updatedDate);
}
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
index e22033f..ee4491d 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/dao/InvoiceSqlDao.java
@@ -143,7 +143,7 @@ public interface InvoiceSqlDao extends EntityDao<Invoice>, Transactional<Invoice
stmt.bind("invoice_id", invoicePayment.getInvoiceId().toString());
stmt.bind("amount", invoicePayment.getAmount());
stmt.bind("currency", invoicePayment.getCurrency().toString());
- stmt.bind("payment_attempt_id", invoicePayment.getPaymentAttemptId());
+ stmt.bind("payment_attempt_id", invoicePayment.getPaymentAttemptId().toString());
stmt.bind("payment_attempt_date", invoicePayment.getPaymentAttemptDate() == null ? null : invoicePayment.getPaymentAttemptDate().toDate());
}
}
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
index d79b951..1657f7e 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
+++ b/invoice/src/main/resources/com/ning/billing/invoice/dao/InvoiceSqlDao.sql.stg
@@ -2,7 +2,7 @@ group InvoiceDao;
get() ::= <<
SELECT i.id, i.account_id, i.invoice_date, i.target_date, i.currency, SUM(ii.amount) AS amount,
- SUM(ip.amount) AS amount_paid, MAX(ip.payment_date) AS last_payment_attempt
+ SUM(ip.amount) AS amount_paid, MAX(ip.payment_attempt_date) AS last_payment_attempt
FROM invoices i
LEFT JOIN invoice_payments ip ON ip.invoice_id = i.id
LEFT JOIN invoice_items ii ON ii.invoice_id = i.id
@@ -12,7 +12,7 @@ get() ::= <<
getInvoicesByAccount() ::= <<
SELECT i.id, i.account_id, i.invoice_date, i.target_date, i.currency, SUM(ii.amount) AS amount,
- SUM(ip.amount) AS amount_paid, MAX(ip.payment_date) AS last_payment_attempt
+ SUM(ip.amount) AS amount_paid, MAX(ip.payment_attempt_date) AS last_payment_attempt
FROM invoices i
LEFT JOIN invoice_payments ip ON ip.invoice_id = i.id
LEFT JOIN invoice_items ii ON ii.invoice_id = i.id
@@ -23,7 +23,7 @@ getInvoicesByAccount() ::= <<
getInvoicesBySubscription() ::= <<
SELECT i.id, i.account_id, i.invoice_date, i.target_date, i.currency, SUM(ii.amount) AS amount,
- SUM(ip.amount) AS amount_paid, MAX(ip.payment_date) AS last_payment_attempt
+ SUM(ip.amount) AS amount_paid, MAX(ip.payment_attempt_date) AS last_payment_attempt
FROM invoices i
LEFT JOIN invoice_items ii ON i.id = ii.invoice_id
LEFT JOIN invoice_payments ip ON ip.invoice_id = i.id
@@ -44,7 +44,7 @@ getInvoicesForPayment() ::= <<
getById() ::= <<
SELECT i.id, i.account_id, i.invoice_date, i.target_date, i.currency, SUM(ii.amount) AS amount,
- SUM(ip.amount) AS amount_paid, MAX(ip.payment_date) AS last_payment_attempt
+ SUM(ip.amount) AS amount_paid, MAX(ip.payment_attempt_date) AS last_payment_attempt
FROM invoices i
LEFT JOIN invoice_items ii ON i.id = ii.invoice_id
LEFT JOIN invoice_payments ip ON ip.invoice_id = i.id
diff --git a/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql b/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
index ce3641e..0c1e01d 100644
--- a/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
+++ b/invoice/src/main/resources/com/ning/billing/invoice/ddl.sql
@@ -29,20 +29,19 @@ CREATE INDEX invoices_account_id ON invoices(account_id ASC);
DROP TABLE IF EXISTS invoice_payments;
CREATE TABLE invoice_payments (
invoice_id char(36) NOT NULL,
- payment_attempt_id char(36) NOT NULL,
- payment_dt datetime,
- payment_attempt_dt datetime,
+ payment_attempt_id char(36) COLLATE utf8_bin NOT NULL,
+ payment_attempt_date datetime,
amount numeric(10,4),
currency char(3),
- created_dt datetime NOT NULL,
- updated_dt datetime NOT NULL,
+ created_date datetime NOT NULL,
+ updated_date datetime NOT NULL,
PRIMARY KEY(invoice_id, payment_attempt_id)
) ENGINE=innodb;
CREATE UNIQUE INDEX invoice_payments_unique ON invoice_payments(invoice_id, payment_attempt_id);
DROP VIEW IF EXISTS invoice_payment_summary;
CREATE VIEW invoice_payment_summary AS
-SELECT invoice_id, SUM(amount) AS total_paid, MAX(payment_date) AS last_payment_date
+SELECT invoice_id, SUM(amount) AS total_paid, MAX(payment_attempt_date) AS last_payment_date
FROM invoice_payments
GROUP BY invoice_id;
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
index 268aaf5..add71f2 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceDaoTestBase.java
@@ -22,7 +22,7 @@ import org.testng.annotations.BeforeClass;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Stage;
-import com.ning.billing.invoice.glue.InvoiceModuleMock;
+import com.ning.billing.invoice.glue.InvoiceModuleWithEmbeddedDb;
import com.ning.billing.util.eventbus.DefaultEventBusService;
import com.ning.billing.util.eventbus.EventBusService;
@@ -36,7 +36,7 @@ public abstract class InvoiceDaoTestBase {
protected void setup() throws IOException {
// Health check test to make sure MySQL is setup properly
try {
- InvoiceModuleMock module = new InvoiceModuleMock();
+ InvoiceModuleWithEmbeddedDb module = new InvoiceModuleWithEmbeddedDb();
final String ddl = IOUtils.toString(DefaultInvoiceDao.class.getResourceAsStream("/com/ning/billing/invoice/ddl.sql"));
module.createDb(ddl);
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
index fa743ff..dc2afd8 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/InvoiceItemDaoTests.java
@@ -21,7 +21,7 @@ import com.google.inject.Injector;
import com.google.inject.Stage;
import com.ning.billing.catalog.api.Currency;
import com.ning.billing.invoice.api.InvoiceItem;
-import com.ning.billing.invoice.glue.InvoiceModuleMock;
+import com.ning.billing.invoice.glue.InvoiceModuleWithEmbeddedDb;
import com.ning.billing.invoice.model.DefaultInvoice;
import com.ning.billing.invoice.model.DefaultInvoiceItem;
import org.apache.commons.io.IOUtils;
diff --git a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
index cf8b130..bdbee77 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/dao/MockInvoiceDao.java
@@ -29,21 +29,39 @@ import java.util.UUID;
import org.joda.time.DateTime;
+import com.google.inject.Inject;
import com.ning.billing.invoice.api.Invoice;
import com.ning.billing.invoice.api.InvoiceItem;
+import com.ning.billing.invoice.api.user.DefaultInvoiceCreationNotification;
import com.ning.billing.invoice.model.DefaultInvoice;
import com.ning.billing.payment.api.InvoicePayment;
+import com.ning.billing.util.eventbus.EventBus;
+import com.ning.billing.util.eventbus.EventBus.EventBusException;
public class MockInvoiceDao implements InvoiceDao {
+ private final EventBus eventBus;
private final Object monitor = new Object();
private final Map<String, Invoice> invoices = new LinkedHashMap<String, Invoice>();
private final Map<UUID, InvoicePayment> invoicePayments = new LinkedHashMap<UUID, InvoicePayment>();
+ @Inject
+ public MockInvoiceDao(EventBus eventBus) {
+ this.eventBus = eventBus;
+ }
+
@Override
public void create(Invoice invoice) {
synchronized (monitor) {
invoices.put(invoice.getId().toString(), invoice);
}
+ try {
+ eventBus.post(new DefaultInvoiceCreationNotification(invoice.getId(), invoice.getAccountId(),
+ invoice.getAmountOutstanding(), invoice.getCurrency(),
+ invoice.getInvoiceDate()));
+ }
+ catch (EventBusException ex) {
+ throw new RuntimeException(ex);
+ }
}
private Invoice munge(Invoice invoice) {
diff --git a/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java
new file mode 100644
index 0000000..d01301b
--- /dev/null
+++ b/invoice/src/test/java/com/ning/billing/invoice/glue/InvoiceModuleWithMocks.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2010-2011 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.invoice.glue;
+
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.invoice.dao.MockInvoiceDao;
+
+public class InvoiceModuleWithMocks extends InvoiceModule {
+ @Override
+ protected void installInvoiceDao() {
+ bind(MockInvoiceDao.class).asEagerSingleton();
+ bind(InvoiceDao.class).to(MockInvoiceDao.class);
+ }
+}
payment/pom.xml 4(+4 -0)
diff --git a/payment/pom.xml b/payment/pom.xml
index 0df4f14..807b072 100644
--- a/payment/pom.xml
+++ b/payment/pom.xml
@@ -68,6 +68,10 @@
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
<dependency>
<groupId>org.testng</groupId>
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
index 5cba9e6..06b2834 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentApi.java
@@ -131,7 +131,7 @@ public class DefaultPaymentApi implements PaymentApi {
// TODO: send a notification that invoice was ignored ?
}
else if (invoiceId.equals(paymentDao.getPaymentAttemptForInvoiceId(invoiceId))) {
-
+ //TODO: do equals on invoice instead and only reject when invoice is exactly the same?
}
else {
PaymentAttempt paymentAttempt = paymentDao.createPaymentAttempt(invoice);
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
index efd64fc..7cd8adb 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
@@ -78,6 +78,8 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, CloseMe, Tr
stmt.bind("invoice_dt", getDate(paymentAttempt.getInvoiceDate()));
stmt.bind("payment_attempt_dt", getDate(paymentAttempt.getPaymentAttemptDate()));
stmt.bind("payment_id", paymentAttempt.getPaymentId());
+ stmt.bind("created_dt", getDate(paymentAttempt.getCreatedDate()));
+ stmt.bind("updated_dt", getDate(paymentAttempt.getUpdatedDate()));
}
}
@@ -99,8 +101,10 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, CloseMe, Tr
DateTime invoiceDate = getDate(rs, "invoice_dt");
DateTime paymentAttemptDate = getDate(rs, "payment_attempt_dt");
String paymentId = rs.getString("payment_id");
+ DateTime createdDate = getDate(rs, "created_dt");
+ DateTime updatedDate = getDate(rs, "updated_dt");
- return new PaymentAttempt(paymentAttemptId, invoiceId, accountId, amount, currency, invoiceDate, paymentAttemptDate, paymentId);
+ return new PaymentAttempt(paymentAttemptId, invoiceId, accountId, amount, currency, invoiceDate, paymentAttemptDate, paymentId, createdDate, updatedDate);
}
}
diff --git a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
index 39a3d67..af001a3 100644
--- a/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
+++ b/payment/src/main/java/com/ning/billing/payment/RequestProcessor.java
@@ -19,6 +19,9 @@ package com.ning.billing.payment;
import java.util.Arrays;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
@@ -40,6 +43,8 @@ public class RequestProcessor {
private final PaymentProviderPluginRegistry pluginRegistry;
private final EventBus eventBus;
+ private static final Logger log = LoggerFactory.getLogger(RequestProcessor.class);
+
@Inject
public RequestProcessor(AccountUserApi accountUserApi,
PaymentApi paymentApi,
@@ -53,6 +58,7 @@ public class RequestProcessor {
@Subscribe
public void receiveInvoice(InvoiceCreationNotification event) {
+ log.info("Received invoice creation notification for account {} and invoice {}", event.getAccountId(), event.getInvoiceId());
try {
final Account account = accountUserApi.getAccountById(event.getAccountId());
diff --git a/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg b/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
index 3860c58..5156b03 100644
--- a/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
+++ b/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
@@ -2,10 +2,13 @@ group PaymentSqlDao;
paymentAttemptFields(prefix) ::= <<
<prefix>payment_attempt_id,
- <prefix>account_id,
<prefix>invoice_id,
+ <prefix>account_id,
<prefix>amount,
+ <prefix>currency,
+ <prefix>payment_id,
<prefix>payment_attempt_dt,
+ <prefix>invoice_dt,
<prefix>created_dt,
<prefix>updated_dt
>>
@@ -26,7 +29,7 @@ paymentInfoFields(prefix) ::= <<
insertPaymentAttempt() ::= <<
INSERT INTO payment_attempts (<paymentAttemptFields()>)
- VALUES (:payment_attempt_id, :account_id, :invoice_id, :amount, :payment_attempt_dt, NOW(), NOW());
+ VALUES (:payment_attempt_id, :invoice_id, :account_id, :amount, :currency, :payment_id, :payment_attempt_dt, :invoice_dt, :created_dt, :updated_dt);
>>
getPaymentAttemptForPaymentId() ::= <<
diff --git a/payment/src/main/resources/com/ning/billing/payment/ddl.sql b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
index c87cae9..fd6a1ea 100644
--- a/payment/src/main/resources/com/ning/billing/payment/ddl.sql
+++ b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
@@ -1,11 +1,13 @@
DROP TABLE IF EXISTS payment_attempts;
CREATE TABLE payment_attempts (
- payment_attempt_id varchar(36) COLLATE utf8_bin NOT NULL,
- account_id varchar(36) COLLATE utf8_bin NOT NULL,
- invoice_id varchar(36) COLLATE utf8_bin NOT NULL,
+ payment_attempt_id char(36) COLLATE utf8_bin NOT NULL,
+ account_id char(36) COLLATE utf8_bin NOT NULL,
+ invoice_id char(36) COLLATE utf8_bin NOT NULL,
amount decimal(8,2),
+ currency char(3),
payment_attempt_dt datetime NOT NULL,
payment_id varchar(36) COLLATE utf8_bin,
+ invoice_dt datetime NOT NULL,
created_dt datetime NOT NULL,
updated_dt datetime NOT NULL,
PRIMARY KEY (payment_attempt_id)
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
index 10f8d8f..296eae0 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestMockPaymentApi.java
@@ -19,9 +19,9 @@ package com.ning.billing.payment.api;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
-import com.ning.billing.payment.setup.PaymentTestModule;
+import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
-@Guice(modules = PaymentTestModule.class)
+@Guice(modules = PaymentTestModuleWithMocks.class)
@Test(groups = "fast")
public class TestMockPaymentApi extends TestPaymentApi {
diff --git a/payment/src/test/java/com/ning/billing/payment/setup/PaymentModuleWithMocks.java b/payment/src/test/java/com/ning/billing/payment/setup/PaymentModuleWithMocks.java
new file mode 100644
index 0000000..4523900
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/setup/PaymentModuleWithMocks.java
@@ -0,0 +1,11 @@
+package com.ning.billing.payment.setup;
+
+import com.ning.billing.payment.dao.MockPaymentDao;
+import com.ning.billing.payment.dao.PaymentDao;
+
+public class PaymentModuleWithMocks extends PaymentModule {
+ @Override
+ protected void installPaymentDao() {
+ bind(PaymentDao.class).to(MockPaymentDao.class).asEagerSingleton();
+ }
+}
diff --git a/payment/src/test/java/com/ning/billing/payment/TestHelper.java b/payment/src/test/java/com/ning/billing/payment/TestHelper.java
new file mode 100644
index 0000000..d4f8274
--- /dev/null
+++ b/payment/src/test/java/com/ning/billing/payment/TestHelper.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2010-2011 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.math.BigDecimal;
+import java.util.UUID;
+
+import org.apache.commons.lang.RandomStringUtils;
+import org.joda.time.DateTime;
+import org.joda.time.DateTimeZone;
+
+import com.google.inject.Inject;
+import com.ning.billing.account.api.Account;
+import com.ning.billing.account.api.user.AccountBuilder;
+import com.ning.billing.account.dao.AccountDao;
+import com.ning.billing.catalog.api.Currency;
+import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoiceItem;
+import com.ning.billing.invoice.dao.InvoiceDao;
+import com.ning.billing.invoice.model.DefaultInvoice;
+import com.ning.billing.invoice.model.DefaultInvoiceItem;
+
+public class TestHelper {
+ protected final AccountDao accountDao;
+ protected final InvoiceDao invoiceDao;
+
+ @Inject
+ public TestHelper(AccountDao accountDao, InvoiceDao invoiceDao) {
+ this.accountDao = accountDao;
+ this.invoiceDao = invoiceDao;
+ }
+
+ public Account createTestAccount() {
+ final String name = "First" + RandomStringUtils.random(5) + " " + "Last" + RandomStringUtils.random(5);
+ final Account account = new AccountBuilder(UUID.randomUUID()).name(name)
+ .firstNameLength(name.length())
+ .externalKey("12345")
+ .phone("123-456-7890")
+ .email("user@example.com")
+ .currency(Currency.USD)
+ .billingCycleDay(1)
+ .build();
+ accountDao.create(account);
+ return account;
+ }
+
+ public Invoice createTestInvoice(Account account,
+ DateTime targetDate,
+ Currency currency,
+ InvoiceItem... items) {
+ Invoice invoice = new DefaultInvoice(UUID.randomUUID(), account.getId(), new DateTime(), targetDate, currency, null, new BigDecimal("0"));
+
+ for (InvoiceItem item : items) {
+ invoice.add(new DefaultInvoiceItem(invoice.getId(),
+ item.getSubscriptionId(),
+ item.getStartDate(),
+ item.getEndDate(),
+ item.getDescription(),
+ item.getAmount(),
+ item.getRate(),
+ item.getCurrency()));
+ }
+ invoiceDao.create(invoice);
+ return invoice;
+ }
+
+ public Invoice createTestInvoice(Account account) {
+ final DateTime now = new DateTime(DateTimeZone.UTC);
+ final UUID subscriptionId = UUID.randomUUID();
+ final BigDecimal amount = new BigDecimal("10.00");
+ final InvoiceItem item = new DefaultInvoiceItem(null, subscriptionId, now, now.plusMonths(1), "Test", amount, new BigDecimal("1.0"), Currency.USD);
+
+ return createTestInvoice(account, now, Currency.USD, item);
+ }
+}
diff --git a/payment/src/test/java/com/ning/billing/payment/TestNotifyInvoicePaymentApi.java b/payment/src/test/java/com/ning/billing/payment/TestNotifyInvoicePaymentApi.java
index 55d5114..d4aa62f 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestNotifyInvoicePaymentApi.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestNotifyInvoicePaymentApi.java
@@ -20,21 +20,50 @@ import static org.testng.Assert.assertNotNull;
import java.util.UUID;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
+import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
+import com.ning.billing.account.glue.AccountModuleWithMocks;
import com.ning.billing.invoice.api.Invoice;
+import com.ning.billing.invoice.api.InvoicePaymentApi;
+import com.ning.billing.invoice.glue.InvoiceModuleWithMocks;
import com.ning.billing.payment.api.InvoicePayment;
-import com.ning.billing.payment.setup.PaymentTestModule;
+import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
+import com.ning.billing.util.eventbus.EventBus;
+import com.ning.billing.util.eventbus.EventBus.EventBusException;
+
+@Test
+@Guice(modules = { PaymentTestModuleWithMocks.class, AccountModuleWithMocks.class, InvoiceModuleWithMocks.class })
+public class TestNotifyInvoicePaymentApi {
+ @Inject
+ private EventBus eventBus;
+ @Inject
+ private RequestProcessor invoiceProcessor;
+ @Inject
+ private InvoicePaymentApi invoicePaymentApi;
+ @Inject
+ private TestHelper testHelper;
+
+ @BeforeMethod(alwaysRun = true)
+ public void setUp() throws EventBusException {
+ eventBus.start();
+ eventBus.register(invoiceProcessor);
+ }
-@Guice(modules = PaymentTestModule.class)
-public class TestNotifyInvoicePaymentApi extends TestPaymentProvider {
+ @AfterMethod(alwaysRun = true)
+ public void tearDown() throws EventBusException {
+ eventBus.unregister(invoiceProcessor);
+ eventBus.stop();
+ }
@Test
public void testNotifyPaymentSuccess() {
- final Account account = createTestAccount();
- final Invoice invoice = createTestInvoice(account);
+ final Account account = testHelper.createTestAccount();
+ final Invoice invoice = testHelper.createTestInvoice(account);
PaymentAttempt paymentAttempt = new PaymentAttempt(UUID.randomUUID(), invoice);
@@ -51,8 +80,8 @@ public class TestNotifyInvoicePaymentApi extends TestPaymentProvider {
@Test
public void testNotifyPaymentFailure() {
- final Account account = createTestAccount();
- final Invoice invoice = createTestInvoice(account);
+ final Account account = testHelper.createTestAccount();
+ final Invoice invoice = testHelper.createTestInvoice(account);
PaymentAttempt paymentAttempt = new PaymentAttempt(UUID.randomUUID(), invoice);
invoicePaymentApi.notifyOfPaymentAttempt(invoice.getId(),
diff --git a/payment/src/test/java/com/ning/billing/payment/TestPaymentInvoiceIntegration.java b/payment/src/test/java/com/ning/billing/payment/TestPaymentInvoiceIntegration.java
index 4568936..1027abe 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestPaymentInvoiceIntegration.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestPaymentInvoiceIntegration.java
@@ -24,12 +24,9 @@ import static org.testng.Assert.assertTrue;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
-import java.util.UUID;
import java.util.concurrent.Callable;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.RandomStringUtils;
-import org.joda.time.DateTime;
import org.skife.jdbi.v2.IDBI;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
@@ -43,18 +40,11 @@ import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.user.AccountBuilder;
-import com.ning.billing.account.dao.AccountDao;
import com.ning.billing.account.glue.AccountModule;
-import com.ning.billing.catalog.api.Currency;
import com.ning.billing.dbi.MysqlTestingHelper;
import com.ning.billing.invoice.api.Invoice;
-import com.ning.billing.invoice.api.InvoiceItem;
import com.ning.billing.invoice.api.InvoicePaymentApi;
-import com.ning.billing.invoice.dao.InvoiceDao;
import com.ning.billing.invoice.glue.InvoiceModule;
-import com.ning.billing.invoice.model.DefaultInvoice;
-import com.ning.billing.invoice.model.DefaultInvoiceItem;
import com.ning.billing.payment.api.PaymentApi;
import com.ning.billing.payment.api.PaymentAttempt;
import com.ning.billing.payment.api.PaymentError;
@@ -72,13 +62,11 @@ public class TestPaymentInvoiceIntegration {
@Inject
private RequestProcessor invoiceProcessor;
@Inject
- protected AccountDao accountDao;
+ private InvoicePaymentApi invoicePaymentApi;
@Inject
- protected InvoiceDao invoiceDao;
+ private PaymentApi paymentApi;
@Inject
- protected InvoicePaymentApi invoicePaymentApi;
- @Inject
- protected PaymentApi paymentApi;
+ private TestHelper testHelper;
private MockPaymentInfoReceiver paymentInfoReceiver;
@@ -121,58 +109,19 @@ public class TestPaymentInvoiceIntegration {
eventBus.start();
eventBus.register(invoiceProcessor);
eventBus.register(paymentInfoReceiver);
-
}
@AfterMethod(alwaysRun = true)
- public void tearDown() {
+ public void tearDown() throws EventBusException {
+ eventBus.unregister(invoiceProcessor);
+ eventBus.unregister(paymentInfoReceiver);
eventBus.stop();
}
- @Test(enabled = false)
- protected Account createTestAccount() {
- final String name = "First" + RandomStringUtils.random(5) + " " + "Last" + RandomStringUtils.random(5);
- final Account account = new AccountBuilder(UUID.randomUUID()).name(name)
- .firstNameLength(name.length())
- .externalKey("12345")
- .phone("123-456-7890")
- .email("user@example.com")
- .currency(Currency.USD)
- .billingCycleDay(1)
- .build();
- accountDao.create(account);
- return account;
- }
-
- @Test(enabled = false)
- protected Invoice createTestInvoice(Account account,
- DateTime targetDate,
- Currency currency,
- InvoiceItem... items) {
- Invoice invoice = new DefaultInvoice(UUID.randomUUID(), account.getId(), new DateTime(), targetDate, currency, null, new BigDecimal("0"));
-
- for (InvoiceItem item : items) {
- invoice.add(new DefaultInvoiceItem(invoice.getId(),
- item.getSubscriptionId(),
- item.getStartDate(),
- item.getEndDate(),
- item.getDescription(),
- item.getAmount(),
- item.getRate(),
- item.getCurrency()));
- }
- invoiceDao.create(invoice);
- return invoice;
- }
-
@Test
public void testInvoiceIntegration() throws Exception {
- final DateTime now = new DateTime();
- final Account account = createTestAccount();
- final UUID subscriptionId = UUID.randomUUID();
- final BigDecimal amount = new BigDecimal("10.00");
- final InvoiceItem item = new DefaultInvoiceItem(null, subscriptionId, now, now.plusMonths(1), "Test", amount, new BigDecimal("1.0"), Currency.USD);
- final Invoice invoice = createTestInvoice(account, now, Currency.USD, item);
+ final Account account = testHelper.createTestAccount();
+ final Invoice invoice = testHelper.createTestInvoice(account);
await().atMost(1, MINUTES).until(new Callable<Boolean>() {
@Override
@@ -196,8 +145,8 @@ public class TestPaymentInvoiceIntegration {
Assert.assertNotNull(invoiceForPayment);
Assert.assertEquals(invoiceForPayment.getId(), invoice.getId());
Assert.assertEquals(invoiceForPayment.getAccountId(), account.getId());
- Assert.assertEquals(invoiceForPayment.getLastPaymentAttempt(), paymentAttempt.getPaymentAttemptDate());
- Assert.assertEquals(invoiceForPayment.getAmountOutstanding(), new BigDecimal("0"));
- Assert.assertEquals(invoiceForPayment.getAmountPaid(), amount);
+ Assert.assertTrue(invoiceForPayment.getLastPaymentAttempt().isEqual(paymentAttempt.getPaymentAttemptDate()));
+ Assert.assertEquals(invoiceForPayment.getAmountOutstanding().floatValue(), new BigDecimal("0").floatValue());
+ Assert.assertEquals(invoiceForPayment.getAmountPaid().floatValue(), invoice.getAmountOutstanding().floatValue());
}
}
diff --git a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
index d5c71b0..9f9720c 100644
--- a/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
+++ b/payment/src/test/java/com/ning/billing/payment/TestPaymentProvider.java
@@ -22,13 +22,9 @@ import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
-import java.math.BigDecimal;
import java.util.List;
-import java.util.UUID;
import java.util.concurrent.Callable;
-import org.apache.commons.lang.RandomStringUtils;
-import org.joda.time.DateTime;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Guice;
@@ -36,29 +32,22 @@ import org.testng.annotations.Test;
import com.google.inject.Inject;
import com.ning.billing.account.api.Account;
-import com.ning.billing.account.api.MockAccountUserApi;
-import com.ning.billing.catalog.api.Currency;
-import com.ning.billing.invoice.api.Invoice;
-import com.ning.billing.invoice.api.InvoiceCreationNotification;
-import com.ning.billing.invoice.api.MockInvoicePaymentApi;
-import com.ning.billing.invoice.model.DefaultInvoice;
-import com.ning.billing.invoice.model.DefaultInvoiceItem;
+import com.ning.billing.account.glue.AccountModuleWithMocks;
+import com.ning.billing.invoice.glue.InvoiceModuleWithMocks;
import com.ning.billing.payment.api.PaymentError;
import com.ning.billing.payment.api.PaymentInfo;
-import com.ning.billing.payment.setup.PaymentTestModule;
+import com.ning.billing.payment.setup.PaymentTestModuleWithMocks;
import com.ning.billing.util.eventbus.EventBus;
import com.ning.billing.util.eventbus.EventBus.EventBusException;
-@Guice(modules = PaymentTestModule.class)
+@Guice(modules = { PaymentTestModuleWithMocks.class, AccountModuleWithMocks.class, InvoiceModuleWithMocks.class })
public class TestPaymentProvider {
@Inject
private EventBus eventBus;
@Inject
private RequestProcessor invoiceProcessor;
@Inject
- protected MockAccountUserApi accountUserApi;
- @Inject
- protected MockInvoicePaymentApi invoicePaymentApi;
+ private TestHelper testHelper;
private MockPaymentInfoReceiver paymentInfoReceiver;
@@ -72,22 +61,18 @@ public class TestPaymentProvider {
}
@AfterMethod(alwaysRun = true)
- public void tearDown() {
+ public void tearDown() throws EventBusException {
+ eventBus.unregister(invoiceProcessor);
+ eventBus.unregister(paymentInfoReceiver);
eventBus.stop();
}
- protected Account createTestAccount() {
- String name = "First" + RandomStringUtils.random(5) + " " + "Last" + RandomStringUtils.random(5);
- String externalKey = "12345";
- return accountUserApi.createAccount(UUID.randomUUID(), externalKey, "user@example.com", name, name.length(), "123-456-7890", Currency.USD, 1, null, BigDecimal.ZERO);
- }
-
@Test
public void testSimpleInvoice() throws Exception {
- final Account account = createTestAccount();
- final Invoice invoice = createTestInvoice(account);
+ final Account account = testHelper.createTestAccount();
+
+ testHelper.createTestInvoice(account);
- eventBus.post(createNotificationFor(invoice));
await().atMost(1, MINUTES).until(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
@@ -120,53 +105,4 @@ public class TestPaymentProvider {
assertTrue(paymentInfoReceiver.getErrors().isEmpty());
assertEquals(paymentInfoReceiver.getProcessedPayments().get(0), paymentInfo);
}
-
- protected Invoice createTestInvoice(final Account account) {
- final DateTime now = new DateTime();
- final UUID subscriptionId = UUID.randomUUID();
- final BigDecimal amount = new BigDecimal("10.00");
- final Invoice invoice = createInvoice(account, now, Currency.USD);
-
- invoice.add(new DefaultInvoiceItem(invoice.getId(), subscriptionId, now, now.plusMonths(1), "Test", amount, new BigDecimal("1.0"), Currency.USD));
- return invoice;
- }
-
- protected Invoice createInvoice(Account account,
- DateTime targetDate,
- Currency currency) {
- Invoice invoice = new DefaultInvoice(account.getId(), targetDate, currency);
-
- invoicePaymentApi.add(invoice);
- return invoice;
- }
-
- protected InvoiceCreationNotification createNotificationFor(final Invoice invoice) {
- return new InvoiceCreationNotification() {
- @Override
- public UUID getInvoiceId() {
- return invoice.getId();
- }
-
- @Override
- public DateTime getInvoiceCreationDate() {
- return invoice.getInvoiceDate();
- }
-
- @Override
- public Currency getCurrency() {
- return invoice.getCurrency();
- }
-
- @Override
- public BigDecimal getAmountOwed() {
- return invoice.getAmountOutstanding();
- }
-
- @Override
- public UUID getAccountId() {
- return invoice.getAccountId();
- }
- };
- }
-
}
diff --git a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
index e8a77f6..be53073 100644
--- a/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
+++ b/util/src/test/java/com/ning/billing/dbi/MysqlTestingHelper.java
@@ -16,8 +16,12 @@
package com.ning.billing.dbi;
-import com.mysql.management.MysqldResource;
-import com.mysql.management.MysqldResourceI;
+import java.io.File;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.commons.io.FileUtils;
import org.skife.jdbi.v2.DBI;
import org.skife.jdbi.v2.Handle;
@@ -27,11 +31,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
-import java.io.File;
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.HashMap;
-import java.util.Map;
+import com.mysql.management.MysqldResource;
+import com.mysql.management.MysqldResourceI;
/**
* Utility class to embed MySQL for testing purposes
@@ -73,7 +74,7 @@ public class MysqlTestingHelper
dbOpts.put(MysqldResourceI.PORT, Integer.toString(port));
dbOpts.put(MysqldResourceI.INITIALIZE_USER, "true");
dbOpts.put(MysqldResourceI.INITIALIZE_USER_NAME, USERNAME);
- dbOpts.put(MysqldResourceI.INITIALIZE_PASSWORD, PASSWORD);
+ dbOpts.put("default-time-zone", "+00:00");
mysqldResource.start("test-mysqld-thread", dbOpts);
if (!mysqldResource.isRunning()) {