package org.infinispan.api;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.context.Flag;
import org.infinispan.test.MultipleCacheManagersTest;
import org.testng.annotations.Test;
/**
* https://issues.jboss.org/browse/ISPN-3141
*/
@Test(groups = "functional", testName = "api.IgnoreReturnValueForConditionalOperationsTest")
public class IgnoreReturnValueForConditionalOperationsTest extends MultipleCacheManagersTest {
@Override
public Object[] factory() {
return new Object[] {
new IgnoreReturnValueForConditionalOperationsTest().cacheMode(CacheMode.DIST_SYNC).transactional(false),
new IgnoreReturnValueForConditionalOperationsTest().cacheMode(CacheMode.DIST_SYNC).transactional(true),
};
}
@Override
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder dcc = getDefaultClusteredCacheConfig(cacheMode, transactional);
createCluster(dcc, 2);
waitForClusterToForm();
}
public void testConditionalReplace() {
Object k = init();
assertTrue(advancedCache(0).withFlags(Flag.IGNORE_RETURN_VALUES).replace(k, "v0", "v1"));
assertEquals(cache(0).get(k), "v1");
assertEquals(cache(1).get(k), "v1");
}
public void testConditionalRemove() {
Object k = init();
assertTrue(advancedCache(0).withFlags(Flag.IGNORE_RETURN_VALUES).remove(k, "v0"));
assertNull(cache(0).get(k));
assertNull(cache(1).get(k));
}
private Object init() {
Object k = getKeyForCache(1);
cache(0).put(k, "v0");
assertEquals(cache(0).get(k), "v0");
assertEquals(cache(1).get(k), "v0");
return k;
}
}