@Override
      public Object call() {
        Region custRegion = getCache().getRegion(CUSTOMER);
        Set originalSet;
        TXManagerImpl mgr = getCache().getTxManager();
        mgr.begin();
        switch (iteratorType) {
          case KEYS:
            originalSet = getCustIdSet(5);
            assertThat(originalSet.containsAll(custRegion.keySet())).isTrue();
            assertThat(custRegion.keySet().size()).isEqualTo(5);
            break;
          case VALUES:
            originalSet = getCustomerSet(5);
            assertThat(originalSet.containsAll(custRegion.values())).isTrue();
            assertThat(custRegion.values().size()).isEqualTo(5);
            break;
          case ENTRIES:
            Set<CustId> originalKeySet = getCustIdSet(5);
            Set<Customer> originalValueSet = getCustomerSet(5);
            Set<Object> entrySet = new HashSet<Object>();
            Region.Entry entry;
            for (final Object value : custRegion.entrySet()) {
              entrySet.add(value);
            }
            for (final Object o : entrySet) {
              entry = (Entry) o;
              assertThat(originalKeySet.contains(entry.getKey())).isTrue();
              assertThat(originalValueSet.contains(entry.getValue())).isTrue();
            }
            assertThat(custRegion.entrySet().size()).isEqualTo(5);
            break;
          default:
            throw new IllegalArgumentException();
        }
        assertThat(mgr.getTXState()).isNotNull();
        return mgr.suspend();
      }
When we have narrowed down on a target node for a transaction, test that we throw an exception
if that node does not host primary for subsequent entries
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java