@Test
  public void valueShouldBeLazilyDeserialized() throws Exception {
    AttributesFactory factory = new AttributesFactory();
    factory.setScope(Scope.DISTRIBUTED_ACK);
    factory.setDataPolicy(DataPolicy.PRELOADED);

    Region<String, HomeBoy> region = createRootRegion(REGION_NAME, factory.create());

    // before gii
    region.put("key1", new HomeBoy());

    doCreateOtherVm(otherVM);

    // after gii
    region.put("key2", new HomeBoy());

    region.localDestroy("key1");
    region.localDestroy("key2");

    Object value = region.get("key1");
    assertTrue(region.get("key1") instanceof HomeBoy);
    assertTrue(region.get("key2") == null); // preload will not distribute

    // TODO: add putAll test once it does not deserialize
  }
Make sure that value is only deserialized in cache whose application asks for the value.
geode-core/src/distributedTest/java/org/apache/geode/cache30/ValuesAreLazilyDeserializedRegressionTest.java