package org.infinispan.it.compatibility;
import static org.infinispan.client.hotrod.test.HotRodClientTestingUtil.getSplitIntKeyForServer;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.infinispan.Cache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.TestingUtil;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(groups = "functional", testName = "it.compatibility.DistL1EmbeddedHotRodTest")
public class DistL1EmbeddedHotRodTest extends AbstractInfinispanTest {
private static final int NUM_OWNERS = 1;
private CompatibilityCacheFactory<Integer, String> cacheFactory1;
private CompatibilityCacheFactory<Integer, String> cacheFactory2;
@BeforeClass
protected void setup() throws Exception {
cacheFactory1 = new CompatibilityCacheFactory<Integer, String>(CacheMode.DIST_SYNC, NUM_OWNERS, true).setup();
cacheFactory2 = new CompatibilityCacheFactory<Integer, String>(CacheMode.DIST_SYNC, NUM_OWNERS, true)
.setup(cacheFactory1.getHotRodPort(), 100);
List<Cache<Integer, String>> caches = Arrays.asList(cacheFactory1.getEmbeddedCache(), cacheFactory2.getEmbeddedCache());
TestingUtil.blockUntilViewsReceived(30000, caches);
TestingUtil.waitForNoRebalance(caches);
assertTrue(cacheFactory1.getHotRodCache().isEmpty());
assertTrue(cacheFactory2.getHotRodCache().isEmpty());
}
@AfterClass
protected void teardown() {
CompatibilityCacheFactory.killCacheFactories(cacheFactory1, cacheFactory2);
}
public void testEmbeddedPutHotRodGetFromL1() {
Cache<Integer, String> embedded1 = cacheFactory1.getEmbeddedCache();
Cache<Integer, String> embedded2 = cacheFactory2.getEmbeddedCache();
Integer key = getSplitIntKeyForServer(cacheFactory1.getHotrodServer(), cacheFactory2.getHotrodServer(), null);
// Put it owner, forcing the remote node to get it from L1
embedded1.put(key, "uno");
// Should get it from L1
assertEquals("uno", cacheFactory1.getHotRodCache().get(key));
assertEquals("uno", cacheFactory1.getHotRodCache().get(key));
}
}