def test_remove_incorrect(self): clock = Clock() leader_store = MockStoreDontUse( entries={ 1: Entry(term=1, payload=1), 2: Entry(term=2, payload=2), 3: Entry(term=2, payload=3), }) leader_store.setCurrentTerm(2) leader_rpc = MockRPC() leader = RaftNode(1, leader_store, leader_rpc, clock=clock) follower_store = MockStoreDontUse({ 1: Entry(term=1, payload=1), 2: Entry(term=5, payload=1) }) follower_rpc = MockRPC() follower = RaftNode(2, follower_store, follower_rpc, clock=clock) leader_rpc.simpleAddNode(follower) follower_rpc.simpleAddNode(leader) d = leader._callAppendEntries(follower.id, {}) res = self.successResultOf(d) self.assertEqual(leader_store.log, follower_store.log)
def test_cluster(self): nodes = [] for num in range(5): clock = Clock() rpc = MockRPC() store = MockStoreDontUse() node = RaftNode(num, store, rpc, clock=clock, electionTimeout=1) nodes.append((node, rpc, store, clock)) for node1, rpc, _, _ in nodes: for node2, _, _, _ in nodes: if node1 is node2: continue rpc.simpleAddNode(node2) for node, rpc, store, clock in nodes: clock.advance(1.0)