@Before public void setup() throws IOException { byte[] bytes1 = {(byte) 'A', (byte) 'B'}; byte[] bytes2 = {(byte) 'C', (byte) 'D'}; List<StoreDefinition> stores = ClusterTestUtils.getZZZ322StoreDefs("memory"); StoreDefinition storeDef = stores.get(0); cluster = ClusterTestUtils.getZZZCluster(); ClientConfig clientConfig = new ClientConfig(); clientConfig.setBootstrapUrls(cluster.getNodeById(0).getSocketUrl().toString()); clientConfig.getZoneAffinity().setEnableGetOpZoneAffinity(true); clientConfig.setClientZoneId(clientZoneId); SocketStoreClientFactory socketStoreClientFactory = new SocketStoreClientFactory(clientConfig); for (Integer nodeId : cluster.getNodeIds()) { SocketStoreFactory socketStoreFactory = new ClientRequestExecutorPool(2, 10000, 100000, 1024); VoldemortConfig config = ServerTestUtils.createServerConfigWithDefs( true, nodeId, TestUtils.createTempDir().getAbsolutePath(), cluster, stores, new Properties()); VoldemortServer vs = ServerTestUtils.startVoldemortServer(socketStoreFactory, config, cluster); vservers.put(nodeId, vs); socketStoreFactories.put(nodeId, socketStoreFactory); Store<ByteArray, byte[], byte[]> store = vs.getStoreRepository().getLocalStore(storeDef.getName()); Node node = cluster.getNodeById(nodeId); VectorClock version1 = new VectorClock(); version1.incrementVersion(0, System.currentTimeMillis()); VectorClock version2 = version1.incremented(0, System.currentTimeMillis()); if (node.getZoneId() == clientZoneId) { store.put(new ByteArray(bytes1), new Versioned<byte[]>(bytes1, version1), null); } else { store.put(new ByteArray(bytes1), new Versioned<byte[]>(bytes2, version2), null); } } client = socketStoreClientFactory.getRawStore(storeDef.getName(), null); }
@Before public void setUp() throws Exception { cluster = getNineNodeCluster(); storeDef = getStoreDef( STORE_NAME, REPLICATION_FACTOR, P_READS, R_READS, P_WRITES, R_WRITES, RoutingStrategyType.CONSISTENT_STRATEGY); for (Node node : cluster.getNodes()) { VoldemortException e = new UnreachableStoreException("Node down"); InMemoryStorageEngine<ByteArray, byte[], byte[]> storageEngine = new InMemoryStorageEngine<ByteArray, byte[], byte[]>(STORE_NAME); LoggingStore<ByteArray, byte[], byte[]> loggingStore = new LoggingStore<ByteArray, byte[], byte[]>(storageEngine); subStores.put( node.getId(), new ForceFailStore<ByteArray, byte[], byte[]>(loggingStore, e, node.getId())); } setFailureDetector(subStores); for (Node node : cluster.getNodes()) { int nodeId = node.getId(); StoreRepository storeRepo = new StoreRepository(); storeRepo.addLocalStore(subStores.get(nodeId)); for (int i = 0; i < NUM_NODES_TOTAL; i++) storeRepo.addNodeStore(i, subStores.get(i)); SlopStorageEngine slopStorageEngine = new SlopStorageEngine( new InMemoryStorageEngine<ByteArray, byte[], byte[]>(SLOP_STORE_NAME), cluster); StorageEngine<ByteArray, Slop, byte[]> storageEngine = slopStorageEngine.asSlopStore(); storeRepo.setSlopStore(slopStorageEngine); slopStores.put(nodeId, storageEngine); MetadataStore metadataStore = ServerTestUtils.createMetadataStore(cluster, Lists.newArrayList(storeDef)); StreamingSlopPusherJob pusher = new StreamingSlopPusherJob( storeRepo, metadataStore, failureDetector, ServerTestUtils.createServerConfigWithDefs( false, nodeId, TestUtils.createTempDir().getAbsolutePath(), cluster, Lists.newArrayList(storeDef), new Properties())); slopPusherJobs.add(pusher); } routedStoreThreadPool = Executors.newFixedThreadPool(NUM_THREADS); routedStoreFactory = new RoutedStoreFactory(true, routedStoreThreadPool, 1000L); strategy = new RoutingStrategyFactory().updateRoutingStrategy(storeDef, cluster); Map<Integer, NonblockingStore> nonblockingStores = Maps.newHashMap(); for (Map.Entry<Integer, Store<ByteArray, byte[], byte[]>> entry : subStores.entrySet()) nonblockingStores.put( entry.getKey(), routedStoreFactory.toNonblockingStore(entry.getValue())); store = routedStoreFactory.create( cluster, storeDef, subStores, nonblockingStores, slopStores, false, Zone.DEFAULT_ZONE_ID, failureDetector); generateData(); }