@Test
  public void testDistributedInvalidate() {
    vm0.invoke(this::createRegionWithEvictionCountOverflow);
    vm1.invoke(this::createRegionWithEvictionCountOverflow);

    vm0.invoke(() -> {
      Region region = cacheRule.getCache().getRegion(uniqueName);
      EvictionCounters evictionCounters = getEvictionCounters(region);
      for (int i = 0; evictionCounters.getEvictions() < 10; i++) {
        region.put(i, new byte[1]);
      }

      assertThat(evictionCounters.getEvictions()).isEqualTo(10);
    });

    Object key = 20;

    vm1.invoke(() -> {
      Region region = cacheRule.getCache().getRegion(uniqueName);

      assertThat(region.get(key)).isNotNull();

      region.invalidate(key);
    });

    vm0.invoke(() -> {
      Region region = cacheRule.getCache().getRegion(uniqueName);

      await("value for key remains: " + key)
          .until(() -> region.get(key) == null);
    });

    String newValue = "NEW VALUE";

    vm1.invoke(() -> {
      Region region = cacheRule.getCache().getRegion(uniqueName);
      region.put(key, newValue);
    });

    vm0.invoke(() -> {
      Region region = cacheRule.getCache().getRegion(uniqueName);

      await("verify update").until(() -> newValue.equals(region.get(key)));
    });
  }
Tests that invalidates and updates received from different VMs are handled appropriately by
overflow regions.
geode-core/src/distributedTest/java/org/apache/geode/cache30/DiskRegionDistributedTest.java