diff options
author | Bernard Normier <bernard@zeroc.com> | 2003-07-28 19:41:59 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2003-07-28 19:41:59 +0000 |
commit | b30dda002f1216072feb89287d0f0f02a4cf55dd (patch) | |
tree | 19b2f5bf3d8e0bca7bcfb1f6ffbecb7ade73386b /java/test/Freeze/dbmap/Client.java | |
parent | clean up (diff) | |
download | ice-b30dda002f1216072feb89287d0f0f02a4cf55dd.tar.bz2 ice-b30dda002f1216072feb89287d0f0f02a4cf55dd.tar.xz ice-b30dda002f1216072feb89287d0f0f02a4cf55dd.zip |
More Freeze testing
Diffstat (limited to 'java/test/Freeze/dbmap/Client.java')
-rw-r--r-- | java/test/Freeze/dbmap/Client.java | 113 |
1 files changed, 102 insertions, 11 deletions
diff --git a/java/test/Freeze/dbmap/Client.java b/java/test/Freeze/dbmap/Client.java index ec206d47e2b..7e58e636bfd 100644 --- a/java/test/Freeze/dbmap/Client.java +++ b/java/test/Freeze/dbmap/Client.java @@ -16,23 +16,47 @@ import Freeze.*; public class Client { - static class StressThread extends Thread + static class ReadThread extends Thread { public void run() { try { - for(int i = 0; i < 50; ++i) + for(int i = 0; i < 10; ++i) { - java.util.Set entrySet = _map.entrySet(); - java.util.Iterator p = entrySet.iterator(); - if(p.hasNext()) + for(;;) { - Object o = p.next(); - test(entrySet.contains(o)); + java.util.Iterator p = null; + + try + { + java.util.Set entrySet = _map.entrySet(); + p = entrySet.iterator(); + + while(p.hasNext()) + { + java.util.Map.Entry e = (java.util.Map.Entry)p.next(); + byte v = ((Byte)e.getKey()).byteValue(); + test(e.getValue().equals(new Integer(v - (byte)'a'))); + } + break; + } + catch(DBDeadlockException ex) + { + // System.err.print("r"); + // + // Try again + // + } + finally + { + if(p != null) + { + ((Freeze.Map.EntryIterator)p).close(); + } + } } - ((Freeze.Map.EntryIterator)p).close(); } } catch(Exception ex) @@ -42,7 +66,7 @@ public class Client } } - StressThread(java.util.Map m) + ReadThread(java.util.Map m) { _map = m; } @@ -50,6 +74,68 @@ public class Client private java.util.Map _map; } + + static class WriteThread extends Thread + { + public void + run() + { + try + { + for(int i = 0; i < 4; ++i) + { + for(;;) + { + java.util.Iterator p = null; + + try + { + java.util.Set entrySet = _map.entrySet(); + p = entrySet.iterator(); + + while(p.hasNext()) + { + java.util.Map.Entry e = (java.util.Map.Entry)p.next(); + int v = ((Integer)e.getValue()).intValue() + 1; + e.setValue(new Integer(v)); + p.remove(); + } + break; + } + catch(DBDeadlockException ex) + { + // System.err.print("w"); + // + // Try again + // + } + finally + { + if(p != null) + { + ((Freeze.Map.EntryIterator)p).close(); + } + } + } + populateDB(_map); + } + } + catch(Exception ex) + { + ex.printStackTrace(); + System.err.println(ex); + } + } + + WriteThread(java.util.Map m) + { + _map = m; + } + + private java.util.Map _map; + } + + static String alphabet = "abcdefghijklmnopqrstuvwxyz"; private static void @@ -288,14 +374,19 @@ public class Client System.out.print(" testing concurrent access... "); System.out.flush(); + m.clear(); + populateDB(m); + + java.util.List l = new java.util.ArrayList(); // // Create each thread. // - for(int i = 0; i < 10; ++i) + for(int i = 0; i < 5; ++i) { - l.add(new StressThread(m)); + l.add(new ReadThread(m)); + l.add(new WriteThread(m)); } // |