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");
  +    }
   }
  
  
  

Reply via email to