@Test
  public void testRAVersionsOnClientsWithNotificationsOnly() {
    // set notifyBySubscription=true to test register interest
    int serverPort1 = server1.invoke(() -> new ServerBuilder()
        .regionShortcut(PARTITION)
        .create());
    int serverPort2 = server2.invoke(() -> new ServerBuilder()
        .regionShortcut(PARTITION)
        .create());

    // set queueRedundancy=1
    client1.invoke(() -> new ClientBuilder()
        .serverPorts(serverPort1)
        .create());
    client2.invoke(() -> new ClientBuilder()
        .serverPorts(serverPort2)
        .subscriptionEnabled(true)
        .create());

    // client1 putAll+removeAll
    client1.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);

      doPutAll(region, "key-", ONE_HUNDRED * 2);
      assertThat(region.size()).isEqualTo(ONE_HUNDRED * 2);

      doRemoveAll(region, "key-", ONE_HUNDRED);
      assertThat(region.size()).isEqualTo(ONE_HUNDRED);
    });

    // client2 versions collection
    client2.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);
      region.registerInterest("ALL_KEYS");
      assertThat(region.size()).isEqualTo(ONE_HUNDRED);
    });

    // client1 versions collection
    List<VersionTag<?>> client1RAVersions = client1.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);
      assertThat(region.size()).isEqualTo(ONE_HUNDRED);

      RegionMap entries = ((DiskRecoveryStore) region).getRegionMap();
      assertThat(entries.size()).isEqualTo(ONE_HUNDRED * 2);

      List<VersionTag<?>> versions = new ArrayList<>();
      for (Object key : entries.keySet()) {
        RegionEntry regionEntry = entries.getEntry(key);
        VersionTag<?> tag = regionEntry.getVersionStamp().asVersionTag();
        versions.add(tag);
      }
      return versions;
    });

    // client2 versions collection
    List<VersionTag<?>> client2RAVersions = client2.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);
      assertThat(region.size()).isEqualTo(ONE_HUNDRED);

      RegionMap entries = ((DiskRecoveryStore) region).getRegionMap();
      assertThat(entries.size()).isEqualTo(ONE_HUNDRED * 2);

      List<VersionTag<?>> versions = new ArrayList<>();
      for (Object key : entries.keySet()) {
        RegionEntry regionEntry = entries.getEntry(key);
        VersionTag<?> tag = regionEntry.getVersionStamp().asVersionTag();
        versions.add(tag);
      }
      return versions;
    });

    assertThat(client1RAVersions.size()).isEqualTo(ONE_HUNDRED * 2);

    for (VersionTag<?> tag : client1RAVersions) {
      assertThat(client2RAVersions).contains(tag);
    }
  }
basically same test as testVersionsOnClientsWithNotificationsOnly but also do a removeAll
geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/PutAllClientServerDistributedTest.java