You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ma...@apache.org on 2013/10/14 13:30:52 UTC
svn commit: r1531859 - in
/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy:
BaseTestProxiedObjectPool.java TestProxiedObjectPoolWithCglibProxy.java
TestProxiedObjectPoolWithJdkProxy.java
Author: markt
Date: Mon Oct 14 11:30:51 2013
New Revision: 1531859
URL: http://svn.apache.org/r1531859
Log:
Reduce code duplication
Added:
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java (with props)
Modified:
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithJdkProxy.java
Added: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java?rev=1531859&view=auto
==============================================================================
--- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java (added)
+++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java Mon Oct 14 11:30:51 2013
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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 org.apache.commons.pool2.proxy;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.commons.pool2.BasePooledObjectFactory;
+import org.apache.commons.pool2.ObjectPool;
+import org.apache.commons.pool2.PooledObjectFactory;
+import org.apache.commons.pool2.impl.AbandonedConfig;
+import org.apache.commons.pool2.impl.GenericObjectPool;
+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public abstract class BaseTestProxiedObjectPool {
+
+ private static final String DATA1 = "data1";
+ private static final int ABANDONED_TIMEOUT_SECS = 3;
+
+ private ObjectPool<TestObject> pool;
+ private StringWriter log;
+
+ @Before
+ public void setup() {
+ log = new StringWriter();
+
+ PrintWriter pw = new PrintWriter(log);
+ AbandonedConfig abandonedConfig = new AbandonedConfig();
+ abandonedConfig.setLogAbandoned(true);
+ abandonedConfig.setRemoveAbandonedOnBorrow(true);
+ abandonedConfig.setUseUsageTracking(true);
+ abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
+ abandonedConfig.setLogWriter(pw);
+
+ GenericObjectPoolConfig config = new GenericObjectPoolConfig();
+ config.setMaxTotal(3);
+
+ PooledObjectFactory<TestObject> factory = new TestObjectFactory();
+
+ ObjectPool<TestObject> innerPool =
+ new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
+
+ pool = new ProxiedObjectPool<TestObject>(innerPool, getproxySource());
+ }
+
+
+ protected abstract ProxySource<TestObject> getproxySource();
+
+ @Test
+ public void testBorrowObject() throws Exception {
+ TestObject obj = pool.borrowObject();
+ assertNotNull(obj);
+
+ // Make sure proxied methods are working
+ obj.setData(DATA1);
+ assertEquals(DATA1, obj.getData());
+
+ pool.returnObject(obj);
+ }
+
+
+ @Test(expected=IllegalStateException.class)
+ public void testAccessAfterReturn() throws Exception {
+ TestObject obj = pool.borrowObject();
+ assertNotNull(obj);
+
+ // Make sure proxied methods are working
+ obj.setData(DATA1);
+ assertEquals(DATA1, obj.getData());
+
+ pool.returnObject(obj);
+
+ assertNotNull(obj);
+
+ obj.getData();
+ }
+
+
+ @Test
+ public void testUsageTracking() throws Exception {
+ TestObject obj = pool.borrowObject();
+ assertNotNull(obj);
+
+ // Use the object to trigger collection of last used stack trace
+ obj.setData(DATA1);
+
+ // Sleep long enough for the object to be considered abandoned
+ Thread.sleep((ABANDONED_TIMEOUT_SECS + 2) * 1000);
+
+ // Borrow another object to trigger the abandoned object processing
+ pool.borrowObject();
+
+ String logOutput = log.getBuffer().toString();
+
+ assertTrue(logOutput.contains("Pooled object created"));
+ assertTrue(logOutput.contains("The last code to use this object was"));
+ }
+
+ private static class TestObjectFactory extends
+ BasePooledObjectFactory<TestObject> {
+
+ @Override
+ public TestObject create() throws Exception {
+ return new TestObjectImpl();
+ }
+ }
+
+
+ protected static interface TestObject {
+ String getData();
+ void setData(String data);
+ }
+
+
+ private static class TestObjectImpl implements TestObject {
+
+ private String data;
+
+ @Override
+ public String getData() {
+ return data;
+ }
+
+ @Override
+ public void setData(String data) {
+ this.data = data;
+ }
+ }
+
+}
Propchange: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/BaseTestProxiedObjectPool.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java?rev=1531859&r1=1531858&r2=1531859&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java (original)
+++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithCglibProxy.java Mon Oct 14 11:30:51 2013
@@ -16,135 +16,11 @@
*/
package org.apache.commons.pool2.proxy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+public class TestProxiedObjectPoolWithCglibProxy extends
+ BaseTestProxiedObjectPool {
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.commons.pool2.BasePooledObjectFactory;
-import org.apache.commons.pool2.ObjectPool;
-import org.apache.commons.pool2.PooledObjectFactory;
-import org.apache.commons.pool2.impl.AbandonedConfig;
-import org.apache.commons.pool2.impl.GenericObjectPool;
-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
-
-import org.junit.Before;
-import org.junit.Test;
-
-public class TestProxiedObjectPoolWithCglibProxy {
-
- private static final String DATA1 = "data1";
- private static final int ABANDONED_TIMEOUT_SECS = 3;
-
- private ObjectPool<TestObject> pool;
- private StringWriter log;
-
- @Before
- public void setup() {
- log = new StringWriter();
-
- PrintWriter pw = new PrintWriter(log);
- AbandonedConfig abandonedConfig = new AbandonedConfig();
- abandonedConfig.setLogAbandoned(true);
- abandonedConfig.setRemoveAbandonedOnBorrow(true);
- abandonedConfig.setUseUsageTracking(true);
- abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
- abandonedConfig.setLogWriter(pw);
-
- GenericObjectPoolConfig config = new GenericObjectPoolConfig();
- config.setMaxTotal(3);
-
- PooledObjectFactory<TestObject> factory = new TestObjectFactory();
-
- ObjectPool<TestObject> innerPool =
- new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
-
- ProxySource<TestObject> proxySource =
- new CglibProxySource<TestObject>(TestObject.class);
- pool = new ProxiedObjectPool<TestObject>(innerPool, proxySource);
- }
-
-
- @Test
- public void testBorrowObject() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Make sure proxied methods are working
- obj.setData(DATA1);
- assertEquals(DATA1, obj.getData());
-
- pool.returnObject(obj);
- }
-
-
- @Test(expected=IllegalStateException.class)
- public void testAccessAfterReturn() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Make sure proxied methods are working
- obj.setData(DATA1);
- assertEquals(DATA1, obj.getData());
-
- pool.returnObject(obj);
-
- assertNotNull(obj);
-
- obj.getData();
- }
-
-
- @Test
- public void testUsageTracking() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Use the object to trigger collection of last used stack trace
- obj.setData(DATA1);
-
- // Sleep long enough for the object to be considered abandoned
- Thread.sleep((ABANDONED_TIMEOUT_SECS + 2) * 1000);
-
- // Borrow another object to trigger the abandoned object processing
- pool.borrowObject();
-
- String logOutput = log.getBuffer().toString();
-
- assertTrue(logOutput.contains("Pooled object created"));
- assertTrue(logOutput.contains("The last code to use this object was"));
- }
-
- private static class TestObjectFactory extends
- BasePooledObjectFactory<TestObject> {
-
- @Override
- public TestObject create() throws Exception {
- return new TestObjectImpl();
- }
- }
-
-
- private static interface TestObject {
- String getData();
- void setData(String data);
- }
-
-
- private static class TestObjectImpl implements TestObject {
-
- private String data;
-
- @Override
- public String getData() {
- return data;
- }
-
- @Override
- public void setData(String data) {
- this.data = data;
- }
+ @Override
+ protected ProxySource<TestObject> getproxySource() {
+ return new CglibProxySource<TestObject>(TestObject.class);
}
}
Modified: commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithJdkProxy.java
URL: http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithJdkProxy.java?rev=1531859&r1=1531858&r2=1531859&view=diff
==============================================================================
--- commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithJdkProxy.java (original)
+++ commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/proxy/TestProxiedObjectPoolWithJdkProxy.java Mon Oct 14 11:30:51 2013
@@ -16,135 +16,12 @@
*/
package org.apache.commons.pool2.proxy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+public class TestProxiedObjectPoolWithJdkProxy
+ extends BaseTestProxiedObjectPool {
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-import org.apache.commons.pool2.BasePooledObjectFactory;
-import org.apache.commons.pool2.ObjectPool;
-import org.apache.commons.pool2.PooledObjectFactory;
-import org.apache.commons.pool2.impl.AbandonedConfig;
-import org.apache.commons.pool2.impl.GenericObjectPool;
-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
-
-import org.junit.Before;
-import org.junit.Test;
-
-public class TestProxiedObjectPoolWithJdkProxy {
-
- private static final String DATA1 = "data1";
- private static final int ABANDONED_TIMEOUT_SECS = 3;
-
- private ObjectPool<TestObject> pool;
- private StringWriter log;
-
- @Before
- public void setup() {
- log = new StringWriter();
-
- PrintWriter pw = new PrintWriter(log);
- AbandonedConfig abandonedConfig = new AbandonedConfig();
- abandonedConfig.setLogAbandoned(true);
- abandonedConfig.setRemoveAbandonedOnBorrow(true);
- abandonedConfig.setUseUsageTracking(true);
- abandonedConfig.setRemoveAbandonedTimeout(ABANDONED_TIMEOUT_SECS);
- abandonedConfig.setLogWriter(pw);
-
- GenericObjectPoolConfig config = new GenericObjectPoolConfig();
- config.setMaxTotal(3);
-
- PooledObjectFactory<TestObject> factory = new TestObjectFactory();
-
- ObjectPool<TestObject> innerPool =
- new GenericObjectPool<TestObject>(factory, config, abandonedConfig);
-
- ProxySource<TestObject> proxySource = new JdkProxySource<TestObject>(
- this.getClass().getClassLoader(), new Class<?>[] { TestObject.class });
- pool = new ProxiedObjectPool<TestObject>(innerPool, proxySource);
- }
-
-
- @Test
- public void testBorrowObject() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Make sure proxied methods are working
- obj.setData(DATA1);
- assertEquals(DATA1, obj.getData());
-
- pool.returnObject(obj);
- }
-
-
- @Test(expected=IllegalStateException.class)
- public void testAccessAfterReturn() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Make sure proxied methods are working
- obj.setData(DATA1);
- assertEquals(DATA1, obj.getData());
-
- pool.returnObject(obj);
-
- assertNotNull(obj);
-
- obj.getData();
- }
-
-
- @Test
- public void testUsageTracking() throws Exception {
- TestObject obj = pool.borrowObject();
- assertNotNull(obj);
-
- // Use the object to trigger collection of last used stack trace
- obj.setData(DATA1);
-
- // Sleep long enough for the object to be considered abandoned
- Thread.sleep((ABANDONED_TIMEOUT_SECS + 2) * 1000);
-
- // Borrow another object to trigger the abandoned object processing
- pool.borrowObject();
-
- String logOutput = log.getBuffer().toString();
-
- assertTrue(logOutput.contains("Pooled object created"));
- assertTrue(logOutput.contains("The last code to use this object was"));
- }
-
- private static class TestObjectFactory extends
- BasePooledObjectFactory<TestObject> {
-
- @Override
- public TestObject create() throws Exception {
- return new TestObjectImpl();
- }
- }
-
-
- private static interface TestObject {
- String getData();
- void setData(String data);
- }
-
-
- private static class TestObjectImpl implements TestObject {
-
- private String data;
-
- @Override
- public String getData() {
- return data;
- }
-
- @Override
- public void setData(String data) {
- this.data = data;
- }
+ @Override
+ protected ProxySource<TestObject> getproxySource() {
+ return new JdkProxySource<TestObject>(this.getClass().getClassLoader(),
+ new Class<?>[] { TestObject.class });
}
}