List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool getNumIdle
public synchronized int getNumIdle(Object key)
key
currently idle in this pool. From source file:TestKeyedObjectPool.java
public static void main(String args[]) throws Exception { GenericKeyedObjectPool pool = new GenericKeyedObjectPool(); pool.setFactory(new SkilledEmployeeFactory()); pool.addObject("Java"); pool.addObject("Java"); pool.addObject("VB"); pool.addObject("C++"); System.err.println("Number of Java employees in pool: " + pool.getNumIdle("Java") + " out of total employees: " + pool.getNumIdle());/*ww w . j a v a 2 s . c om*/ Employee employee = (Employee)pool.borrowObject("Java"); employee.doWork(); System.err.println("Employee: " + employee); pool.returnObject("Java", employee); System.err.println("Number of Java employees in pool: " + pool.getNumIdle("Java") + " out of total employees: " + pool.getNumIdle()); }
From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericKeyedObjectPool.java
public void testExceptionOnDestroyDuringReturn() throws Exception { SimpleFactory factory = new SimpleFactory(); factory.setThrowExceptionOnDestroy(true); factory.setValidationEnabled(true);/*w ww. j a v a 2s. c om*/ GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setTestOnReturn(true); Object obj1 = pool.borrowObject("one"); pool.borrowObject("one"); factory.setValid(false); // Make validation fail pool.returnObject("one", obj1); assertEquals(1, pool.getNumActive("one")); assertEquals(0, pool.getNumIdle("one")); assertEquals(1, pool.getNumActive()); assertEquals(0, pool.getNumIdle()); }
From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericKeyedObjectPool.java
public void testExceptionOnDestroyDuringBorrow() throws Exception { SimpleFactory factory = new SimpleFactory(); factory.setThrowExceptionOnDestroy(true); factory.setValidationEnabled(true);/*from ww w.j a va2 s . co m*/ GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setTestOnBorrow(true); pool.borrowObject("one"); factory.setValid(false); // Make validation fail on next borrow attempt try { pool.borrowObject("one"); fail("Expecting NoSuchElementException"); } catch (NoSuchElementException ex) { // expected } assertEquals(1, pool.getNumActive("one")); assertEquals(0, pool.getNumIdle("one")); assertEquals(1, pool.getNumActive()); assertEquals(0, pool.getNumIdle()); }
From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericKeyedObjectPool.java
public void testExceptionOnActivateDuringBorrow() throws Exception { SimpleFactory factory = new SimpleFactory(); GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); Object obj1 = pool.borrowObject("one"); Object obj2 = pool.borrowObject("one"); pool.returnObject("one", obj1); pool.returnObject("one", obj2); factory.setThrowExceptionOnActivate(true); factory.setEvenValid(false);/*from w w w .j av a 2s.c om*/ // Activation will now throw every other time // First attempt throws, but loop continues and second succeeds Object obj = pool.borrowObject("one"); assertEquals(1, pool.getNumActive("one")); assertEquals(0, pool.getNumIdle("one")); assertEquals(1, pool.getNumActive()); assertEquals(0, pool.getNumIdle()); pool.returnObject("one", obj); factory.setValid(false); // Validation will now fail on activation when borrowObject returns // an idle instance, and then when attempting to create a new instance try { pool.borrowObject("one"); fail("Expecting NoSuchElementException"); } catch (NoSuchElementException ex) { // expected } assertEquals(0, pool.getNumActive("one")); assertEquals(0, pool.getNumIdle("one")); assertEquals(0, pool.getNumActive()); assertEquals(0, pool.getNumIdle()); }
From source file:edu.illinois.enforcemop.examples.apache.pool.TestGenericKeyedObjectPool.java
private void checkEvictionOrder(boolean lifo) throws Exception { SimpleFactory factory = new SimpleFactory(); GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setNumTestsPerEvictionRun(2);// w ww.ja va 2 s .c o m pool.setMinEvictableIdleTimeMillis(100); pool.setLifo(lifo); for (int i = 0; i < 3; i++) { Integer key = new Integer(i); for (int j = 0; j < 5; j++) { pool.addObject(key); } } // Make all evictable Thread.sleep(200); /* * Initial state (Key, Object) pairs in order of age: * * (0,0), (0,1), (0,2), (0,3), (0,4) * (1,5), (1,6), (1,7), (1,8), (1,9) * (2,10), (2,11), (2,12), (2,13), (2,14) */ pool.evict(); // Kill (0,0),(0,1) assertEquals(3, pool.getNumIdle(zero)); Object obj = pool.borrowObject(zero); assertTrue(lifo ? obj.equals("04") : obj.equals("02")); assertEquals(2, pool.getNumIdle(zero)); obj = pool.borrowObject(zero); assertTrue(obj.equals("03")); assertEquals(1, pool.getNumIdle(zero)); pool.evict(); // Kill remaining 0 survivor and (1,5) assertEquals(0, pool.getNumIdle(zero)); assertEquals(4, pool.getNumIdle(one)); obj = pool.borrowObject(one); assertTrue(lifo ? obj.equals("19") : obj.equals("16")); assertEquals(3, pool.getNumIdle(one)); obj = pool.borrowObject(one); assertTrue(lifo ? obj.equals("18") : obj.equals("17")); assertEquals(2, pool.getNumIdle(one)); pool.evict(); // Kill remaining 1 survivors assertEquals(0, pool.getNumIdle(one)); pool.evict(); // Kill (2,10), (2,11) assertEquals(3, pool.getNumIdle(two)); obj = pool.borrowObject(two); assertTrue(lifo ? obj.equals("214") : obj.equals("212")); assertEquals(2, pool.getNumIdle(two)); pool.evict(); // All dead now assertEquals(0, pool.getNumIdle(two)); pool.evict(); // Should do nothing - make sure no exception pool.evict(); // Reload pool.setMinEvictableIdleTimeMillis(500); factory.counter = 0; // Reset counter for (int i = 0; i < 3; i++) { Integer key = new Integer(i); for (int j = 0; j < 5; j++) { pool.addObject(key); } Thread.sleep(200); } // 0's are evictable, others not pool.evict(); // Kill (0,0),(0,1) assertEquals(3, pool.getNumIdle(zero)); pool.evict(); // Kill (0,2),(0,3) assertEquals(1, pool.getNumIdle(zero)); pool.evict(); // Kill (0,4), leave (1,5) assertEquals(0, pool.getNumIdle(zero)); assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); pool.evict(); // (1,6), (1,7) assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); pool.evict(); // (1,8), (1,9) assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); pool.evict(); // (2,10), (2,11) assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); pool.evict(); // (2,12), (2,13) assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); pool.evict(); // (2,14), (1,5) assertEquals(5, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); Thread.sleep(200); // Ones now timed out pool.evict(); // kill (1,6), (1,7) - (1,5) missed assertEquals(3, pool.getNumIdle(one)); assertEquals(5, pool.getNumIdle(two)); obj = pool.borrowObject(one); assertTrue(lifo ? obj.equals("19") : obj.equals("15")); }