@Test
  public void testNetWrite() throws CacheException {
    final String name = getUniqueName() + "-ACK";
    final String objectName = "Gemfire7";
    final Integer value = 483;

    vm0.invoke("Create ACK Region with cacheWriter", () -> {
      netWriteInvoked = false;
      try {
        RegionFactory<Object, Object> factory = getCache().createRegionFactory();
        factory.setScope(Scope.DISTRIBUTED_ACK);
        factory.setCacheWriter(new CacheWriter<Object, Object>() {
          @Override
          public void beforeCreate(EntryEvent e) throws CacheWriterException {
            netWriteInvoked = true;
          }

          @Override
          public void beforeUpdate(EntryEvent e) throws CacheWriterException {
            netWriteInvoked = true;
          }

          @Override
          public void beforeDestroy(EntryEvent e) throws CacheWriterException {}

          @Override
          public void beforeRegionDestroy(RegionEvent e) throws CacheWriterException {}

          @Override
          public void beforeRegionClear(RegionEvent e) throws CacheWriterException {}

          @Override
          public void close() {}
        });

        createRegion(name, factory);

      } catch (CacheException ex) {
        fail("While creating ACK region", ex);
      }
    });

    vm1.invoke("Create ACK Region", () -> {
      loaderInvoked = false;
      remoteLoaderInvoked = false;
      netWriteInvoked = false;
      try {
        RegionFactory<Object, Object> factory = getCache().createRegionFactory();
        factory.setScope(Scope.DISTRIBUTED_ACK);
        createRegion(name, factory);
      } catch (CacheException ex) {
        fail("While creating ACK region", ex);
      }
    });

    vm1.invoke("Do a put operation resulting in cache writer notification in other vm",
        () -> {
          try {
            getRootRegion().getSubregion(name).put(objectName, value);
            try {
              Object result = getRootRegion().getSubregion(name).get(objectName);
              assertThat(result).isEqualTo(value);
            } catch (CacheLoaderException | TimeoutException ignored) {
            }
          } catch (CacheWriterException | TimeoutException ignored) {

          }
        });

    vm0.invoke("ensure that cache writer was invoked", new SerializableRunnable() {
      @Override
      public void run() {
        assertThat(netWriteInvoked).describedAs("expected cache writer to be invoked").isTrue();
      }
    });
  }
Confirm that a netLoad that returns null will NOT allow other netLoad methods to be called.
geode-core/src/distributedTest/java/org/apache/geode/cache30/SearchAndLoadDUnitTest.java