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 <alejo.sanchez@scylladb.com>
This commit is contained in:
Alejo Sanchez
2021-03-23 01:52:32 -04:00
parent 1a1d7ab662
commit 7e6807e8fc
2 changed files with 6 additions and 2 deletions

View File

@@ -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<leader>(_state);
}

View File

@@ -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;