List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool getNumActive
public synchronized int getNumActive(Object key)
key
. From source file:Pool146.java
public void testBlockedKeyDoesNotBlockPoolImproved() throws Exception { SimpleFactory factory = new SimpleFactory(); GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setWhenExhaustedAction(GenericKeyedObjectPool.WHEN_EXHAUSTED_BLOCK); pool.setMaxActive(1);/*ww w .j a v a2 s . c om*/ pool.setMaxTotal(-1); // Borrow with one key Object obj = pool.borrowObject("one"); // Borrow again with same key, should be blocked Runnable simple = new SimpleTestThread(pool, "one"); Thread borrowThread = new Thread(simple); borrowThread.start(); pool.borrowObject("two"); assert (pool.getNumActive("one") == 1); assert (pool.getNumActive("two") == 1); // Unblock and join the thread pool.returnObject("one", obj); borrowThread.join(); assert (pool.getNumActive("one") == 0); assert (pool.getNumActive("two") == 1); }
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);/*from w ww . java 2 s . co m*/ 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);/*www.j av a2s. 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 o m*/ // 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
@Test // @Schedules({/*from w w w . j av a2s. co m*/ // @Schedule(name = "BorrowOneBeforeTwo", value = "[beforeBorrow:afterBorrow]@borrowThread -> borrowTwo@main")}) public void testBlockedKeyDoesNotBlockPoolImproved() throws Exception { SimpleFactory factory = new SimpleFactory(); GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK); pool.setMaxActive(1); pool.setMaxTotal(-1); // Borrow with one key Object obj = pool.borrowObject("one"); // Borrow again with same key, should be blocked Runnable simple = new SimpleTestThread(pool, "one"); Thread borrowThread = new Thread(simple, "borrowThread"); borrowThread.start(); // Wait for sometime and borrow with another key // Should not block Thread.sleep(1000); pool.borrowObject("two"); assertEquals(1, pool.getNumActive("one")); assertEquals(1, pool.getNumActive("two")); // Unblock and join the thread pool.returnObject("one", obj); borrowThread.join(); assertEquals(0, pool.getNumActive("one")); assertEquals(1, pool.getNumActive("two")); }
From source file:edu.illinois.imunit.examples.apache.pool.TestGenericKeyedObjectPool.java
@Test @Schedules({//from w w w . j a va2 s.c o m @Schedule(name = "BorrowOneBeforeTwo", value = "[beforeBorrow:afterBorrow]@borrowThread -> borrowTwo@main") }) public void testBlockedKeyDoesNotBlockPoolImproved() throws Exception { SimpleFactory factory = new SimpleFactory(); GenericKeyedObjectPool pool = new GenericKeyedObjectPool(factory); pool.setWhenExhaustedAction(GenericObjectPool.WHEN_EXHAUSTED_BLOCK); pool.setMaxActive(1); pool.setMaxTotal(-1); // Borrow with one key Object obj = pool.borrowObject("one"); // Borrow again with same key, should be blocked Runnable simple = new SimpleTestThread(pool, "one"); Thread borrowThread = new Thread(simple, "borrowThread"); borrowThread.start(); // Wait for sometime and borrow with another key // Should not block Thread.sleep(1000); fireEvent("borrowTwo"); pool.borrowObject("two"); assertEquals(1, pool.getNumActive("one")); assertEquals(1, pool.getNumActive("two")); // Unblock and join the thread pool.returnObject("one", obj); borrowThread.join(); assertEquals(0, pool.getNumActive("one")); assertEquals(1, pool.getNumActive("two")); }