[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