Details
diff --git a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
index 2357a0d..6653764 100644
--- a/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
+++ b/payment/src/test/java/com/ning/billing/payment/glue/TestPaymentModule.java
@@ -16,15 +16,10 @@
package com.ning.billing.payment.glue;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Properties;
import java.util.UUID;
import org.mockito.Mockito;
import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
-import org.testng.Assert;
import com.ning.billing.ObjectType;
import com.ning.billing.mock.glue.MockAccountModule;
@@ -32,7 +27,6 @@ import com.ning.billing.mock.glue.MockEntitlementModule;
import com.ning.billing.mock.glue.MockGlobalLockerModule;
import com.ning.billing.mock.glue.MockInvoiceModule;
import com.ning.billing.mock.glue.MockNotificationQueueModule;
-import com.ning.billing.payment.PaymentTestSuiteNoDB;
import com.ning.billing.payment.TestPaymentHelper;
import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
import com.ning.billing.payment.provider.MockPaymentProviderPluginModule;
@@ -48,31 +42,11 @@ import com.google.common.collect.ImmutableList;
public class TestPaymentModule extends PaymentModule {
- protected final ConfigSource configSource;
-
private final Clock clock;
public TestPaymentModule(final ConfigSource configSource, final Clock clock) {
super(configSource);
this.clock = clock;
- this.configSource = loadSystemPropertiesFromClasspath("/resource.properties");
- }
-
- private ConfigSource loadSystemPropertiesFromClasspath(final String resource) {
- final URL url = PaymentTestSuiteNoDB.class.getResource(resource);
- Assert.assertNotNull(url);
-
- try {
- final Properties properties = System.getProperties();
- properties.load(url.openStream());
-
- properties.setProperty("killbill.payment.provider.default", MockPaymentProviderPlugin.PLUGIN_NAME);
- properties.setProperty("killbill.payment.engine.events.off", "false");
-
- return new SimplePropertyConfigSource(properties);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
}
@Override
diff --git a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
index 0968e0c..86c3ddd 100644
--- a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteNoDB.java
@@ -16,6 +16,9 @@
package com.ning.billing.payment;
+import java.net.URL;
+
+import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
@@ -27,6 +30,7 @@ import com.ning.billing.payment.core.PaymentMethodProcessor;
import com.ning.billing.payment.core.PaymentProcessor;
import com.ning.billing.payment.glue.TestPaymentModuleNoDB;
import com.ning.billing.payment.plugin.api.PaymentPluginApi;
+import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
import com.ning.billing.payment.retry.FailedPaymentRetryService;
import com.ning.billing.payment.retry.PluginFailureRetryService;
import com.ning.billing.util.config.PaymentConfig;
@@ -63,8 +67,19 @@ public abstract class PaymentTestSuiteNoDB extends GuicyKillbillTestSuiteNoDB {
@Inject
protected TestPaymentHelper testHelper;
+ private void loadSystemPropertiesFromClasspath(final String resource) {
+ final URL url = PaymentTestSuiteNoDB.class.getResource(resource);
+ Assert.assertNotNull(url);
+
+ configSource.merge(url);
+ configSource.setProperty("killbill.payment.provider.default", MockPaymentProviderPlugin.PLUGIN_NAME);
+ configSource.setProperty("killbill.payment.engine.events.off", "false");
+ }
+
@BeforeClass(groups = "fast")
protected void beforeClass() throws Exception {
+ loadSystemPropertiesFromClasspath("/resource.properties");
+
final Injector injector = Guice.createInjector(new TestPaymentModuleNoDB(configSource, getClock()));
injector.injectMembers(this);
}
diff --git a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
index a72e118..ee2b72d 100644
--- a/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
+++ b/payment/src/test/java/com/ning/billing/payment/PaymentTestSuiteWithEmbeddedDB.java
@@ -16,6 +16,9 @@
package com.ning.billing.payment;
+import java.net.URL;
+
+import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
@@ -28,6 +31,7 @@ import com.ning.billing.payment.core.PaymentProcessor;
import com.ning.billing.payment.dao.PaymentDao;
import com.ning.billing.payment.glue.TestPaymentModuleWithEmbeddedDB;
import com.ning.billing.payment.plugin.api.PaymentPluginApi;
+import com.ning.billing.payment.provider.MockPaymentProviderPlugin;
import com.ning.billing.payment.retry.FailedPaymentRetryService;
import com.ning.billing.payment.retry.PluginFailureRetryService;
import com.ning.billing.util.config.PaymentConfig;
@@ -66,8 +70,19 @@ public abstract class PaymentTestSuiteWithEmbeddedDB extends GuicyKillbillTestSu
@Inject
protected TestPaymentHelper testHelper;
+ private void loadSystemPropertiesFromClasspath(final String resource) {
+ final URL url = PaymentTestSuiteNoDB.class.getResource(resource);
+ Assert.assertNotNull(url);
+
+ configSource.merge(url);
+ configSource.setProperty("killbill.payment.provider.default", MockPaymentProviderPlugin.PLUGIN_NAME);
+ configSource.setProperty("killbill.payment.engine.events.off", "false");
+ }
+
@BeforeClass(groups = "slow")
protected void beforeClass() throws Exception {
+ loadSystemPropertiesFromClasspath("/resource.properties");
+
final Injector injector = Guice.createInjector(new TestPaymentModuleWithEmbeddedDB(configSource, getClock()));
injector.injectMembers(this);
}
diff --git a/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java b/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
index 4c0617f..b45a134 100644
--- a/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
+++ b/util/src/test/java/com/ning/billing/GuicyKillbillTestSuite.java
@@ -17,12 +17,9 @@
package com.ning.billing;
import java.lang.reflect.Method;
-import java.util.Properties;
import javax.inject.Inject;
-import org.skife.config.ConfigSource;
-import org.skife.config.SimplePropertyConfigSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.ITestResult;
@@ -53,20 +50,9 @@ public class GuicyKillbillTestSuite {
private static final ClockMock theStaticClock = new ClockMock();
- protected final ConfigSource configSource;
+ protected final KillbillConfigSource configSource = new KillbillConfigSource();
public GuicyKillbillTestSuite() {
- final Properties properties = new Properties(System.getProperties());
- properties.put("user.timezone", "UTC");
-
- // Speed up the notification queue
- properties.put("killbill.billing.util.notificationq.sleep", "100");
- // Speed up the bus
- properties.put("killbill.billing.util.persistent.bus.sleep", "100");
- properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
-
- configSource = new SimplePropertyConfigSource(properties);
-
// Ignore ehcache checks. Unfortunately, ehcache looks at system properties directly...
System.setProperty("net.sf.ehcache.skipUpdateCheck", "true");
}
diff --git a/util/src/test/java/com/ning/billing/KillbillConfigSource.java b/util/src/test/java/com/ning/billing/KillbillConfigSource.java
new file mode 100644
index 0000000..cf95af2
--- /dev/null
+++ b/util/src/test/java/com/ning/billing/KillbillConfigSource.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2010-2013 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;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Properties;
+
+import org.skife.config.ConfigSource;
+
+public class KillbillConfigSource implements ConfigSource {
+
+ private final Properties properties;
+
+ public KillbillConfigSource() {
+ properties = new Properties(System.getProperties());
+ properties.put("user.timezone", "UTC");
+
+ // Speed up the notification queue
+ properties.put("killbill.billing.util.notificationq.sleep", "100");
+ // Speed up the bus
+ properties.put("killbill.billing.util.persistent.bus.sleep", "100");
+ properties.put("killbill.billing.util.persistent.bus.nbThreads", "1");
+ }
+
+ public String getString(final String propertyName) {
+ return properties.getProperty(propertyName);
+ }
+
+ public void merge(final URL url) {
+ final Properties properties = new Properties();
+ try {
+ properties.load(url.openStream());
+ for (final String propertyName : properties.stringPropertyNames()) {
+ setProperty(propertyName, properties.getProperty(propertyName));
+ }
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void setProperty(final String propertyName, final Object propertyValue) {
+ properties.put(propertyName, propertyValue);
+ }
+}