integration_test.rs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #![cfg(feature = "integration-test")]
  2. use crate::{
  3. AppendEntriesArgs, AppendEntriesReply, IndexTerm, Peer, Persister, Raft,
  4. RequestVoteArgs, RequestVoteReply, Term,
  5. };
  6. use std::sync::Arc;
  7. pub fn make_request_vote_args(
  8. term: Term,
  9. peer_id: usize,
  10. last_log_index: usize,
  11. last_log_term: Term,
  12. ) -> RequestVoteArgs {
  13. RequestVoteArgs {
  14. term,
  15. candidate_id: Peer(peer_id),
  16. last_log_index,
  17. last_log_term,
  18. prevote: false,
  19. }
  20. }
  21. pub fn make_append_entries_args<Command>(
  22. term: Term,
  23. leader_id: usize,
  24. prev_log_index: usize,
  25. prev_log_term: Term,
  26. leader_commit: usize,
  27. ) -> AppendEntriesArgs<Command> {
  28. AppendEntriesArgs {
  29. term,
  30. leader_id: Peer(leader_id),
  31. prev_log_index,
  32. prev_log_term,
  33. entries: vec![],
  34. leader_commit,
  35. }
  36. }
  37. pub fn unpack_request_vote_reply(reply: RequestVoteReply) -> (Term, bool) {
  38. (reply.term, reply.vote_granted)
  39. }
  40. pub fn unpack_append_entries_args<T>(
  41. request: AppendEntriesArgs<T>,
  42. ) -> Option<IndexTerm> {
  43. request.entries.last().map(|e| e.into())
  44. }
  45. pub fn unpack_append_entries_reply(reply: AppendEntriesReply) -> (Term, bool) {
  46. (reply.term, reply.success)
  47. }
  48. impl<Command> Raft<Command> {
  49. pub fn persister(&self) -> Arc<dyn Persister> {
  50. self.persister.clone()
  51. }
  52. }