Example #1
0
 def test_new_term_follower_update(self):
     self.raft.state.votedFor = 'second'
     message = UpdateMessage(term=2,
                             prevLogIndex=-1,
                             prevLogTerm=-1,
                             entries=[Command('1', 1)],
                             leaderCommit=1,
                             fromLeader='second')
     actions = self.raft.receive(message)
     self.assertEqual(actions, [
         Ack(term=2, reply_to=message),
         StateUpdate(
             [Command('1', term=1)], commitIndex=1, term=2, prevLogIndex=-1)
     ])
Example #2
0
 def test_answers_negative_when_log_desnt_match(self):
     action = StateUpdate(
         log=[Command('w', 1),
              Command('y', 2),
              Command('q', 2)],
         prevLogIndex=-1)
     # action.perform(None, self.raft.state)
     message = UpdateMessage(term=3,
                             leaderCommit=2,
                             fromLeader='first',
                             prevLogIndex=2,
                             prevLogTerm=3,
                             entries=[Command('q', 3),
                                      Command('z', 3)])
     answer = self.raft.receive(message)
     self.assertEqual(answer[0].__class__, Nack)
     self.assertEqual(self.raft.state.log, [])
Example #3
0
 def test_old_term_follower_ignore(self):
     self.raft.state.votedFor = 'second'
     self.raft.state.term = 1
     message = UpdateMessage(term=0,
                             prevLogIndex=0,
                             prevLogTerm=0,
                             entries=[Command('1', 1)],
                             leaderCommit=1,
                             fromLeader='second')
     actions = self.raft.receive(message)
     self.assertEqual(actions, [Nack(term=1, reply_to=message)])
Example #4
0
 def test_follower_match_log_vote(self):
     self.raft.state.votedFor = 'second'
     self.raft.state.term = 0
     self.raft.state.log = [Command('1', term=1)]
     message = RequestVoteMessage(
         term=1,
         name='third',
         lastLogIndex=0,
         lastLogTerm=1,
     )
     actions = self.raft.receive(message)
     self.assertEqual(actions, [
         ElectionVote(
             name='first', term=1, reply_to=message, voteGranted=True),
         StateUpdate(votedFor='third', term=1)
     ])
Example #5
0
 def __init__(self, parent=None):
     # pyqt必要的代码
     self.app = QApplication(sys.argv)
     QMainWindow.__init__(self, parent)
     self.ui = main_gui.Ui_MainWindow()
     self.ui.setupUi(self)
     # 程序功能模块(core.py)初始化
     self.afk = Command()
     # 让功能模块(core.py)也能访问UI
     self.afk.utils.ui = self.ui
     # GUI数值初始化
     self.init_interface()
     # 信号初始化
     self.init_signal()
     # 显示GUI
     self.show()
     self.write_log("程序核心初始化完成!")
     # 加载图片资源
     self.afk.utils.load_res()
     self.write_log("图片资源加载完成!")
     self.write_log("afk-arena-tools是开源软件,如果有任何问题建议想法,欢迎提issue或PR~")
     # 检查更新
     Thread(target=self.check_update).start()
     sys.exit(self.app.exec_())
Example #6
0
 def init_core(self):
     self.afk = Command()