private void doNonColocatedbulkOp(final OP op) {
    Host host = Host.getHost(0);
    VM accessor = host.getVM(0);
    VM datastore1 = host.getVM(1);
    VM datastore2 = host.getVM(2);
    initAccessorAndDataStore(accessor, datastore1, datastore2, 0);

    accessor.invoke(new SerializableCallable<Object>() {
      @Override
      public Object call() {
        Map<CustId, Customer> custMap = new HashMap<CustId, Customer>();
        for (int i = 0; i < 10; i++) {
          CustId cId = new CustId(i);
          Customer c = new Customer("name" + i, "addr" + i);
          custMap.put(cId, c);
        }
        InternalCache cache = getCache();
        cache.getCacheTransactionManager().begin();
        Region<CustId, Customer> r = cache.getRegion(CUSTOMER);
        assertThatThrownBy(() -> {
          switch (op) {
            case PUTALL:
              r.putAll(custMap);
              break;
            case GETALL:
              r.put(new CustId(1), new Customer("cust1", "addr1"));
              r.getAll(custMap.keySet());
              break;
            default:
              break;
          }
        }).isInstanceOf(TransactionDataNotColocatedException.class);
        cache.getCacheTransactionManager().rollback();
        return null;
      }
    });
  }
disabled because rather than throwing an exception, getAll catches all exceptions and logs a
warning message
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/RemoteTransactionDUnitTest.java