static void dtest(Map s, int size, Object[] key) {
    timer.start("Put (putAll)           ", size * 2);
    Map s2 = null;
    try {
      s2 = s.getClass().newInstance();
      s2.putAll(s);
    } catch (Exception e) {
      e.printStackTrace();
      return;
    }
    timer.finish();

    timer.start("Iter Equals            ", size * 2);
    boolean eqt = s2.equals(s) && s.equals(s2);
    reallyAssert(eqt);
    timer.finish();

    timer.start("Iter HashCode          ", size * 2);
    int shc = s.hashCode();
    int s2hc = s2.hashCode();
    reallyAssert(shc == s2hc);
    timer.finish();

    timer.start("Put (present)          ", size);
    s2.putAll(s);
    timer.finish();

    timer.start("Iter EntrySet contains ", size * 2);
    Set es2 = s2.entrySet();
    int sum = 0;
    for (Object entry : s.entrySet()) {
      if (es2.contains(entry)) {
        ++sum;
      }
    }
    timer.finish();
    reallyAssert(sum == size);

    t6("Get                    ", size, s2, key, absent);

    Object hold = s2.get(key[size - 1]);
    s2.put(key[size - 1], absent[0]);
    timer.start("Iter Equals            ", size * 2);
    eqt = s2.equals(s) && s.equals(s2);
    reallyAssert(!eqt);
    timer.finish();

    timer.start("Iter HashCode          ", size * 2);
    int s1h = s.hashCode();
    int s2h = s2.hashCode();
    reallyAssert(s1h != s2h);
    timer.finish();

    s2.put(key[size - 1], hold);
    timer.start("Remove (iterator)      ", size * 2);
    Iterator s2i = s2.entrySet().iterator();
    Set es = s.entrySet();
    while (s2i.hasNext()) {
      es.remove(s2i.next());
    }
    timer.finish();

    reallyAssert(s.isEmpty());

    timer.start("Clear                  ", size);
    s2.clear();
    timer.finish();
    reallyAssert(s2.isEmpty() && s.isEmpty());
  }
@test
@synopsis Times and checks basic map operations
geode-core/src/integrationTest/java/org/apache/geode/internal/util/concurrent/cm/MapCheckJUnitTest.java