[jboss-cvs] JBossCache/tests/functional/org/jboss/cache/loader ...

Manik Surtani manik at jboss.org
Tue Jun 19 09:05:18 EDT 2007


  User: msurtani
  Date: 07/06/19 09:05:18

  Modified:    tests/functional/org/jboss/cache/loader 
                        CacheLoaderTestsBase.java
  Log:
  CL thread safety
  
  Revision  Changes    Path
  1.51      +43 -19    JBossCache/tests/functional/org/jboss/cache/loader/CacheLoaderTestsBase.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: CacheLoaderTestsBase.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossCache/tests/functional/org/jboss/cache/loader/CacheLoaderTestsBase.java,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -b -r1.50 -r1.51
  --- CacheLoaderTestsBase.java	19 Jun 2007 10:45:42 -0000	1.50
  +++ CacheLoaderTestsBase.java	19 Jun 2007 13:05:18 -0000	1.51
  @@ -25,6 +25,7 @@
   import java.util.HashMap;
   import java.util.List;
   import java.util.Map;
  +import java.util.Random;
   import java.util.Set;
   import java.util.concurrent.CopyOnWriteArraySet;
   import java.util.concurrent.CountDownLatch;
  @@ -33,7 +34,7 @@
    * Commons tests for all CacheLoaders
    *
    * @author Bela Ban
  - * @version $Id: CacheLoaderTestsBase.java,v 1.50 2007/06/19 10:45:42 msurtani Exp $
  + * @version $Id: CacheLoaderTestsBase.java,v 1.51 2007/06/19 13:05:18 msurtani Exp $
    */
   abstract public class CacheLoaderTestsBase extends AbstractCacheLoaderTestBase
   {
  @@ -2034,14 +2035,37 @@
   
      public void testCacheLoaderThreadSafety() throws Exception
      {
  +      threadSafetyTest(true);
  +   }
  +
  +   public void testCacheLoaderThreadSafetyMultipleFqns() throws Exception
  +   {
  +      threadSafetyTest(false);
  +   }
  +
  +   protected void threadSafetyTest(final boolean singleFqn) throws Exception
  +   {
         final CountDownLatch latch = new CountDownLatch(1);
         final Fqn fqn = Fqn.fromString("/a/b/c");
  +      final List<Fqn> fqns = new ArrayList<Fqn>(30);
  +      final Random r = new Random();
  +      if (!singleFqn)
  +      {
  +         for (int i = 0; i < 30; i++)
  +         {
  +            Fqn f = Fqn.fromString("/a/b/c/" + i);
  +            fqns.add(f);
  +            loader.put(f, "k", "v");
  +         }
  +      }
  +      else
  +      {
         loader.put(fqn, "k", "v");
  +      }
         final int loops = 10000;
         final Set<Exception> exceptions = new CopyOnWriteArraySet<Exception>();
   
  -
  -      Thread remover = new Thread("Remover-1")
  +      Thread remover1 = new Thread("Remover-1")
         {
            public void run()
            {
  @@ -2050,7 +2074,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.remove(fqn);
  +                  loader.remove(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())));
                  }
               }
               catch (Exception e)
  @@ -2060,7 +2084,7 @@
            }
         };
   
  -      remover.start();
  +      remover1.start();
   
         Thread remover2 = new Thread("Remover-2")
         {
  @@ -2071,7 +2095,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.remove(fqn, "k");
  +                  loader.remove(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())), "k");
                  }
               }
               catch (Exception e)
  @@ -2084,7 +2108,7 @@
         remover2.start();
   
   
  -      Thread reader = new Thread("Reader-1")
  +      Thread reader1 = new Thread("Reader-1")
         {
            public void run()
            {
  @@ -2093,7 +2117,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.get(fqn);
  +                  loader.get(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())));
                  }
               }
               catch (Exception e)
  @@ -2102,7 +2126,7 @@
               }
            }
         };
  -      reader.start();
  +      reader1.start();
   
         Thread reader2 = new Thread("Reader-2")
         {
  @@ -2113,7 +2137,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.getChildrenNames(fqn.getParent());
  +                  loader.getChildrenNames(singleFqn ? fqn.getParent() : fqns.get(r.nextInt(fqns.size())).getParent());
                  }
               }
               catch (Exception e)
  @@ -2133,7 +2157,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.getChildrenNames(fqn);
  +                  loader.getChildrenNames(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())));
                  }
               }
               catch (Exception e)
  @@ -2145,7 +2169,7 @@
         reader3.start();
   
   
  -      Thread writer = new Thread("Writer-1")
  +      Thread writer1 = new Thread("Writer-1")
         {
            public void run()
            {
  @@ -2154,7 +2178,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.put(fqn, "k", "v");
  +                  loader.put(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())), "k", "v");
                  }
               }
               catch (Exception e)
  @@ -2163,7 +2187,7 @@
               }
            }
         };
  -      writer.start();
  +      writer1.start();
   
         Thread writer2 = new Thread("Writer-2")
         {
  @@ -2174,7 +2198,7 @@
                  latch.await();
                  for (int i = 0; i < loops; i++)
                  {
  -                  loader.put(fqn, new HashMap());
  +                  loader.put(singleFqn ? fqn : fqns.get(r.nextInt(fqns.size())), new HashMap());
                  }
               }
               catch (Exception e)
  @@ -2187,12 +2211,12 @@
   
   
         latch.countDown();
  -      reader.join();
  +      reader1.join();
         reader2.join();
         reader3.join();
  -      remover.join();
  +      remover1.join();
         remover2.join();
  -      writer.join();
  +      writer1.join();
         writer2.join();
   
         for (Exception e : exceptions) throw e;
  
  
  



More information about the jboss-cvs-commits mailing list