package org.infinispan.xsite;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
import java.util.HashMap;
import java.util.Map;
import org.infinispan.Cache;
import org.testng.annotations.Test;
/**
* @author Mircea Markus
* @since 5.2
*/
public abstract class BaseCacheOperationsTest extends AbstractTwoSitesTest {
@Test
public void testRemove() {
testRemove("LON");
testRemove("NYC");
}
@Test
public void testPutAndClear() {
testPutAndClear("LON");
testPutAndClear("NYC");
}
@Test
public void testReplace() {
testReplace("LON");
testReplace("NYC");
}
@Test
public void testPutAll() {
testPutAll("LON");
testPutAll("NYC");
}
private void testRemove(String site) {
String key = key(site);
String val = val(site);
cache(site, 0).put(key, val);
assertEquals(backup(site).get(key), val);
cache(site, 0).remove(key);
assertNull(backup(site).get(key));
cache(site, 0).put(key, val);
assertEquals(backup(site).get(key), val);
cache(site, 0).remove(key, val);
assertNull(backup(site).get(key));
}
private void testReplace(String site) {
String key = key(site);
String val = val(site);
cache(site, 0).put(key, val);
Cache<Object, Object> backup = backup(site);
assertEquals(backup.get(key), val);
String val2 = val + 1;
cache(site, 0).replace(key, val2);
assertEquals(backup.get(key), val2);
String val3 = val+2;
cache(site, 0).replace(key, "v_non", val3);
assertEquals(backup.get(key), val2);
cache(site, 0).replace(key, val2, val3);
assertEquals(backup.get(key), val3);
}
private void testPutAndClear(String site) {
String key = key(site);
String val = val(site);
cache(site, 0).put(key, val);
assertEquals(backup(site).get(key), val);
cache(site, 0).clear();
assertNull(backup(site).get(key+1));
assertNull(backup(site).get(key));
}
private void testPutAll( String site) {
Map all = new HashMap();
String key = key(site);
String val = val(site);
for (int i = 0; i < 10; i++) {
all.put(key + i, val + i);
}
cache(site, 0).putAll(all);
for (int i = 0; i < 10; i++) {
assertEquals(backup(site).get(key + i), val + i);
}
}
}