public void testReplaceFromNonOwner() throws Exception {
String key = "k1", value = "value", value2 = "v2";
initAndTest();
for (Cache<Object, String> c : caches) {
CacheLoader store = TestingUtil.getFirstLoader(c);
if (isFirstOwner(c, key)) {
assertIsInContainerImmortal(c, key);
assert store.load(key).getValue().equals(value);
}
}
Object retval = getFirstNonOwner(key).replace(key, value2);
asyncWait(key, ReplaceCommand.class, getSecondNonOwner(key));
if (testRetVals) assert value.equals(retval);
for (Cache<Object, String> c : caches) {
CacheLoader store = TestingUtil.getFirstLoader(c);
if (isFirstOwner(c, key)) {
assertIsInContainerImmortal(c, key);
}
assert store.load(key).getValue().equals(value2);
assertNumberOfInvocations(store, "write", 2);
}
}