001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.commons.pool.impl;
019
020 import org.apache.commons.pool.TestKeyedObjectPoolFactory;
021 import org.apache.commons.pool.KeyedObjectPoolFactory;
022 import org.apache.commons.pool.KeyedPoolableObjectFactory;
023 import junit.framework.Test;
024 import junit.framework.TestSuite;
025
026 /**
027 * Tests for {@link GenericKeyedObjectPoolFactory}.
028 *
029 * @author Sandy McArthur
030 * @version $Revision: 774099 $ $Date: 2009-05-12 17:29:02 -0400 (Tue, 12 May 2009) $
031 */
032 public class TestGenericKeyedObjectPoolFactory extends TestKeyedObjectPoolFactory {
033 public TestGenericKeyedObjectPoolFactory(final String name) {
034 super(name);
035 }
036
037 public static Test suite() {
038 return new TestSuite(TestGenericKeyedObjectPoolFactory.class);
039 }
040
041 protected KeyedObjectPoolFactory makeFactory(final KeyedPoolableObjectFactory objectFactory) {
042 return new GenericKeyedObjectPoolFactory(objectFactory);
043 }
044
045 public void testConstructors() throws Exception {
046 GenericKeyedObjectPoolFactory factory = new GenericKeyedObjectPoolFactory(createObjectFactory());
047 factory.createPool().close();
048 GenericKeyedObjectPool pool;
049
050
051 final GenericKeyedObjectPool.Config config = new GenericKeyedObjectPool.Config();
052 config.maxActive = 1;
053 config.maxIdle = 2;
054 config.maxWait = 3;
055 config.minIdle = 4;
056 config.minEvictableIdleTimeMillis = 5;
057 config.numTestsPerEvictionRun = 6;
058 config.testOnBorrow = true;
059 config.testOnReturn = false;
060 config.testWhileIdle = true;
061 config.timeBetweenEvictionRunsMillis = 8;
062 config.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
063 config.lifo = false;
064 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), config);
065 pool = (GenericKeyedObjectPool)factory.createPool();
066 assertEquals(1, pool.getMaxActive());
067 assertEquals(2, pool.getMaxIdle());
068 assertEquals(3, pool.getMaxWait());
069 assertEquals(4, pool.getMinIdle());
070 assertEquals(5, pool.getMinEvictableIdleTimeMillis());
071 assertEquals(6, pool.getNumTestsPerEvictionRun());
072 assertEquals(true, pool.getTestOnBorrow());
073 assertEquals(false, pool.getTestOnReturn());
074 assertEquals(true, pool.getTestWhileIdle());
075 assertEquals(false, pool.getLifo());
076 assertEquals(8, pool.getTimeBetweenEvictionRunsMillis());
077 assertEquals(GenericObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
078 pool.close();
079
080
081 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1);
082 pool = (GenericKeyedObjectPool)factory.createPool();
083 assertEquals(1, pool.getMaxActive());
084 pool.close();
085
086
087 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK, 125);
088 pool = (GenericKeyedObjectPool)factory.createPool();
089 assertEquals(1, pool.getMaxActive());
090 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK, pool.getWhenExhaustedAction());
091 assertEquals(125, pool.getMaxWait());
092 pool.close();
093
094
095 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, true, false);
096 pool = (GenericKeyedObjectPool)factory.createPool();
097 assertEquals(1, pool.getMaxActive());
098 assertEquals(2, pool.getMaxWait());
099 assertEquals(true, pool.getTestOnBorrow());
100 assertEquals(false, pool.getTestOnReturn());
101 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
102 pool.close();
103
104
105 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, 3);
106 pool = (GenericKeyedObjectPool)factory.createPool();
107 assertEquals(1, pool.getMaxActive());
108 assertEquals(2, pool.getMaxWait());
109 assertEquals(3, pool.getMaxIdle());
110 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
111 pool.close();
112
113
114 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, 3, 4);
115 pool = (GenericKeyedObjectPool)factory.createPool();
116 assertEquals(1, pool.getMaxActive());
117 assertEquals(2, pool.getMaxWait());
118 assertEquals(3, pool.getMaxIdle());
119 assertEquals(4, pool.getMaxTotal());
120 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
121 pool.close();
122
123
124 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, 3, true, false);
125 pool = (GenericKeyedObjectPool)factory.createPool();
126 assertEquals(1, pool.getMaxActive());
127 assertEquals(2, pool.getMaxWait());
128 assertEquals(3, pool.getMaxIdle());
129 assertEquals(true, pool.getTestOnBorrow());
130 assertEquals(false, pool.getTestOnReturn());
131 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
132 pool.close();
133
134
135 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, 3, true, false, 4, 5, 6, false);
136 pool = (GenericKeyedObjectPool)factory.createPool();
137 assertEquals(1, pool.getMaxActive());
138 assertEquals(2, pool.getMaxWait());
139 assertEquals(3, pool.getMaxIdle());
140 assertEquals(4, pool.getTimeBetweenEvictionRunsMillis());
141 assertEquals(5, pool.getNumTestsPerEvictionRun());
142 assertEquals(6, pool.getMinEvictableIdleTimeMillis());
143 assertEquals(true, pool.getTestOnBorrow());
144 assertEquals(false, pool.getTestOnReturn());
145 assertEquals(false, pool.getTestWhileIdle());
146 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
147 pool.close();
148
149
150 factory = new GenericKeyedObjectPoolFactory(createObjectFactory(), 1, GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, 2, 3, 4, true, false, 5, 6, 7, true);
151 pool = (GenericKeyedObjectPool)factory.createPool();
152 assertEquals(1, pool.getMaxActive());
153 assertEquals(2, pool.getMaxWait());
154 assertEquals(3, pool.getMaxIdle());
155 assertEquals(4, pool.getMaxTotal());
156 assertEquals(5, pool.getTimeBetweenEvictionRunsMillis());
157 assertEquals(6, pool.getNumTestsPerEvictionRun());
158 assertEquals(7, pool.getMinEvictableIdleTimeMillis());
159 assertEquals(true, pool.getTestOnBorrow());
160 assertEquals(false, pool.getTestOnReturn());
161 assertEquals(true, pool.getTestWhileIdle());
162 assertEquals(GenericKeyedObjectPool.WHEN_EXHAUSTED_GROW, pool.getWhenExhaustedAction());
163 pool.close();
164 }
165 }