Hi Jorge,

The patch I see here:

http://www.mail-archive.com/dev@commons.apache.org/msg26521.html

does not apply due to formatting in the email (line lengths I think).

Can you send me (ggregory at apache dor org) the patch (based on HEAD of
trunk) or post a file somewhere?

Thank you,
Gary

On Sat, Nov 12, 2011 at 7:07 AM, Jörg Schaible <joerg.schai...@gmx.de>wrote:

> Ping, Gary?
>
> Jörg Schaible wrote:
>
> > Hi Gary,
> >
> > Gary Gregory wrote:
> >
> >> For now, I've @Ignore'd
> >> ReflectionToStringBuilderConcurrencyTest.testCopyOnWriteArrayList()
> >>
> >> FYI: If I reduce the DATA_SIZE from 100000 to 10000 the test
> >> ReflectionToStringBuilderConcurrencyTest.testLinkedList() does not
> always
> >> fail for me.
> >
> > For me it seems to do (I modified the other tests to drop the @Ignore) if
> > I take an object that has to do a bit more in toString:
> >
> > ============ %< =============
> > $ svn diff
> > Index:
> >
>
> src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderConcurrencyTest.java
> > ===================================================================
> > ---
> >
>
> src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderConcurrencyTest.java
> > (revision 1200195)
> > +++
> >
>
> src/test/java/org/apache/commons/lang3/builder/ReflectionToStringBuilderConcurrencyTest.java
> > (working copy)
> > @@ -18,7 +18,9 @@
> >  package org.apache.commons.lang3.builder;
> >
> >  import java.util.ArrayList;
> > +import java.util.Calendar;
> >  import java.util.Collection;
> > +import java.util.ConcurrentModificationException;
> >  import java.util.LinkedList;
> >  import java.util.List;
> >  import java.util.concurrent.Callable;
> > @@ -30,7 +32,6 @@
> >
> >  import junit.framework.Assert;
> >
> > -import org.junit.Ignore;
> >  import org.junit.Test;
> >
> >  /**
> > @@ -58,33 +59,48 @@
> >          }
> >      }
> >
> > -    private static final int DATA_SIZE = 100000;
> > +    private static final int DATA_SIZE = 10000;
> >      private static final int REPEAT = 100;
> >
> >      @Test
> > -    @Ignore
> > -    public void testLinkedList() throws InterruptedException,
> > ExecutionException {
> > -        this.testConcurrency(new CollectionHolder<List<Integer>>(new
> > LinkedList<Integer>()));
> > +    public void testLinkedList() throws InterruptedException {
> > +        try {
> > +            this.testConcurrency(new
> CollectionHolder<List<Calendar>>(new
> > LinkedList<Calendar>()));
> > +            Assert.fail("Thrown " + ExecutionException.class.getName() +
> > " expected");
> > +        } catch (final ExecutionException e) {
> > +            Assert.assertTrue(
> > +                ConcurrentModificationException.class.getName() + "
> > expected as cause",
> > +                e.getCause() instanceof
> ConcurrentModificationException);
> > +        }
> >      }
> >
> >      @Test
> > -    @Ignore
> > -    public void testArrayList() throws InterruptedException,
> > ExecutionException {
> > -        this.testConcurrency(new CollectionHolder<List<Integer>>(new
> > ArrayList<Integer>()));
> > +    public void testArrayList() throws InterruptedException {
> > +        try {
> > +               this.testConcurrency(new
> > CollectionHolder<List<Calendar>>(new ArrayList<Calendar>()));
> > +            Assert.fail("Thrown " + ExecutionException.class.getName() +
> > " expected");
> > +        } catch (final ExecutionException e) {
> > +            Assert.assertTrue(
> > +                ConcurrentModificationException.class.getName() + "
> > expected as cause",
> > +                e.getCause() instanceof
> ConcurrentModificationException);
> > +        }
> >      }
> >
> >      @Test
> > -    @Ignore
> >      public void testCopyOnWriteArrayList() throws InterruptedException,
> > ExecutionException {
> > -        this.testConcurrency(new CollectionHolder<List<Integer>>(new
> > CopyOnWriteArrayList<Integer>()));
> > +        this.testConcurrency(new CollectionHolder<List<Calendar>>(new
> > CopyOnWriteArrayList<Calendar>()));
> >      }
> >
> > -    private void testConcurrency(final CollectionHolder<List<Integer>>
> > holder) throws InterruptedException,
> > +    private void testConcurrency(final CollectionHolder<List<Calendar>>
> > holder) throws InterruptedException,
> >              ExecutionException {
> > -        final List<Integer> list = holder.collection;
> > +        final List<Calendar> list = holder.collection;
> > +        final Calendar cal = Calendar.getInstance();
> > +        cal.clear(Calendar.MILLISECOND);
> > +        cal.set(2000, Calendar.JANUARY, 1, 0, 0, 0);
> >          // make a big array that takes a long time to toString()
> >          for (int i = 0; i < DATA_SIZE; i++) {
> > -            list.add(Integer.valueOf(i));
> > +            list.add((Calendar)cal.clone());
> > +            cal.add(Calendar.HOUR_OF_DAY, 1);
> >          }
> >          // Create a thread pool with two threads to cause the most
> > contention on the underlying resource.
> >          final ExecutorService threadPool =
> >          Executors.newFixedThreadPool(2);
> > ============ %< =============
> >
> > I'll have to retry on a faster machine though. Drills down CopyOnWrite
> > test to ~1s.
> >
> > Cheers,
> > Jörg
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>


-- 
E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
JUnit in Action, 2nd Ed: <http://goog_1249600977>http://bit.ly/ECvg0
Spring Batch in Action: <http://s.apache.org/HOq>http://bit.ly/bqpbCK
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

Reply via email to