package org.sdnplatform.sync.internal.store;
import java.util.ArrayList;
import java.util.List;
import net.floodlightcontroller.core.module.FloodlightModuleContext;
import net.floodlightcontroller.debugcounter.IDebugCounterService;
import net.floodlightcontroller.debugcounter.NullDebugCounter;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.floodlightcontroller.threadpool.ThreadPool;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.After;
import org.junit.Before;
import org.sdnplatform.sync.ISyncService.Scope;
import org.sdnplatform.sync.internal.SyncManager;
import org.sdnplatform.sync.internal.remote.RemoteSyncManager;
import org.sdnplatform.sync.internal.store.IStore;
import org.sdnplatform.sync.internal.util.ByteArray;
public class RemoteStoreTest extends AbstractStoreT<ByteArray,byte[]> {
ThreadPool tp;
SyncManager syncManager;
protected final static ObjectMapper mapper = new ObjectMapper();
RemoteSyncManager remoteSyncManager;
@Before
public void setUp() throws Exception {
FloodlightModuleContext fmc = new FloodlightModuleContext();
tp = new ThreadPool();
syncManager = new SyncManager();
remoteSyncManager = new RemoteSyncManager();
fmc.addService(IThreadPoolService.class, tp);
fmc.addService(IDebugCounterService.class, new NullDebugCounter());
fmc.addConfigParam(syncManager, "persistenceEnabled", "false");
tp.init(fmc);
syncManager.init(fmc);
remoteSyncManager.init(fmc);
tp.startUp(fmc);
syncManager.startUp(fmc);
remoteSyncManager.startUp(fmc);
syncManager.registerStore("local", Scope.LOCAL);
}
@After
public void tearDown() {
tp.getScheduledExecutor().shutdownNow();
tp = null;
syncManager.shutdown();
remoteSyncManager.shutdown();
}
@Override
public IStore<ByteArray, byte[]> getStore() throws Exception {
return remoteSyncManager.getStore("local");
}
@Override
public List<byte[]> getValues(int numValues) {
ArrayList<byte[]> r = new ArrayList<byte[]>();
for (int i = 0; i < numValues; i++) {
r.add(Integer.toString(i).getBytes());
}
return r;
}
@Override
public List<ByteArray> getKeys(int numKeys) {
ArrayList<ByteArray> r = new ArrayList<ByteArray>();
for (int i = 0; i < numKeys; i++) {
r.add(new ByteArray(Integer.toString(i).getBytes()));
}
return r;
}
}