package com.bagri.server.hazelcast;
import java.util.Collection;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import static org.junit.Assert.*;
import org.junit.Ignore;
import org.junit.Test;
import com.hazelcast.config.Config;
import com.hazelcast.config.JoinConfig;
import com.hazelcast.config.MapConfig;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.core.MapLoaderLifecycleSupport;
import com.hazelcast.core.MapStore;
public class MigrationTest {
@Test
@Ignore
public void testDataMigration() throws Exception {
Config shConfig = new Config();
shConfig.getNetworkConfig().setPortAutoIncrement(true);
shConfig.getGroupConfig().setName("schema");
shConfig.getGroupConfig().setPassword("schemapass");
JoinConfig shJoin = shConfig.getNetworkConfig().getJoin();
shJoin.getMulticastConfig().setEnabled(false);
shJoin.getTcpIpConfig().addMember("localhost").setEnabled(true);
shConfig.setProperty("hazelcast.logging.type", "slf4j");
MapConfig mConfig = new MapConfig("test");
mConfig.getMapStoreConfig().setEnabled(true);
mConfig.getMapStoreConfig().setWriteDelaySeconds(10);
mConfig.getMapStoreConfig().setImplementation(new TestCacheStore());
shConfig.addMapConfig(mConfig);
HazelcastInstance node1 = Hazelcast.newHazelcastInstance(shConfig);
populateCache(node1, "test", 1000);
System.out.println("population finished, time to start second node!");
Thread.sleep(50000);
//HazelcastInstance node2 = Hazelcast.newHazelcastInstance(shConfig);
//populateCache(node, "test", 1000);
//System.out.println("Second node started");
//Thread.sleep(5000);
}
private void populateCache(HazelcastInstance node, String cName, int count) {
IMap<Long, String> cache = node.getMap(cName);
int idx = cache.size();
for (long i=idx; i < idx+count; i++) {
cache.set(i, String.valueOf(i));
}
}
public class TestCacheStore implements MapStore<Integer, String>, MapLoaderLifecycleSupport {
private IMap testCache;
private HazelcastInstance hzInstance;
@Override
public String load(Integer key) {
System.out.println("received load request for key " + key);
return null;
}
@Override
public Map<Integer, String> loadAll(Collection<Integer> keys) {
System.out.println("received loadAll request for keys " + keys);
return null;
}
@Override
public Iterable<Integer> loadAllKeys() {
System.out.println("received loadAllKeys request");
//testCache = hzInstance.getMap("test2");
return null; //Collections.emptySet();
}
@Override
public void init(HazelcastInstance hzInstance, Properties properties, String mapName) {
System.out.println("received init request for map " + mapName);
testCache = hzInstance.getMap("test2");
this.hzInstance = hzInstance;
}
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void store(Integer key, String value) {
// TODO Auto-generated method stub
}
@Override
public void storeAll(Map<Integer, String> map) {
// TODO Auto-generated method stub
}
@Override
public void delete(Integer key) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Collection<Integer> keys) {
// TODO Auto-generated method stub
}
}
}