@Test
  public void testOverflowMirror() {
    vm0.invoke(this::createReplicateRegionWithEvictionOverflow);
    vm1.invoke(this::createReplicateRegionWithEvictionOverflow);

    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);
    });

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

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

      // Because we are DISTRIBUTED_ACK, we can rely on the order in which messages arrive and
      // hence the order of the LRU entries.
      for (int i = 0; i < 10; i++) {
        region.get(i);

        assertThat(evictionCounters.getEvictions()).as("No eviction for " + i)
            .isEqualTo(10 + 1 + i);
      }
    });
  }
Tests overflow with mirrored regions. Note that we have to use {@code byte} array values
in this test. Otherwise, the size of the data in the "puter" VM would be different from the
size of the data in the receiver VM, thus cause the two VMs to have different LRU eviction
behavior.
geode-core/src/distributedTest/java/org/apache/geode/cache30/DiskRegionDistributedTest.java