integration_test.rs 1.2 KB

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