@Override
      public void run2() throws CacheException {
        WaitCriterion w = new WaitCriterion() {
          @Override
          public boolean done() {
            synchronized (LOCK) {

              if (!lastKeyArrived) {
                try {
                  LOCK.wait(interval);
                } catch (InterruptedException e) {
                  fail("interrupted");
                }
              }
            }
            return lastKeyArrived;
          }

          @Override
          public String description() {
            return "expected " + expectedEvents + " events but received " + actualNoEvents;
          }
        };

        GeodeAwaitility.await().untilAsserted(w);
      }
In this test do a create , update , update & destroy. The client should receive 3 callbacks (
craete , conflated update & destroy).
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/ha/HAConflationDistributedTest.java