コード例 #1
0
 def test_resend_accept(self):
     self.set_leader()
     self.p.set_proposal('foo')
     self.ae(self.p.proposed_value, 'foo')
     self.am('accept', PID(1, 'A'), 'foo')
     self.p.resend_accept()
     self.am('accept', PID(1, 'A'), 'foo')
コード例 #2
0
 def test_recv_promise_ignore_when_leader(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.ae(self.num_promises(), 0)
     self.p.leader = True
     self.p.recv_promise('B', PID(1, 'A'), None, None)
     self.ae(self.num_promises(), 0)
コード例 #3
0
 def test_durable_ignore_prepare_override_until_persisted(self):
     self.a.auto_save = False
     self.a.recv_prepare('A', PID(1, 'A'))
     self.an()
     self.a.recv_prepare('B', PID(2, 'B'))
     self.an()
     self.a.persisted()
     self.am('promise', 'A', PID(1, 'A'), None, None)
コード例 #4
0
 def test_recv_accept_request_less_than_promised(self):
     self.a.recv_prepare('A', PID(5, 'A'))
     self.am('promise', 'A', PID(5, 'A'), None, None)
     self.a.active = False
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.ae(self.a.accepted_value, None)
     self.ae(self.a.accepted_id, None)
     self.ae(self.a.promised_id, PID(5, 'A'))
     self.an()
コード例 #5
0
 def test_preare_no_increment(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.ae(self.num_promises(), 0)
     self.p.recv_promise('B', PID(1, 'A'), None, None)
     self.ae(self.num_promises(), 1)
     self.p.prepare(False)
     self.am('prepare', PID(1, 'A'))
     self.ae(self.num_promises(), 1)
コード例 #6
0
 def test_durable_ignore_new_accept_request_until_persisted(self):
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('promise', 'A', PID(1, 'A'), None, None)
     self.a.auto_save = False
     self.a.recv_accept_request('A', PID(5, 'A'), 'foo')
     self.an()
     self.a.recv_accept_request('A', PID(6, 'A'), 'foo')
     self.an()
     self.a.persisted()
     self.am('accepted', PID(5, 'A'), 'foo')
コード例 #7
0
 def test_recv_promise_acquire_leadership_without_proposal(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.ae(self.num_promises(), 0)
     self.p.recv_promise('B', PID(1, 'A'), None, None)
     self.ae(self.num_promises(), 1)
     self.at(not self.p.leader)
     self.at(not self.leader_acquired)
     self.p.recv_promise('C', PID(1, 'A'), None, None)
     self.ae(self.num_promises(), 2)
     self.at(self.p.leader)
     self.at(self.leader_acquired)
     self.an()
コード例 #8
0
 def test_recv_prepare_initial_not_active(self):
     self.ae(self.a.promised_id, None)
     self.ae(self.a.accepted_value, None)
     self.ae(self.a.accepted_id, None)
     self.a.active = False
     self.a.recv_prepare('A', PID(1, 'A'))
     self.an()
コード例 #9
0
 def test_durable_recv_prepare_override(self):
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('promise', 'A', PID(1, 'A'), None, None)
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.clear_msgs()
     self.a.recv_prepare('B', PID(2, 'B'))
     self.am('promise', 'B', PID(2, 'B'), PID(1, 'A'), 'foo')
コード例 #10
0
 def test_recv_accept_request_duplicate_not_active(self):
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.am('accepted', PID(1, 'A'), 'foo')
     self.a.active = False
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.an()
コード例 #11
0
 def test_set_proposal_no_previous_value_as_leader(self):
     self.set_leader()
     self.p.set_proposal('foo')
     self.ae(self.p.proposed_value, 'foo')
     self.am('accept', PID(1, 'A'), 'foo')
コード例 #12
0
 def set_leader(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.p.leader = True
     self.ae(self.p.proposed_value, None)
コード例 #13
0
 def test_durable_recv_accept_request_less_than_promised(self):
     self.a.recv_prepare('A', PID(5, 'A'))
     self.am('promise', 'A', PID(5, 'A'), None, None)
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.am('accept_nack', 'A', PID(1, 'A'), PID(5, 'A'))
コード例 #14
0
 def test_recv_prepare_nack(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.p.recv_prepare_nack('B', PID(1, 'A'), PID(5, 'B'))
     self.p.prepare()
     self.am('prepare', PID(6, 'A'))
コード例 #15
0
 def test_durable_recv_accept_request_greater_than_promised(self):
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('promise', 'A', PID(1, 'A'), None, None)
     self.recover()
     self.a.recv_accept_request('A', PID(5, 'A'), 'foo')
     self.am('accepted', PID(5, 'A'), 'foo')
コード例 #16
0
 def test_recv_prepare_nack(self):
     self.a.recv_prepare('A', PID(2, 'A'))
     self.am('promise', 'A', PID(2, 'A'), None, None)
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('prepare_nack', 'A', PID(1, 'A'), PID(2, 'A'))
コード例 #17
0
 def test_durable_recv_prepare_duplicate(self):
     self.a.recv_prepare('A', PID(2, 'A'))
     self.am('promise', 'A', PID(2, 'A'), None, None)
     self.recover()
     self.a.recv_prepare('A', PID(2, 'A'))
     self.am('promise', 'A', PID(2, 'A'), None, None)
コード例 #18
0
 def test_add_to_final_acceptors_after_resolution_with_pid_mismatch(self):
     self.test_basic_resolution_final_acceptors()
     self.l.recv_accepted('C', PID(0, 'A'), 'foo')
     self.ae(self.l.final_acceptors, set(['A', 'B', 'C']))
コード例 #19
0
 def test_observe_proposal(self):
     self.p.prepare()
     self.am('prepare', PID(1, 'A'))
     self.p.observe_proposal('B', PID(5, 'B'))
     self.p.prepare()
     self.am('prepare', PID(6, 'A'))
コード例 #20
0
 def test_prepare_increment_on_foriegn_promise(self):
     self.p.recv_promise('B', PID(5, 'C'), None, None)
     self.p.prepare()
     self.am('prepare', PID(6, 'A'))
コード例 #21
0
 def test_recv_accept_request_duplicate(self):
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.am('accepted', PID(1, 'A'), 'foo')
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.am('accepted', PID(1, 'A'), 'foo')
コード例 #22
0
 def test_recv_prepare_duplicate_not_active(self):
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('promise', 'A', PID(1, 'A'), None, None)
     self.a.active = False
     self.a.recv_prepare('A', PID(1, 'A'))
     self.an()
コード例 #23
0
 def test_recv_accept_request_less_than_promised(self):
     super(PracticalAcceptorTests,
           self).test_recv_accept_request_less_than_promised()
     self.am('accept_nack', 'A', PID(1, 'A'), PID(5, 'A'))
コード例 #24
0
 def test_prepare_increment_on_foriegn_promise_not_active(self):
     self.p.active = False
     self.p.recv_promise('B', PID(5, 'C'), None, None)
     self.p.prepare()
     self.an()
コード例 #25
0
 def test_recv_accept_request_initial_not_active(self):
     self.a.active = False
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.an()
コード例 #26
0
 def test_recv_accept_request_promised_not_active(self):
     self.a.recv_prepare('A', PID(1, 'A'))
     self.am('promise', 'A', PID(1, 'A'), None, None)
     self.a.active = False
     self.a.recv_accept_request('A', PID(1, 'A'), 'foo')
     self.an()
コード例 #27
0
 def test_basic_resolution_final_acceptors(self):
     self.ae(self.l.final_acceptors, None)
     self.l.recv_accepted('A', PID(1, 'A'), 'foo')
     self.l.recv_accepted('B', PID(1, 'A'), 'foo')
     self.ae(self.l.final_acceptors, set(['A', 'B']))