package org.infinispan.api.mvcc;
import static org.testng.AssertJUnit.assertEquals;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.test.MultipleCacheManagersTest;
import org.infinispan.transaction.TransactionMode;
import org.infinispan.util.concurrent.IsolationLevel;
import org.testng.annotations.Test;
/**
* PutForExternalRead tests for invalidated caches.
*
* @author Galder ZamarreƱo
* @since 6.0
*/
@Test(groups="functional", testName = "api.mvcc.PutForExternalReadInvTest")
public class PutForExternalReadInvTest extends MultipleCacheManagersTest {
@Override
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder builder = new ConfigurationBuilder();
builder
.clustering().cacheMode(CacheMode.INVALIDATION_SYNC)
.transaction().transactionMode(TransactionMode.TRANSACTIONAL)
.locking().isolationLevel(IsolationLevel.READ_COMMITTED);
createClusteredCaches(2, builder);
}
public void testReadOwnWrites() {
Cache<Integer, String> c0 = cache(0);
Cache<Integer, String> c1 = cache(1);
c0.putForExternalRead(1, "v1");
assertEquals("v1", c0.get(1));
c1.putForExternalRead(1, "v1");
assertEquals("v1", c1.get(1));
}
}