From 7e6807e8fcdbcfb64c3d7ffe102e35ff3abc221f Mon Sep 17 00:00:00 2001 From: Alejo Sanchez Date: Tue, 23 Mar 2021 01:52:32 -0400 Subject: [PATCH] raft: testing: make become_follower() available for tests Some etcd tests need to force a follower with a specific leader. Signed-off-by: Alejo Sanchez --- raft/fsm.hh | 5 +++-- test/raft/helpers.hh | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/raft/fsm.hh b/raft/fsm.hh index b5ca4005fd..dc71fdc9d5 100644 --- a/raft/fsm.hh +++ b/raft/fsm.hh @@ -238,8 +238,6 @@ private: void become_candidate(bool is_prevote, bool is_leadership_transfer = false); - void become_follower(server_id leader); - // Controls whether the follower has been responsive recently, // so it makes sense to send more data to it. bool can_send_to(const follower_progress& progress); @@ -277,6 +275,9 @@ private: void send_timeout_now(server_id); protected: // For testing + + void become_follower(server_id leader); + leader& leader_state() { return std::get(_state); } diff --git a/test/raft/helpers.hh b/test/raft/helpers.hh index 83b120f6ce..a660c56277 100644 --- a/test/raft/helpers.hh +++ b/test/raft/helpers.hh @@ -92,6 +92,9 @@ raft::fsm_config fsm_cfg{.append_request_threshold = 1, .enable_prevoting = fals class fsm_debug : public raft::fsm { public: using raft::fsm::fsm; + void become_follower(server_id leader) { + raft::fsm::become_follower(leader); + } const raft::follower_progress& get_progress(server_id id) { raft::follower_progress* progress = leader_state().tracker.find(id); return *progress;