killbill-memoizeit

payment: merge system properties from resource file Signed-off-by:

3/14/2013 6:46:43 PM

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);
+    }
+}