@Test
  public void testPutAll() throws Exception {
    setReceivedOperationToFalse();
    client2.invoke(PutAllDUnitTest::setReceivedOperationToFalse);
    createClientServerConfiguration();

    EventID[] eventIds1 = (EventID[]) client1.invoke(PutAllDUnitTest::putAll);
    assertNotNull(eventIds1);
    // wait for key to propagate till client
    // assert map not null on client
    client2.invoke(PutAllDUnitTest::waitTillOperationReceived);

    waitTillOperationReceived();
    EventID[] eventIds2 = (EventID[]) client2
        .invoke(PutAllDUnitTest::assertThreadIdToSequenceIdMapHasEntryIds);
    assertNotNull(eventIds2);
    server1.invoke(PutAllDUnitTest::assertGotAllValues);
    server2.invoke(PutAllDUnitTest::assertGotAllValues);
    client1.invoke(PutAllDUnitTest::assertCallbackArgs);
    client2.invoke(PutAllDUnitTest::assertGotAllValues);
    client2.invoke(PutAllDUnitTest::assertCallbackArgs);
    server1.invoke(PutAllDUnitTest::assertCallbackArgs);
    server2.invoke(PutAllDUnitTest::assertCallbackArgs);
    assertGotAllValues();
    assertCallbackArgs();
    EventID[] eventIds3 = (EventID[]) assertThreadIdToSequenceIdMapHasEntryIds();
    for (int i = 0; i < 5; i++) {
      assertNotNull(eventIds1[i]);
      assertNotNull(eventIds2[i]);
      assertEquals(
          "Event id mismatch: eventIds1[" + i + "]" + eventIds1[i].expensiveToString()
              + ": eventIds2[" + i + "]" + eventIds2[i].expensiveToString(),
          eventIds1[i], eventIds2[i]);
    }
    for (int i = 0; i < 5; i++) {
      assertNotNull(eventIds1[i]);
      assertNotNull(eventIds3[i]);
      assertEquals(eventIds1[i], eventIds3[i]);
    }
  }
This test: 1) creates a client server configuration 2) asserts that the ThreadIdToSequenceIdMap
is not null but is empty (on the client) 3) does a put on the server 4) Wait till put is
received by the server (and also records the eventId in a variable) and returns the eventId
generated on the server 5) asserts that the ThreadIdToSequenceIdMap is not null and has one
entry (on the client side) and returns the eventId stored in the map 6) verifies the equality
of the two event ids
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ha/PutAllDUnitTest.java