Skip to content

Commit

Permalink
refactored AdminBasicTest.
Browse files Browse the repository at this point in the history
  • Loading branch information
bbansal committed Nov 17, 2009
1 parent d9651fc commit 10295da
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 45 deletions.
12 changes: 12 additions & 0 deletions test/common/voldemort/ServerTestUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import voldemort.server.AbstractSocketService;
import voldemort.server.StoreRepository;
import voldemort.server.VoldemortConfig;
import voldemort.server.VoldemortServer;
import voldemort.server.http.StoreServlet;
import voldemort.server.niosocket.NioSocketService;
import voldemort.server.protocol.RequestHandler;
Expand Down Expand Up @@ -387,4 +388,15 @@ public static RequestHandlerFactory getSocketRequestHandlerFactory(StoreReposito
return new SocketRequestHandlerFactory(repository, null, null, null);
}

public static void stopVoldemortServer(VoldemortServer server) throws IOException {
server.stop();
FileUtils.deleteDirectory(new File(server.getVoldemortConfig().getVoldemortHome()));
}

public static VoldemortServer startVoldemortServer(VoldemortConfig config, Cluster cluster) {
VoldemortServer server = new VoldemortServer(config, cluster);
server.start();
return server;
}

}
80 changes: 35 additions & 45 deletions test/unit/voldemort/client/AdminServiceBasicTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package voldemort.client;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
Expand All @@ -26,9 +25,6 @@
import java.util.concurrent.TimeUnit;

import junit.framework.TestCase;

import org.apache.commons.io.FileUtils;

import voldemort.ServerTestUtils;
import voldemort.TestUtils;
import voldemort.client.protocol.admin.AdminClient;
Expand All @@ -49,7 +45,7 @@
public class AdminServiceBasicTest extends TestCase {

private static int TEST_STREAM_KEYS_SIZE = 10000;
private static String storeName = "test-replication-memory";
private static String testStoreName = "test-replication-memory";
private static String storesXmlfile = "test/common/voldemort/config/stores.xml";

private VoldemortServer[] servers;
Expand All @@ -61,8 +57,18 @@ public void setUp() throws IOException {
cluster = ServerTestUtils.getLocalCluster(2, new int[][] { { 0, 1, 2, 3 }, { 4, 5, 6, 7 } });
servers = new VoldemortServer[2];

servers[0] = startVoldemortServer(0, cluster);
servers[1] = startVoldemortServer(1, cluster);
servers[0] = ServerTestUtils.startVoldemortServer(ServerTestUtils.createServerConfig(0,
TestUtils.createTempDir()
.getAbsolutePath(),
null,
storesXmlfile),
cluster);
servers[1] = ServerTestUtils.startVoldemortServer(ServerTestUtils.createServerConfig(1,
TestUtils.createTempDir()
.getAbsolutePath(),
null,
storesXmlfile),
cluster);

adminClient = ServerTestUtils.getAdminClient(cluster);
}
Expand All @@ -71,26 +77,10 @@ public void setUp() throws IOException {
public void tearDown() throws IOException, InterruptedException {
adminClient.stop();
for(VoldemortServer server: servers) {
stopVoldemortServer(server);
ServerTestUtils.stopVoldemortServer(server);
}
}

private void stopVoldemortServer(VoldemortServer server) throws IOException {
server.stop();
FileUtils.deleteDirectory(new File(server.getVoldemortConfig().getVoldemortHome()));
}

private VoldemortServer startVoldemortServer(int nodeId, Cluster cluster) throws IOException {
VoldemortServer server = new VoldemortServer(ServerTestUtils.createServerConfig(nodeId,
TestUtils.createTempDir()
.getAbsolutePath(),
null,
storesXmlfile),
cluster);
server.start();
return server;
}

private VoldemortServer getVoldemortServer(int nodeId) {
return servers[nodeId];
}
Expand Down Expand Up @@ -179,22 +169,22 @@ public void testDeletePartitionEntries() {
HashMap<ByteArray, byte[]> entrySet = ServerTestUtils.createRandomKeyValuePairs(TEST_STREAM_KEYS_SIZE);

// insert it into server-0 store
Store<ByteArray, byte[]> store = getStore(0, storeName);
Store<ByteArray, byte[]> store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
store.put(entry.getKey(), new Versioned<byte[]>(entry.getValue()));
}

List<Integer> deletePartitionsList = Arrays.asList(0, 2);

// do delete partitions request
getAdminClient().deletePartitions(0, storeName, deletePartitionsList, null);
getAdminClient().deletePartitions(0, testStoreName, deletePartitionsList, null);

RoutingStrategy routingStrategy = getVoldemortServer(0).getMetadataStore()
.getRoutingStrategy(storeName);
.getRoutingStrategy(testStoreName);

store = getStore(0, storeName);
store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
if(isKeyPartition(entry.getKey(), 0, storeName, deletePartitionsList)) {
if(isKeyPartition(entry.getKey(), 0, testStoreName, deletePartitionsList)) {
assertEquals("deleted partitions should be missing.", 0, store.get(entry.getKey())
.size());
}
Expand All @@ -208,24 +198,24 @@ public void testFetchPartitionKeys() throws IOException {

// insert it into server-0 store
int fetchPartitionKeyCount = 0;
Store<ByteArray, byte[]> store = getStore(0, storeName);
Store<ByteArray, byte[]> store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
store.put(entry.getKey(), new Versioned<byte[]>(entry.getValue()));
if(isKeyPartition(entry.getKey(), 0, storeName, fetchPartitionsList)) {
if(isKeyPartition(entry.getKey(), 0, testStoreName, fetchPartitionsList)) {
fetchPartitionKeyCount++;
}
}

Iterator<ByteArray> fetchIt = getAdminClient().fetchPartitionKeys(0,
storeName,
testStoreName,
fetchPartitionsList,
null);
// check values
int count = 0;
while(fetchIt.hasNext()) {
assertEquals("Fetched key should belong to asked partitions",
true,
isKeyPartition(fetchIt.next(), 0, storeName, fetchPartitionsList));
isKeyPartition(fetchIt.next(), 0, testStoreName, fetchPartitionsList));
count++;
}

Expand All @@ -241,16 +231,16 @@ public void testFetch() throws IOException {

// insert it into server-0 store
int fetchPartitionKeyCount = 0;
Store<ByteArray, byte[]> store = getStore(0, storeName);
Store<ByteArray, byte[]> store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
store.put(entry.getKey(), new Versioned<byte[]>(entry.getValue()));
if(isKeyPartition(entry.getKey(), 0, storeName, fetchPartitionsList)) {
if(isKeyPartition(entry.getKey(), 0, testStoreName, fetchPartitionsList)) {
fetchPartitionKeyCount++;
}
}

Iterator<Pair<ByteArray, Versioned<byte[]>>> fetchIt = getAdminClient().fetchPartitionEntries(0,
storeName,
testStoreName,
fetchPartitionsList,
null);
// check values
Expand All @@ -259,7 +249,7 @@ public void testFetch() throws IOException {
Pair<ByteArray, Versioned<byte[]>> entry = fetchIt.next();
assertEquals("Fetched entries should belong to asked partitions",
true,
isKeyPartition(entry.getFirst(), 0, storeName, fetchPartitionsList));
isKeyPartition(entry.getFirst(), 0, testStoreName, fetchPartitionsList));
assertEquals("entry value should match",
new String(entry.getSecond().getValue()),
new String(entrySet.get(entry.getFirst())));
Expand Down Expand Up @@ -291,10 +281,10 @@ protected Pair<ByteArray, Versioned<byte[]>> computeNext() {
}
};

getAdminClient().updateEntries(0, storeName, iterator, null);
getAdminClient().updateEntries(0, testStoreName, iterator, null);

// check updated values
Store<ByteArray, byte[]> store = getStore(0, storeName);
Store<ByteArray, byte[]> store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
assertNotSame("entry should be present at store", 0, store.get(entry.getKey()).size());
assertEquals("entry value should match",
Expand All @@ -312,29 +302,29 @@ public void testFetchAndUpdate() throws IOException {

// insert it into server-0 store
int fetchPartitionKeyCount = 0;
Store<ByteArray, byte[]> store = getStore(0, storeName);
Store<ByteArray, byte[]> store = getStore(0, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
store.put(entry.getKey(), new Versioned<byte[]>(entry.getValue()));
if(isKeyPartition(entry.getKey(), 0, storeName, fetchAndUpdatePartitionsList)) {
if(isKeyPartition(entry.getKey(), 0, testStoreName, fetchAndUpdatePartitionsList)) {
fetchPartitionKeyCount++;
}
}

// assert that server1 is empty.
store = getStore(1, storeName);
store = getStore(1, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet())
assertEquals("server1 should be empty at start.", 0, store.get(entry.getKey()).size());

// do fetch And update call server1 <-- server0
AdminClient client = getAdminClient();
int id = client.fetchAndUpdateStreams(0, 1, storeName, Arrays.asList(0, 1), null);
int id = client.fetchAndUpdateStreams(0, 1, testStoreName, Arrays.asList(0, 1), null);
client.waitForCompletion(1, id, 5, TimeUnit.SECONDS);

// check values
int count = 0;
store = getStore(1, storeName);
store = getStore(1, testStoreName);
for(Entry<ByteArray, byte[]> entry: entrySet.entrySet()) {
if(isKeyPartition(entry.getKey(), 0, storeName, fetchAndUpdatePartitionsList)) {
if(isKeyPartition(entry.getKey(), 0, testStoreName, fetchAndUpdatePartitionsList)) {
assertEquals("server1 store should contain fetchAndupdated partitions.",
1,
store.get(entry.getKey()).size());
Expand Down

0 comments on commit 10295da

Please sign in to comment.