package org.infinispan.it.compatibility;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Set;
import org.infinispan.Cache;
import org.infinispan.client.hotrod.RemoteCache;
import org.infinispan.commons.api.BasicCache;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.test.AbstractInfinispanTest;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* Test compatibility between embedded caches and Hot Rod endpoints for
* operations that retrieve data in bulk, i.e. keySet.
*
* @author Martin Gencur
* @since 7.0
*/
@Test(groups = "functional", testName = "it.compatibility.DistEmbeddedHotRodBulkTest")
public class DistEmbeddedHotRodBulkTest extends AbstractInfinispanTest {
private final int numOwners = 1;
private CompatibilityCacheFactory<String, Integer> cacheFactory1;
private CompatibilityCacheFactory<String, Integer> cacheFactory2;
@BeforeClass
protected void setup() throws Exception {
cacheFactory1 = new CompatibilityCacheFactory<String, Integer>(CacheMode.DIST_SYNC, numOwners, false).setup();
cacheFactory2 = new CompatibilityCacheFactory<String, Integer>(CacheMode.DIST_SYNC, numOwners, false)
.setup(cacheFactory1.getHotRodPort(), 100);
}
@AfterClass
protected void teardown() {
CompatibilityCacheFactory.killCacheFactories(cacheFactory1, cacheFactory2);
}
private void populateCacheManager(BasicCache cache) {
for (int i = 0; i < 100; i++) {
cache.put("key" + i, i);
}
}
public void testEmbeddedPutHotRodKeySet() {
Cache<String, Integer> embedded = cacheFactory1.getEmbeddedCache();
RemoteCache<String, Integer> remote = cacheFactory2.getHotRodCache();
populateCacheManager(embedded);
Set<String> keySet = remote.keySet();
assertEquals(100, keySet.size());
for(int i = 0; i < 100; i++) {
assertTrue(keySet.contains("key" + i));
}
}
}