From 808e9f8c51b32cd052254d25cb6f4c27d353de2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Tue, 24 Apr 2012 12:18:31 +0200 Subject: Asynchronous paxos client using the protobuf interface. --- .../orbekk/paxos/PaxosServiceFunctionalTest.java | 59 ++++++++++++++-------- 1 file changed, 39 insertions(+), 20 deletions(-) (limited to 'same/src/test/java/com/orbekk/paxos/PaxosServiceFunctionalTest.java') diff --git a/same/src/test/java/com/orbekk/paxos/PaxosServiceFunctionalTest.java b/same/src/test/java/com/orbekk/paxos/PaxosServiceFunctionalTest.java index b8d146c..6ceb423 100644 --- a/same/src/test/java/com/orbekk/paxos/PaxosServiceFunctionalTest.java +++ b/same/src/test/java/com/orbekk/paxos/PaxosServiceFunctionalTest.java @@ -14,7 +14,9 @@ import org.junit.Before; import org.junit.Test; import com.googlecode.jsonrpc4j.JsonRpcServer; +import com.orbekk.protobuf.SimpleProtobufServer; import com.orbekk.same.ConnectionManagerImpl; +import com.orbekk.same.Services.ClientState; import com.orbekk.same.http.JettyServerBuilder; import com.orbekk.same.http.JettyServerContainer; import com.orbekk.same.http.RpcServlet; @@ -22,9 +24,12 @@ import com.orbekk.same.http.RpcServlet; public class PaxosServiceFunctionalTest { ConnectionManagerImpl connections = new ConnectionManagerImpl(500, 500); List paxosUrls = new ArrayList(); - JettyServerContainer server; + List servers = new ArrayList(); String myUrl; int successfulProposals = 0; + ClientState client1 = ClientState.newBuilder() + .setLocation("client1Location") + .build(); Runnable sleepForever = new Runnable() { @Override public synchronized void run() { @@ -39,18 +44,25 @@ public class PaxosServiceFunctionalTest { @Before public void setUp() throws Exception { - JettyServerBuilder builder = new JettyServerBuilder(0); - List tempUrls = setupPaxos(builder, 10); - server = builder.build(); - server.start(); - myUrl = "http://localhost:" + server.getPort(); - addUrls(tempUrls); - System.out.println(paxosUrls); + for (int i = 0; i < 11; i++) { + setupPaxos(i); + } } @After public void tearDown() throws Exception { - server.stop(); + for (SimpleProtobufServer server : servers) { + server.interrupt(); + } + } + + public void setupPaxos(int i) { + SimpleProtobufServer server = SimpleProtobufServer.create(0); + server.registerService(new PaxosServiceImpl("P: " + i + ": ").getService()); + server.start(); + servers.add(server); + String location = "localhost:" + server.getPort(); + paxosUrls.add(location); } public List setupPaxos(JettyServerBuilder builder, int instances) { @@ -72,23 +84,23 @@ public class PaxosServiceFunctionalTest { } @Test - public void testMasterElection() { - MasterProposer m1 = new MasterProposer("http://client1", paxosUrls, + public void testMasterElection() throws InterruptedException { + MasterProposer m1 = new MasterProposer(client1, paxosUrls, connections); assertTrue(m1.propose(1)); } @Test public void testMasterElectionTask() throws InterruptedException, ExecutionException { - MasterProposer m1 = new MasterProposer("http://client1", paxosUrls, + MasterProposer m1 = new MasterProposer(client1, paxosUrls, connections); Future result = m1.startProposalTask(1, null); assertEquals(new Integer(1), result.get()); } @Test - public void cancelledElection() { - MasterProposer m1 = new MasterProposer("http://client1", paxosUrls, + public void cancelledElection() throws InterruptedException { + MasterProposer m1 = new MasterProposer(client1, paxosUrls, connections); assertTrue(m1.propose(1)); @@ -99,9 +111,10 @@ public class PaxosServiceFunctionalTest { @Test public void testOnlyOneCompletes() throws InterruptedException, ExecutionException { - MasterProposer m1 = new MasterProposer("http://OnlyOneCompletes1", paxosUrls, + MasterProposer m1 = new MasterProposer(client1, paxosUrls, connections); - MasterProposer m2 = new MasterProposer("http://OnlyOneCompletes2", paxosUrls, + ClientState client2 = ClientState.newBuilder().setLocation("client2").build(); + MasterProposer m2 = new MasterProposer(client2, paxosUrls, connections); final Future result1 = m1.startProposalTask(1, sleepForever); final Future result2 = m2.startProposalTask(1, sleepForever); @@ -158,11 +171,17 @@ public class PaxosServiceFunctionalTest { final int j = i; masterProposers.add(new Thread() { @Override public void run() { - MasterProposer client = - new MasterProposer("http:/client" + j, paxosUrls, + ClientState client = ClientState.newBuilder() + .setLocation("client" + j) + .build(); + MasterProposer proposer = + new MasterProposer(client, paxosUrls, connections); - if (client.proposeRetry(1)) { - incrementSuccessfulProposals(); + try { + if (proposer.proposeRetry(1)) { + incrementSuccessfulProposals(); + } + } catch (InterruptedException e) { } } }); -- cgit v1.2.3