package org.infinispan.atomic;
import static org.infinispan.atomic.AtomicMapLookup.getAtomicMap;
import static org.infinispan.atomic.AtomicMapLookup.getFineGrainedAtomicMap;
import static org.testng.AssertJUnit.fail;
import java.util.Map;
import org.infinispan.Cache;
import org.infinispan.distribution.MagicKey;
import org.testng.annotations.Test;
/**
* @author Vladimir Blagojevic (C) 2011 Red Hat Inc.
* @author Sanne Grinovero (C) 2011 Red Hat Inc.
* @author Pedro Ruivo
*/
@Test(groups = "functional", testName = "atomic.FineGrainedAtomicMapAPITest")
public class FineGrainedAtomicMapAPITest extends BaseAtomicHashMapAPITest {
public void testFineGrainedMapAfterAtomicMapPrimary() throws Exception {
Cache<MagicKey, Object> cache1 = cache(0, "atomic");
MagicKey key = new MagicKey("key", cache1);
getAtomicMap(cache1, key);
try {
getFineGrainedAtomicMap(cache1, key);
fail("Should have failed with an IllegalArgumentException");
} catch (IllegalArgumentException e) {
// Expected
}
}
@Test(enabled = false, description = "Doesn't work when the originator isn't the primary owner, see ISPN-5988")
public void testFineGrainedMapAfterAtomicMapBackup() throws Exception {
Cache<MagicKey, Object> cache1 = cache(0, "atomic");
Cache<MagicKey, Object> cache2 = cache(1, "atomic");
MagicKey key = new MagicKey("key", cache2);
getAtomicMap(cache1, key);
try {
getFineGrainedAtomicMap(cache1, key);
fail("Should have failed with an IllegalArgumentException");
} catch (IllegalArgumentException e) {
// Expected
}
}
@Override
protected <CK, K, V> Map<K, V> createAtomicMap(Cache<CK, Object> cache, CK key, boolean createIfAbsent) {
return getFineGrainedAtomicMap(cache, key, createIfAbsent);
}
}