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