@Test
  public void testRAVersionsOnServersWithNotificationsOnly() {
    VM server3 = client2;

    // set notifyBySubscription=true to test register interest
    server1.invoke(() -> new ServerBuilder()
        .redundantCopies(1)
        .regionShortcut(PARTITION)
        .create());
    server2.invoke(() -> new ServerBuilder()
        .redundantCopies(1)
        .regionShortcut(PARTITION)
        .create());
    int serverPort3 = server3.invoke(() -> new ServerBuilder()
        .redundantCopies(1)
        .regionShortcut(PARTITION)
        .create());

    client1.invoke(() -> new ClientBuilder()
        .serverPorts(serverPort3)
        .subscriptionEnabled(true)
        .create());

    client1.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);
      region.registerInterest("ALL_KEYS");
    });

    server1.invoke(() -> {
      Region<String, TickerData> region = getCache().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);
    });

    List<String> expectedRAVersions = server1.invoke(() -> {
      Region<String, TickerData> region = getCache().getRegion(regionName);
      assertThat(region.size()).isEqualTo(ONE_HUNDRED);

      PartitionedRegionDataStore dataStore = ((PartitionedRegion) region).getDataStore();
      Set<BucketRegion> buckets = dataStore.getAllLocalPrimaryBucketRegions();

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

    List<String> actualRAVersions = client1.invoke(() -> {
      Region<String, TickerData> region = getClientCache().getRegion(regionName);

      // Let client be updated with all keys.
      RegionMap entries = ((DiskRecoveryStore) region).getRegionMap();

      await().untilAsserted(() -> {
        assertThat(region.size()).isEqualTo(ONE_HUNDRED);
        assertThat(entries.size()).isEqualTo(ONE_HUNDRED * 2);
      });

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

    assertThat(actualRAVersions).hasSize(ONE_HUNDRED * 2);

    for (String keyTag : expectedRAVersions) {
      assertThat(actualRAVersions).contains(keyTag);
    }
  }
Same test as testVersionsOnServersWithNotificationsOnly but also does a removeAll
geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/PutAllClientServerDistributedTest.java