@Test
    public void testExperiment3() {
        int total = 0;
        int count = 0;
        for (int i = 0; i < mServerCount; i++) {
            try {
                mDhtClientArray[i].purge();
            } catch (RemoteException e) {
                e.printStackTrace();
                System.out.println("dhtClient: " +  e.getMessage());
            }
        }

        for (int i = 0; i < 1000; i++)
        {
            try {
                int machineClientId = mRandom.nextInt(mServerCount);
                int machineId = machineClientId + 1;
                String key = "" + (mRandom.nextInt(1000000) + 1);
                IQueryRequest qreq = new QueryRequest(mRequestId++, machineId, key);
                Object value = mDhtClientArray[machineClientId].lookup(qreq);
                if (null != value)
                {
                    i--;
                    continue;
                }
                IInsertDeleteRequest req = new InsertDeleteRequest(mRequestId++, machineId, key, key);
                mDhtClientArray[machineClientId].insert(req);
            }  catch(RemoteException e) {
                e.printStackTrace();
                System.out.println("dhtClient: " +  e.getMessage());
            }
        }
        
        for (int i = 0; i < mServerCount; i++) {
            try {
                count =  mDhtClientArray[i].count();
                total += count;
                System.out.println("DHTServer[" + (i + 1) + "] count " + count);
                
            } catch (RemoteException e) {
                e.printStackTrace();
                System.out.println("dhtClient: " +  e.getMessage());
            }
        }
        
        assertTrue(total == 1000);
    }