001 /* 002 * $Id: DistHashTableTest.java 2799 2009-08-31 21:43:36Z kredel $ 003 */ 004 005 package edu.jas.util; 006 007 import java.util.Iterator; 008 009 import junit.framework.Test; 010 import junit.framework.TestCase; 011 import junit.framework.TestSuite; 012 013 import org.apache.log4j.BasicConfigurator; 014 015 016 /** 017 * DistHashTable test with JUnit. 018 * @author Heinz Kredel 019 */ 020 public class DistHashTableTest extends TestCase { 021 022 /** 023 * main. 024 */ 025 public static void main (String[] args) { 026 BasicConfigurator.configure(); 027 junit.textui.TestRunner.run( suite() ); 028 } 029 030 031 /** 032 * Constructs a <CODE>DistHashTableTest</CODE> object. 033 * @param name String. 034 */ 035 public DistHashTableTest(String name) { 036 super(name); 037 } 038 039 040 /** 041 * suite. 042 * @return a test suite. 043 */ 044 public static Test suite() { 045 TestSuite suite= new TestSuite(DistHashTableTest.class); 046 return suite; 047 } 048 049 private static final String host = "localhost"; 050 051 private DistHashTable<Integer,Integer> l1; 052 private DistHashTable<Integer,Integer> l2; 053 private DistHashTable<Integer,Integer> l3; 054 055 private DistHashTableServer<Integer> dls; 056 057 int rl = 7; 058 int kl = 10; 059 int ll = 10; 060 int el = 5; 061 float q = 0.5f; 062 063 protected void setUp() { 064 dls = new DistHashTableServer<Integer>(); 065 dls.init(); 066 } 067 068 protected void tearDown() { 069 dls.terminate(); 070 dls = null; 071 if ( l1 != null ) l1.terminate(); 072 if ( l2 != null ) l2.terminate(); 073 if ( l3 != null ) l3.terminate(); 074 l1 = l2 = l3 = null; 075 } 076 077 078 /** 079 * Tests create and terminate DistHashTableServer. 080 */ 081 public void testDistHashTable0() { 082 } 083 084 085 /** 086 * Tests create and terminate DistHashTable. 087 */ 088 public void testDistHashTable1() { 089 l1 = new DistHashTable<Integer,Integer>(host); 090 assertTrue("l1==empty",l1.isEmpty()); 091 } 092 093 094 /** 095 * Tests if the created DistHashTable has #n objects as content. 096 */ 097 public void testDistHashTable2() { 098 l1 = new DistHashTable<Integer,Integer>(host); 099 assertTrue("l1==empty",l1.isEmpty()); 100 101 l1.putWait( new Integer(1), new Integer(1) ); 102 assertFalse("l1!=empty",l1.isEmpty()); 103 assertTrue("#l1==1", l1.size() == 1 ); 104 l1.putWait( new Integer(2), new Integer(2) ); 105 assertTrue("#l1==2", l1.size() == 2 ); 106 l1.putWait( new Integer(3), new Integer(3) ); 107 assertTrue("#l1==3", l1.size() == 3 ); 108 109 Iterator it = null; 110 it = l1.iterator(); 111 int i = 0; 112 while ( it.hasNext() ) { 113 Object k = it.next(); 114 Object o = l1.get(k); 115 Integer x = new Integer( ++i ); 116 assertEquals("l1(i)==v(i)", x, o ); 117 assertEquals("l1(i)==k(i)", x, k ); 118 } 119 120 l1.clear(); 121 assertTrue("#l1==0", l1.size() == 0 ); 122 } 123 124 125 /** 126 * Tests if the two created DistHashTables have #n objects as content. 127 */ 128 public void testDistHashTable3() { 129 l2 = new DistHashTable<Integer,Integer>(host); 130 assertTrue("l2==empty",l2.isEmpty()); 131 l1 = new DistHashTable<Integer,Integer>(host); 132 assertTrue("l1==empty",l1.isEmpty()); 133 134 int i = 0, loops = 10; 135 while ( i < loops ) { 136 Integer x = new Integer( ++i ); 137 l1.putWait( x, x ); 138 assertTrue("#l1==i", l1.size() == i ); 139 } 140 assertTrue("#l1=="+loops, l1.size() == loops ); 141 142 while ( l2.size() < loops ) { 143 try { 144 //System.out.print("*2"); 145 Thread.sleep(100); 146 } catch (InterruptedException e) { 147 } 148 } 149 assertTrue("#l2=="+loops, l2.size() == loops ); 150 Iterator it = null; 151 it = l2.iterator(); 152 i = 0; 153 while ( it.hasNext() ) { 154 Object k = it.next(); 155 Object o = l2.get(k); 156 Integer x = new Integer( ++i ); 157 //System.out.println("o = " + o + " x = "+ x); 158 assertEquals("l2(i)==k(i)", x, k ); 159 assertEquals("l2(i)==v(i)", x, o ); 160 } 161 } 162 163 164 /** 165 * Tests if the three created DistHashTables have #n objects as content. 166 */ 167 public void testDistHashTable4() { 168 l1 = new DistHashTable<Integer,Integer>(host); 169 assertTrue("l1==empty",l1.isEmpty()); 170 l2 = new DistHashTable<Integer,Integer>(host); 171 assertTrue("l2==empty",l2.isEmpty()); 172 l3 = new DistHashTable<Integer,Integer>(host); 173 assertTrue("l3==empty",l3.isEmpty()); 174 175 int i = 0, loops = 10; 176 while ( i < loops ) { 177 Integer x = new Integer( ++i ); 178 l3.putWait( x, x ); 179 assertTrue("#l3==i", l3.size() == i ); 180 } 181 assertTrue("#l3=="+loops, l3.size() == loops ); 182 183 while ( l2.size() < loops || l1.size() < loops-1 ) { 184 try { 185 //System.out.print("*3"); 186 Thread.sleep(100); 187 } catch (InterruptedException e) { 188 } 189 } 190 assertTrue("#l2=="+loops, l2.size() == loops ); 191 assertTrue("#l1=="+loops, l1.size() == loops ); 192 Iterator it = null; 193 it = l2.iterator(); 194 Iterator it3 = null; 195 it3 = l1.iterator(); 196 i = 0; 197 while ( it.hasNext() && it3.hasNext() ) { 198 Object k1 = it.next(); 199 Object k2 = it3.next(); 200 Object v1 = l2.get(k1); 201 Object v2 = l1.get(k2); 202 Integer x = new Integer( ++i ); 203 //System.out.println("o = " + o + " x = "+ x); 204 assertEquals("l2(i)==k(i)", x, k1 ); 205 assertEquals("l1(i)==k(i)", x, k2 ); 206 assertEquals("l2(i)==v(i)", x, v1 ); 207 assertEquals("l1(i)==v(i)", x, v2 ); 208 } 209 } 210 211 212 /** 213 * Tests if the two created DistHashTables have #n objects as content 214 * when one is created later. 215 */ 216 public void testDistHashTable5() { 217 l1 = new DistHashTable<Integer,Integer>(host); 218 assertTrue("l1==empty",l1.isEmpty()); 219 220 int i = 0, loops = 10; 221 while ( i < loops ) { 222 Integer x = new Integer( ++i ); 223 l1.putWait( x, x ); 224 assertTrue("#l1==i", l1.size() == i ); 225 } 226 assertTrue("#l1=="+loops, l1.size() == loops ); 227 228 l2 = new DistHashTable<Integer,Integer>(host); 229 // assertTrue("l2==empty",l2.isEmpty()); 230 while ( l2.size() < loops ) { 231 try { 232 //System.out.print("*2"); 233 Thread.sleep(100); 234 } catch (InterruptedException e) { 235 } 236 } 237 Iterator it = null; 238 it = l2.iterator(); 239 i = 0; 240 while ( it.hasNext() ) { 241 Object k = it.next(); 242 Object v = l2.get(k); 243 Integer x = new Integer( ++i ); 244 //System.out.println("o = " + o + " x = "+ x); 245 assertEquals("l2(i)==k(i)", x, k ); 246 assertEquals("l2(i)==v(i)", x, v ); 247 } 248 assertTrue("#l2=="+loops, l2.size() == loops ); 249 } 250 251 252 /** 253 * Tests if the two created DistHashTables have #n objects as content 254 * using getWait() when one is created later. 255 */ 256 public void testDistHashTable6() { 257 l1 = new DistHashTable<Integer,Integer>(host); 258 assertTrue("l1==empty",l1.isEmpty()); 259 260 int i = 0, loops = 10; 261 while ( i < loops ) { 262 Integer x = new Integer( ++i ); 263 l1.putWait( x, x ); 264 assertTrue("#l1==i", l1.size() == i ); 265 } 266 assertTrue("#l1=="+loops, l1.size() == loops ); 267 268 l2 = new DistHashTable<Integer,Integer>(host); 269 270 Iterator<Integer> it = null; 271 it = l1.iterator(); 272 i = 0; 273 while ( it.hasNext() ) { 274 Integer k = it.next(); 275 Integer v = l2.getWait(k); 276 Integer x = new Integer( ++i ); 277 //System.out.println("o = " + o + " x = "+ x); 278 assertEquals("l1(i)==k(i)", x, k ); 279 assertEquals("l2(i)==v(i)", x, v ); 280 } 281 assertTrue("#l2=="+loops, l2.size() == loops ); 282 } 283 284 }