@Test
  public void testPRTXGetEntryOnRemoteSide() {
    Host host = Host.getHost(0);
    VM accessor = host.getVM(0);
    VM datastore = host.getVM(1);
    initAccessorAndDataStore(accessor, datastore, 0);

    datastore.invoke(new SerializableCallable<Object>() {
      @Override
      public Object call() {
        return null;
      }
    });

    accessor.invoke(new SerializableCallable<Object>() {
      @Override
      public Object call() {
        Region<Object, Object> cust = getCache().getRegion(CUSTOMER);
        CustId sup = new CustId(7);
        Region.Entry e = cust.getEntry(sup);
        assertThat(e).isNull();
        CustId custId = new CustId(5);
        cust.put(custId, new Customer("customer5", "address5"));

        Region.Entry ee = cust.getEntry(custId);
        assertThat(ee).isNotNull();

        CacheTransactionManager mgr = getCache().getTxManager();
        mgr.begin();
        Region.Entry e2 = cust.getEntry(sup);
        assertThat(e2).isNull();
        mgr.commit();
        Region.Entry e3 = cust.getEntry(sup);
        assertThat(e3).isNull();

        mgr.begin();
        Customer dawg = new Customer("dawg", "dawgaddr");
        cust.put(sup, dawg);
        Region.Entry e4 = cust.getEntry(sup);
        assertThat(e4).isNotNull();
        assertThat(dawg).isEqualTo(e4.getValue());
        mgr.commit();

        Region.Entry e5 = cust.getEntry(sup);
        assertThat(e5).isNotNull();
        assertThat(dawg).isEqualTo(e5.getValue());
        return null;
      }
    });
  }
Make sure that getEntry returns null properly and values when it should
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java