Hello Phil,

2015-02-22 21:43 GMT+01:00 <pste...@apache.org>:

> Author: psteitz
> Date: Sun Feb 22 20:43:30 2015
> New Revision: 1661559
>
> URL: http://svn.apache.org/r1661559
> Log:
> Added (disabled) tests for JIRA: DBCP-283 and DBCP-284.
>
> Modified:
>
> commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
>
> Modified:
> commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> URL:
> http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java?rev=1661559&r1=1661558&r2=1661559&view=diff
>
> ==============================================================================
> ---
> commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> (original)
> +++
> commons/proper/pool/trunk/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> Sun Feb 22 20:43:30 2015
> @@ -26,6 +26,7 @@ import static org.junit.Assert.fail;
>
>  import java.lang.management.ManagementFactory;
>  import java.util.ArrayList;
> +import java.util.HashSet;
>  import java.util.List;
>  import java.util.NoSuchElementException;
>  import java.util.Random;
> @@ -2398,6 +2399,44 @@ public class TestGenericObjectPool exten
>
>          Assert.assertEquals(1, factory.validateCounter);
>      }
> +
> +    /**
> +     * Verifies that when a factory's makeObject produces instances that
> are not
> +     * discernible by equals, the pool can handle them.
> +     *
> +     * JIRA: POOL-283
> +     */
> +    //@Test
>

IMHO it's better to use the @Ignore annotation, because this way ignored
tests will at least show up in reports generated by maven. You can even add
a description why a test is ignored like this:

@Ignore("See POOL-283 in JIRA")


> +    public void testEqualsIndiscernible() throws Exception {
> +        final HashSetFactory factory = new HashSetFactory();
> +        final GenericObjectPool<HashSet<String>> pool = new
> GenericObjectPool<HashSet<String>>(
> +                factory, new GenericObjectPoolConfig());
> +        final HashSet<String> s1 = pool.borrowObject();
> +        final HashSet<String> s2 = pool.borrowObject();
> +        pool.returnObject(s1);
> +        pool.returnObject(s2);
> +        pool.close();
> +    }
> +
> +    /**
> +     * Verifies that when a borrowed object is mutated in a way that does
> not
> +     * preserve equality and hashcode, the pool can recognized it on
> return.
> +     *
> +     * JIRA: POOL-284
> +     */
> +    //@Test
> +    public void testMutable() throws Exception {
> +        final HashSetFactory factory = new HashSetFactory();
> +        final GenericObjectPool<HashSet<String>> pool = new
> GenericObjectPool<HashSet<String>>(
> +                factory, new GenericObjectPoolConfig());
> +        final HashSet<String> s1 = pool.borrowObject();
> +        final HashSet<String> s2 = pool.borrowObject();
> +        s1.add("One");
> +        s2.add("One");
> +        pool.returnObject(s1);
> +        pool.returnObject(s2);
> +        pool.close();
> +    }
>
>      private static final class DummyFactory
>              extends BasePooledObjectFactory<Object> {
> @@ -2410,7 +2449,23 @@ public class TestGenericObjectPool exten
>              return new DefaultPooledObject<Object>(value);
>          }
>      }
> -
> +
> +    /**
> +     * Factory that creates HashSets.  Note that this means
> +     *  0) All instances are initially equal (not discernible by equals)
> +     *  1) Instances are mutable and mutation can cause change in
> identity / hashcode.
> +     */
> +    private static final class HashSetFactory
> +            extends BasePooledObjectFactory<HashSet<String>> {
> +        @Override
> +        public HashSet<String> create() throws Exception {
> +            return new HashSet<String>();
> +        }
> +        @Override
> +        public PooledObject<HashSet<String>> wrap(HashSet<String> value) {
> +            return new DefaultPooledObject<HashSet<String>>(value);
> +        }
> +    }
>
>      private static class InvalidFactory
>              extends BasePooledObjectFactory<Object> {
>
>
>


-- 
http://people.apache.org/~britter/
http://www.systemoutprintln.de/
http://twitter.com/BenediktRitter
http://github.com/britter

Reply via email to