Example usage for org.apache.commons.pool.impl GenericKeyedObjectPool getNumIdle

List of usage examples for org.apache.commons.pool.impl GenericKeyedObjectPool getNumIdle

Introduction

In this page you can find the example usage for org.apache.commons.pool.impl GenericKeyedObjectPool getNumIdle.

Prototype

public synchronized int getNumIdle(Object key) 

Source Link

Document

Returns the number of instances corresponding to the given key currently idle in this pool.

Usage

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