List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool evict
public void evict() throws Exception
Perform numTests
idle object eviction tests, evicting examined objects that meet the criteria for eviction.
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);//from w w w . ja va 2s . 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")); }