@Test
  public void testRemoveByQrmStats() throws Exception {
    HARegionQueue rq = createHARegionQueue("testRemoveByQrmStats");
    Conflatable cf = null;

    int totalEvents = 100;
    for (int i = 0; i < totalEvents; i++) {
      cf = new ConflatableObject("key" + i, "value" + i, new EventID(new byte[] {1}, 1, i), false,
          "testing");
      rq.put(cf);
    }

    // call for removal thru QRM api
    int lastDispatchedSqId = 20;
    EventID id = new EventID(new byte[] {1}, 1, lastDispatchedSqId);
    rq.removeDispatchedEvents(id);

    HARegionQueueStats stats = rq.getStatistics();
    assertNotNull("stats for HARegionQueue found null", stats);

    assertEquals(
        "eventsEnqued by stats not equal to the actual number of events added to the queue",
        totalEvents, stats.getEventsEnqued());
    assertEquals("eventsRemovedByQrm stats not updated properly", (lastDispatchedSqId + 1),
        stats.getEventsRemovedByQrm());

  }
This test does the following:<br>
1)Create HARegionQueue.<br>
2)Add objects with unique eventids and conflation false<br>
3)Remove the events through QRM api ( <code>removeDispatchedEvents(EventID id)</code>) with a
certain lastDispatchedSeqId<br>
4)Verify that statistics object is not null<br>
5)Verify that total events added matches the eventsEnqued stats<br>
6)Verify that eventsRemovedByQrm stats is same as the number of events removed by QRM (upto the
event having lastDispatchedSeqId, step 3).

@throws Exception - thrown if any problem occurs in test execution
geode-core/src/integrationTest/java/org/apache/geode/internal/cache/ha/HARegionQueueStatsJUnitTest.java