package org.infinispan.client.hotrod; import static org.testng.AssertJUnit.assertEquals; import org.infinispan.client.hotrod.test.MultiHotRodServersTest; import org.infinispan.configuration.cache.CacheMode; import org.infinispan.configuration.cache.ConfigurationBuilder; import org.infinispan.persistence.dummy.DummyInMemoryStoreConfigurationBuilder; import org.testng.annotations.Test; @Test(groups = "functional", testName = "client.hotrod.SizeTest") public class SizeTest extends MultiHotRodServersTest { static final int NUM_SERVERS = 3; static final int SIZE = 20; @Override protected void createCacheManagers() throws Throwable { createHotRodServers(NUM_SERVERS, new ConfigurationBuilder()); } public void testLocalCacheSize() { String cacheName = "local-size"; defineInAll(cacheName, new ConfigurationBuilder()); // Create a brand new client so that as a local cache it does not do load balancing // This is important for size assertions since there's data is not clustered RemoteCache<Integer, Integer> remote = createClient(0).getCache(cacheName); populateCache(remote); assertEquals(SIZE, remote.size()); } public void testReplicatedCacheSize() { String cacheName = "replicated-size"; defineInAll(cacheName, getDefaultClusteredCacheConfig(CacheMode.REPL_SYNC, false)); populateCache(cacheName); assertEquals(SIZE, clients.get(0).getCache(cacheName).size()); } public void testDistributeCacheSize() { String cacheName = "distributed-size"; defineInAll(cacheName, getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false)); populateCache(cacheName); assertEquals(SIZE, clients.get(0).getCache(cacheName).size()); } public void testPersistentDistributedCacheSize() { String cacheName = "persistent-distributed-size"; ConfigurationBuilder builder = getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false); builder.eviction().size(1); builder.persistence() .passivation(true) .addStore(DummyInMemoryStoreConfigurationBuilder.class) .storeName(getClass().getName()) .shared(true).purgeOnStartup(true); defineInAll(cacheName, builder); assertEquals(0, clients.get(0).getCache(cacheName).size()); populateCache(cacheName); assertEquals(SIZE, server(0).getCacheManager().getCache(cacheName).size()); assertEquals(SIZE, clients.get(0).getCache(cacheName).size()); } private void populateCache(String cacheName) { for (int i = 0; i < SIZE; i++) { clients.get(i % NUM_SERVERS).getCache(cacheName).put(i, i); } } private void populateCache(RemoteCache<Integer, Integer> remote) { for (int i = 0; i < SIZE; i++) remote.put(i, i); } }