package org.infinispan.atomic.sharded.collections;
import static org.infinispan.atomic.Utils.assertOnAllCaches;
import static org.testng.AssertJUnit.assertEquals;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import org.infinispan.Cache;
import org.infinispan.atomic.AtomicObjectFactory;
import org.infinispan.configuration.cache.CacheMode;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.manager.EmbeddedCacheManager;
import org.infinispan.test.AbstractCacheTest;
import org.infinispan.test.MultipleCacheManagersTest;
import org.infinispan.test.fwk.TransportFlags;
import org.testng.annotations.Test;
/**
* @author Pierre Sutra
* @since 7.2
* *
*/
@Test(groups = "functional", testName = "ShardedTreeMapTest")
public class ShardedTreeMapTest extends MultipleCacheManagersTest {
private static int NCALLS= 100;
private static int NCACHES = 3;
private static List<Cache> caches = new ArrayList<Cache>();
@Test(enabled = true)
public void basicUsageTest() throws Exception{
EmbeddedCacheManager cacheManager = cacheManagers.iterator().next();
Cache cache = cacheManager.getCache();
AtomicObjectFactory factory = new AtomicObjectFactory(cache);
SortedMap<Integer,Integer> map = factory.getInstanceOf(ShardedTreeMap.class,"test",false,null,false,3);
for(int i=0; i<NCALLS; i++) {
map.put(i,i);
map.get(i);
}
factory.disposeInstanceOf(ShardedTreeMap.class,"test",true);
map = factory.getInstanceOf(ShardedTreeMap.class,"test",false,null,false,3);
int a = map.size();
log.debug(a);
assertEquals(NCALLS,map.size());
assertEquals(NCALLS/2,map.subMap(0,NCALLS/2).size());
SortedMap<Integer,Integer> map2 = factory.getInstanceOf(ShardedTreeMap.class,"test2",false,null,false,3);
Map<Integer,Integer> toAdd = new HashMap<Integer, Integer>();
for(int i=0; i<NCALLS; i++) {
toAdd.put(i, i);
toAdd.get(i);
}
map2.putAll(toAdd);
assertEquals(NCALLS,map2.size());
assertEquals(map2.lastKey(),Integer.valueOf(NCALLS-1));
}
//
// HELPERS
//
@Override
protected void createCacheManagers() throws Throwable {
ConfigurationBuilder builder
= AbstractCacheTest.getDefaultClusteredCacheConfig(CacheMode.DIST_SYNC, false);
TransportFlags flags = new TransportFlags();
createClusteredCaches(NCACHES, builder, flags);
}
protected void initAndTest() {
for (Cache<Object, String> c : caches) assert c.isEmpty();
caches.iterator().next().put("k1", "value");
assertOnAllCaches(caches,"k1", "value");
}
}