vgritsenko 2003/12/15 06:43:52
Modified: java/tests/src/org/apache/xindice/core/filer
FilerTestCase.java
Log:
Add new multithreaded filer test (failing)
Revision Changes Path
1.10 +52 -2
xml-xindice/java/tests/src/org/apache/xindice/core/filer/FilerTestCase.java
Index: FilerTestCase.java
===================================================================
RCS file:
/home/cvs/xml-xindice/java/tests/src/org/apache/xindice/core/filer/FilerTestCase.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- FilerTestCase.java 14 Dec 2003 19:50:43 -0000 1.9
+++ FilerTestCase.java 15 Dec 2003 14:43:52 -0000 1.10
@@ -281,4 +281,54 @@
assertTrue(filer.getRecordCount() == 0);
}
+
+ public void testConcurrentInsert() throws Exception {
+ // Start anew
+ assertTrue(filer.getRecordCount() == 0);
+
+ final int THREADS = 10;
+ final int ITERATIONS = 30;
+
+ Thread[] threads = new Thread[THREADS];
+ for (int i = 0; i < THREADS; i++) {
+ final int threadID = i;
+ threads[i] = new Thread() {
+ public void run() {
+ for (int ii = 0; ii < ITERATIONS; ii++) {
+ Key key = new Key("T" + threadID + "I" + ii);
+ Value value = new Value("<test thread=\"" + threadID
+ "\" iteration=\"" + ii + "\"/>");
+ try {
+ filer.writeRecord(key, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ threads[i].setName("Thread " + i);
+ }
+
+ for (int i = 0; i < THREADS; i++) {
+ threads[i].start();
+ }
+
+ Thread.sleep(1000);
+
+ for (int i = 0; i < THREADS; i++) {
+ threads[i].join();
+ }
+
+ // Check results
+ assertEquals(filer.getRecordCount(), THREADS * ITERATIONS);
+ for (int i = 0; i < THREADS; i++) {
+ for (int ii = 0; ii < ITERATIONS; ii++) {
+ Key key = new Key("T" + i + "I" + ii);
+ Value value = new Value("<test thread=\"" + i + "\"
iteration=\"" + ii + "\"/>");
+ Record record = filer.readRecord(key);
+ assertEquals(key, record.getKey());
+ assertEquals(value, record.getValue());
+ }
+ }
+ System.out.println("Done");
+ }
}