From 060274f31ea04b9fe284d91f457f3d82c11dbaed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kjetil=20=C3=98rbekk?= Date: Mon, 23 Jan 2012 17:57:17 +0100 Subject: Start implementing MasterProposer. --- .../java/com/orbekk/paxos/MasterProposerTest.java | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 same/src/test/java/com/orbekk/paxos/MasterProposerTest.java (limited to 'same/src/test') diff --git a/same/src/test/java/com/orbekk/paxos/MasterProposerTest.java b/same/src/test/java/com/orbekk/paxos/MasterProposerTest.java new file mode 100644 index 0000000..74c817f --- /dev/null +++ b/same/src/test/java/com/orbekk/paxos/MasterProposerTest.java @@ -0,0 +1,58 @@ +package com.orbekk.paxos; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Before; +import org.junit.Test; + +import com.orbekk.same.TestConnectionManager; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.*; + +public class MasterProposerTest { + TestConnectionManager connections = new TestConnectionManager(); + PaxosService p1 = mock(PaxosService.class); + PaxosService p2 = mock(PaxosService.class); + PaxosService p3 = mock(PaxosService.class); + PaxosService p4 = mock(PaxosService.class); + PaxosService p5 = mock(PaxosService.class); + String master = null; + + private class TestMasterAction implements Runnable { + String tag; + TestMasterAction(String tag) { + this.tag = tag; + } + + @Override public void run() { + master = tag; + } + } + + @Before public void setUp() { + } + + List paxosUrls() { + List urls = new ArrayList(); + urls.addAll(connections.paxosMap.keySet()); + return urls; + } + + @Test public void successfulProposal() { + connections.paxosMap.put("p1", p1); + when(p1.propose("client1", 1, 1)).thenReturn(true); + when(p1.acceptRequest("client1", 1, 1)).thenReturn(true); + + MasterProposer c1 = new MasterProposer( + "client1", + paxosUrls(), + 0, + connections, + MasterProposer.getTimeoutAction(0), + new TestMasterAction("c1")); + c1.run(); + assertEquals("c1", master); + } +} -- cgit v1.2.3