Commit c3443aac authored by Willem Thiart's avatar Willem Thiart
Browse files

Change: code now assumes callbacks are provided

Beforehand there were if statements to check if callbacks were provided
by the user. This was only useful for making the test suites shorter.
These if statements have been removed so that the core code is more
concise.
parent 15c3fbef
...@@ -674,8 +674,8 @@ int raft_send_requestvote(raft_server_t* me_, raft_node_t* node) ...@@ -674,8 +674,8 @@ int raft_send_requestvote(raft_server_t* me_, raft_node_t* node)
rv.last_log_idx = raft_get_current_idx(me_); rv.last_log_idx = raft_get_current_idx(me_);
rv.last_log_term = raft_get_last_log_term(me_); rv.last_log_term = raft_get_last_log_term(me_);
rv.candidate_id = raft_get_nodeid(me_); rv.candidate_id = raft_get_nodeid(me_);
if (me->cb.send_requestvote) assert(me->cb.send_requestvote);
me->cb.send_requestvote(me_, me->udata, node, &rv); me->cb.send_requestvote(me_, me->udata, node, &rv);
return 0; return 0;
} }
...@@ -707,12 +707,10 @@ int raft_apply_entry(raft_server_t* me_) ...@@ -707,12 +707,10 @@ int raft_apply_entry(raft_server_t* me_)
me->last_applied_idx, ety->id, ety->data.len); me->last_applied_idx, ety->id, ety->data.len);
me->last_applied_idx++; me->last_applied_idx++;
if (me->cb.applylog) assert(me->cb.applylog);
{ int e = me->cb.applylog(me_, me->udata, ety, me->last_applied_idx - 1);
int e = me->cb.applylog(me_, me->udata, ety, me->last_applied_idx - 1); if (RAFT_ERR_SHUTDOWN == e)
if (RAFT_ERR_SHUTDOWN == e) return RAFT_ERR_SHUTDOWN;
return RAFT_ERR_SHUTDOWN;
}
/* Membership Change: confirm connection with cluster */ /* Membership Change: confirm connection with cluster */
if (RAFT_LOGTYPE_ADD_NODE == ety->type) if (RAFT_LOGTYPE_ADD_NODE == ety->type)
...@@ -743,9 +741,6 @@ int raft_send_appendentries(raft_server_t* me_, raft_node_t* node) ...@@ -743,9 +741,6 @@ int raft_send_appendentries(raft_server_t* me_, raft_node_t* node)
assert(node); assert(node);
assert(node != me->node); assert(node != me->node);
if (!(me->cb.send_appendentries))
return -1;
msg_appendentries_t ae = {}; msg_appendentries_t ae = {};
ae.term = me->current_term; ae.term = me->current_term;
ae.leader_commit = raft_get_commit_idx(me_); ae.leader_commit = raft_get_commit_idx(me_);
...@@ -773,6 +768,7 @@ int raft_send_appendentries(raft_server_t* me_, raft_node_t* node) ...@@ -773,6 +768,7 @@ int raft_send_appendentries(raft_server_t* me_, raft_node_t* node)
ae.prev_log_idx, ae.prev_log_idx,
ae.prev_log_term); ae.prev_log_term);
assert(me->cb.send_appendentries);
me->cb.send_appendentries(me_, me->udata, node, &ae); me->cb.send_appendentries(me_, me->udata, node, &ae);
return 0; return 0;
...@@ -885,8 +881,8 @@ void raft_vote_for_nodeid(raft_server_t* me_, const int nodeid) ...@@ -885,8 +881,8 @@ void raft_vote_for_nodeid(raft_server_t* me_, const int nodeid)
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
me->voted_for = nodeid; me->voted_for = nodeid;
if (me->cb.persist_vote) assert(me->cb.persist_vote);
me->cb.persist_vote(me_, me->udata, nodeid); me->cb.persist_vote(me_, me->udata, nodeid);
} }
int raft_msg_entry_response_committed(raft_server_t* me_, int raft_msg_entry_response_committed(raft_server_t* me_,
......
...@@ -88,8 +88,8 @@ void raft_set_current_term(raft_server_t* me_, const int term) ...@@ -88,8 +88,8 @@ void raft_set_current_term(raft_server_t* me_, const int term)
{ {
me->current_term = term; me->current_term = term;
me->voted_for = -1; me->voted_for = -1;
if (me->cb.persist_term) assert(me->cb.persist_term);
me->cb.persist_term(me_, me->udata, term); me->cb.persist_term(me_, me->udata, term);
} }
} }
......
...@@ -11,6 +11,24 @@ ...@@ -11,6 +11,24 @@
#include "raft_private.h" #include "raft_private.h"
#include "mock_send_functions.h" #include "mock_send_functions.h"
static int __raft_persist_term(
raft_server_t* raft,
void *udata,
const int val
)
{
return 0;
}
static int __raft_persist_vote(
raft_server_t* raft,
void *udata,
const int val
)
{
return 0;
}
void TestRaft_scenario_leader_appears(CuTest * tc) void TestRaft_scenario_leader_appears(CuTest * tc)
{ {
unsigned long i, j; unsigned long i, j;
...@@ -34,6 +52,8 @@ void TestRaft_scenario_leader_appears(CuTest * tc) ...@@ -34,6 +52,8 @@ void TestRaft_scenario_leader_appears(CuTest * tc)
&((raft_cbs_t) { &((raft_cbs_t) {
.send_requestvote = sender_requestvote, .send_requestvote = sender_requestvote,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.log = NULL .log = NULL
}), sender[j]); }), sender[j]);
} }
......
...@@ -14,9 +14,60 @@ ...@@ -14,9 +14,60 @@
// TODO: leader doesn't timeout and cause election // TODO: leader doesn't timeout and cause election
static int __raft_persist_term(
raft_server_t* raft,
void *udata,
const int val
)
{
return 0;
}
static int __raft_persist_vote(
raft_server_t* raft,
void *udata,
const int val
)
{
return 0;
}
int __raft_applylog(
raft_server_t* raft,
void *udata,
raft_entry_t *ety,
int idx
)
{
return 0;
}
int __raft_send_requestvote(raft_server_t* raft,
void* udata,
raft_node_t* node,
msg_requestvote_t* msg)
{
return 0;
}
int __raft_send_appendentries(raft_server_t* raft,
void* udata,
raft_node_t* node,
msg_appendentries_t* msg)
{
return 0;
}
raft_cbs_t generic_funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void TestRaft_server_voted_for_records_who_we_voted_for(CuTest * tc) void TestRaft_server_voted_for_records_who_we_voted_for(CuTest * tc)
{ {
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &generic_funcs, NULL);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_vote(r, raft_get_node(r, 2)); raft_vote(r, raft_get_node(r, 2));
CuAssertTrue(tc, 2 == raft_get_voted_for(r)); CuAssertTrue(tc, 2 == raft_get_voted_for(r));
...@@ -53,6 +104,7 @@ void TestRaft_server_currentterm_defaults_to_0(CuTest * tc) ...@@ -53,6 +104,7 @@ void TestRaft_server_currentterm_defaults_to_0(CuTest * tc)
void TestRaft_server_set_currentterm_sets_term(CuTest * tc) void TestRaft_server_set_currentterm_sets_term(CuTest * tc)
{ {
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &generic_funcs, NULL);
raft_set_current_term(r, 5); raft_set_current_term(r, 5);
CuAssertTrue(tc, 5 == raft_get_current_term(r)); CuAssertTrue(tc, 5 == raft_get_current_term(r));
} }
...@@ -60,6 +112,7 @@ void TestRaft_server_set_currentterm_sets_term(CuTest * tc) ...@@ -60,6 +112,7 @@ void TestRaft_server_set_currentterm_sets_term(CuTest * tc)
void TestRaft_server_voting_results_in_voting(CuTest * tc) void TestRaft_server_voting_results_in_voting(CuTest * tc)
{ {
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &generic_funcs, NULL);
raft_add_node(r, NULL, 1, 0); raft_add_node(r, NULL, 1, 0);
raft_add_node(r, NULL, 9, 0); raft_add_node(r, NULL, 9, 0);
...@@ -126,6 +179,7 @@ void TestRaft_server_remove_node(CuTest * tc) ...@@ -126,6 +179,7 @@ void TestRaft_server_remove_node(CuTest * tc)
void TestRaft_election_start_increments_term(CuTest * tc) void TestRaft_election_start_increments_term(CuTest * tc)
{ {
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &generic_funcs, NULL);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
raft_election_start(r); raft_election_start(r);
CuAssertTrue(tc, 2 == raft_get_current_term(r)); CuAssertTrue(tc, 2 == raft_get_current_term(r));
...@@ -191,6 +245,7 @@ void TestRaft_server_append_entry_means_entry_gets_current_term(CuTest* tc) ...@@ -191,6 +245,7 @@ void TestRaft_server_append_entry_means_entry_gets_current_term(CuTest* tc)
void TestRaft_server_append_entry_is_retrievable(CuTest * tc) void TestRaft_server_append_entry_is_retrievable(CuTest * tc)
{ {
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &generic_funcs, NULL);
raft_set_state(r, RAFT_STATE_CANDIDATE); raft_set_state(r, RAFT_STATE_CANDIDATE);
raft_set_current_term(r, 5); raft_set_current_term(r, 5);
...@@ -223,6 +278,7 @@ void TestRaft_server_append_entry_user_can_set_data_buf(CuTest * tc) ...@@ -223,6 +278,7 @@ void TestRaft_server_append_entry_user_can_set_data_buf(CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.log_offer = __raft_logentry_offer, .log_offer = __raft_logentry_offer,
.persist_term = __raft_persist_term,
}; };
void *r = raft_new(); void *r = raft_new();
...@@ -337,7 +393,13 @@ void TestRaft_server_wont_apply_entry_if_there_isnt_a_majority(CuTest* tc) ...@@ -337,7 +393,13 @@ void TestRaft_server_wont_apply_entry_if_there_isnt_a_majority(CuTest* tc)
void TestRaft_server_increment_lastApplied_when_lastApplied_lt_commitidx( void TestRaft_server_increment_lastApplied_when_lastApplied_lt_commitidx(
CuTest* tc) CuTest* tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.applylog = __raft_applylog,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
/* must be follower */ /* must be follower */
raft_set_state(r, RAFT_STATE_FOLLOWER); raft_set_state(r, RAFT_STATE_FOLLOWER);
...@@ -362,7 +424,12 @@ void TestRaft_server_increment_lastApplied_when_lastApplied_lt_commitidx( ...@@ -362,7 +424,12 @@ void TestRaft_server_increment_lastApplied_when_lastApplied_lt_commitidx(
void TestRaft_server_apply_entry_increments_last_applied_idx(CuTest* tc) void TestRaft_server_apply_entry_increments_last_applied_idx(CuTest* tc)
{ {
raft_cbs_t funcs = {
.applylog = __raft_applylog,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_set_last_applied_idx(r, 0); raft_set_last_applied_idx(r, 0);
raft_entry_t ety = {}; raft_entry_t ety = {};
...@@ -392,7 +459,15 @@ void TestRaft_server_periodic_elapses_election_timeout(CuTest * tc) ...@@ -392,7 +459,15 @@ void TestRaft_server_periodic_elapses_election_timeout(CuTest * tc)
void TestRaft_server_election_timeout_does_not_promote_us_to_leader_if_there_is_are_more_than_1_nodes(CuTest * tc) void TestRaft_server_election_timeout_does_not_promote_us_to_leader_if_there_is_are_more_than_1_nodes(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
...@@ -443,7 +518,13 @@ void TestRaft_server_election_timeout_does_promote_us_to_leader_if_there_is_only ...@@ -443,7 +518,13 @@ void TestRaft_server_election_timeout_does_promote_us_to_leader_if_there_is_only
void TestRaft_server_election_timeout_does_promote_us_to_leader_if_there_is_only_1_voting_node(CuTest * tc) void TestRaft_server_election_timeout_does_promote_us_to_leader_if_there_is_only_1_voting_node(CuTest * tc)
{ {
raft_cbs_t funcs = {
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_non_voting_node(r, NULL, 2, 0); raft_add_non_voting_node(r, NULL, 2, 0);
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
...@@ -547,7 +628,14 @@ void TestRaft_server_recv_requestvote_response_dont_increase_votes_for_me_when_n ...@@ -547,7 +628,14 @@ void TestRaft_server_recv_requestvote_response_dont_increase_votes_for_me_when_n
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -566,7 +654,14 @@ void TestRaft_server_recv_requestvote_response_dont_increase_votes_for_me_when_t ...@@ -566,7 +654,14 @@ void TestRaft_server_recv_requestvote_response_dont_increase_votes_for_me_when_t
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 3); raft_set_current_term(r, 3);
...@@ -584,7 +679,16 @@ void TestRaft_server_recv_requestvote_response_increase_votes_for_me( ...@@ -584,7 +679,16 @@ void TestRaft_server_recv_requestvote_response_increase_votes_for_me(
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -608,7 +712,15 @@ void TestRaft_server_recv_requestvote_response_must_be_candidate_to_receive( ...@@ -608,7 +712,15 @@ void TestRaft_server_recv_requestvote_response_must_be_candidate_to_receive(
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -629,9 +741,16 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term ...@@ -629,9 +741,16 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
CuTest * tc CuTest * tc
) )
{ {
msg_requestvote_response_t rvr; raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_requestvote_response_t rvr;
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 2); raft_set_current_term(r, 2);
...@@ -649,9 +768,17 @@ void TestRaft_leader_recv_requestvote_does_not_step_down( ...@@ -649,9 +768,17 @@ void TestRaft_leader_recv_requestvote_does_not_step_down(
CuTest * tc CuTest * tc
) )
{ {
msg_requestvote_response_t rvr; raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_requestvote_response_t rvr;
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -675,7 +802,14 @@ void TestRaft_server_recv_requestvote_reply_true_if_term_greater_than_or_equal_t ...@@ -675,7 +802,14 @@ void TestRaft_server_recv_requestvote_reply_true_if_term_greater_than_or_equal_t
msg_requestvote_t rv; msg_requestvote_t rv;
msg_requestvote_response_t rvr; msg_requestvote_response_t rvr;
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -696,7 +830,14 @@ void TestRaft_server_recv_requestvote_reset_timeout( ...@@ -696,7 +830,14 @@ void TestRaft_server_recv_requestvote_reset_timeout(
msg_requestvote_t rv; msg_requestvote_t rv;
msg_requestvote_response_t rvr; msg_requestvote_response_t rvr;
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -716,7 +857,15 @@ void TestRaft_server_recv_requestvote_candidate_step_down_if_term_is_higher_than ...@@ -716,7 +857,15 @@ void TestRaft_server_recv_requestvote_candidate_step_down_if_term_is_higher_than
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_become_candidate(r); raft_become_candidate(r);
...@@ -740,7 +889,15 @@ void TestRaft_server_recv_requestvote_depends_on_candidate_id( ...@@ -740,7 +889,15 @@ void TestRaft_server_recv_requestvote_depends_on_candidate_id(
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_become_candidate(r); raft_become_candidate(r);
...@@ -766,7 +923,14 @@ void TestRaft_server_recv_requestvote_dont_grant_vote_if_we_didnt_vote_for_this_ ...@@ -766,7 +923,14 @@ void TestRaft_server_recv_requestvote_dont_grant_vote_if_we_didnt_vote_for_this_
CuTest * tc CuTest * tc
) )
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 0, 0); raft_add_node(r, NULL, 0, 0);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -799,7 +963,14 @@ void TestRaft_follower_becomes_follower_is_follower(CuTest * tc) ...@@ -799,7 +963,14 @@ void TestRaft_follower_becomes_follower_is_follower(CuTest * tc)
void TestRaft_follower_becomes_follower_does_not_clear_voted_for(CuTest * tc) void TestRaft_follower_becomes_follower_does_not_clear_voted_for(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_vote(r, raft_get_node(r, 1)); raft_vote(r, raft_get_node(r, 1));
...@@ -812,7 +983,13 @@ void TestRaft_follower_becomes_follower_does_not_clear_voted_for(CuTest * tc) ...@@ -812,7 +983,13 @@ void TestRaft_follower_becomes_follower_does_not_clear_voted_for(CuTest * tc)
void TestRaft_follower_recv_appendentries_reply_false_if_term_less_than_currentterm( void TestRaft_follower_recv_appendentries_reply_false_if_term_less_than_currentterm(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
/* no leader known at this point */ /* no leader known at this point */
...@@ -835,7 +1012,13 @@ void TestRaft_follower_recv_appendentries_reply_false_if_term_less_than_currentt ...@@ -835,7 +1012,13 @@ void TestRaft_follower_recv_appendentries_reply_false_if_term_less_than_currentt
void TestRaft_follower_recv_appendentries_does_not_need_node(CuTest * tc) void TestRaft_follower_recv_appendentries_does_not_need_node(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
msg_appendentries_t ae = {}; msg_appendentries_t ae = {};
...@@ -849,10 +1032,16 @@ void TestRaft_follower_recv_appendentries_does_not_need_node(CuTest * tc) ...@@ -849,10 +1032,16 @@ void TestRaft_follower_recv_appendentries_does_not_need_node(CuTest * tc)
void TestRaft_follower_recv_appendentries_updates_currentterm_if_term_gt_currentterm( void TestRaft_follower_recv_appendentries_updates_currentterm_if_term_gt_currentterm(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -879,10 +1068,16 @@ void TestRaft_follower_recv_appendentries_updates_currentterm_if_term_gt_current ...@@ -879,10 +1068,16 @@ void TestRaft_follower_recv_appendentries_updates_currentterm_if_term_gt_current
void TestRaft_follower_recv_appendentries_does_not_log_if_no_entries_are_specified( void TestRaft_follower_recv_appendentries_does_not_log_if_no_entries_are_specified(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -905,12 +1100,18 @@ void TestRaft_follower_recv_appendentries_does_not_log_if_no_entries_are_specifi ...@@ -905,12 +1100,18 @@ void TestRaft_follower_recv_appendentries_does_not_log_if_no_entries_are_specifi
void TestRaft_follower_recv_appendentries_increases_log(CuTest * tc) void TestRaft_follower_recv_appendentries_increases_log(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_entry_t ety = {}; msg_entry_t ety = {};
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
char *str = "aaa"; char *str = "aaa";
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -947,13 +1148,19 @@ void TestRaft_follower_recv_appendentries_increases_log(CuTest * tc) ...@@ -947,13 +1148,19 @@ void TestRaft_follower_recv_appendentries_increases_log(CuTest * tc)
void TestRaft_follower_recv_appendentries_reply_false_if_doesnt_have_log_at_prev_log_idx_which_matches_prev_log_term( void TestRaft_follower_recv_appendentries_reply_false_if_doesnt_have_log_at_prev_log_idx_which_matches_prev_log_term(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_entry_t ety = {}; msg_entry_t ety = {};
char *str = "aaa"; char *str = "aaa";
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1028,10 +1235,16 @@ static raft_entry_t* __create_mock_entries_for_conflict_tests( ...@@ -1028,10 +1235,16 @@ static raft_entry_t* __create_mock_entries_for_conflict_tests(
void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_entries_via_prev_log_idx( void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_entries_via_prev_log_idx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1071,10 +1284,16 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_en ...@@ -1071,10 +1284,16 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_en
void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_entries_via_prev_log_idx_at_idx_0( void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_entries_via_prev_log_idx_at_idx_0(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1111,10 +1330,16 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_en ...@@ -1111,10 +1330,16 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_conflict_with_new_en
void TestRaft_follower_recv_appendentries_delete_entries_if_current_idx_greater_than_prev_log_idx( void TestRaft_follower_recv_appendentries_delete_entries_if_current_idx_greater_than_prev_log_idx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1144,7 +1369,13 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_current_idx_greater_ ...@@ -1144,7 +1369,13 @@ void TestRaft_follower_recv_appendentries_delete_entries_if_current_idx_greater_
void TestRaft_follower_recv_appendentries_add_new_entries_not_already_in_log( void TestRaft_follower_recv_appendentries_add_new_entries_not_already_in_log(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -1172,7 +1403,13 @@ void TestRaft_follower_recv_appendentries_add_new_entries_not_already_in_log( ...@@ -1172,7 +1403,13 @@ void TestRaft_follower_recv_appendentries_add_new_entries_not_already_in_log(
void TestRaft_follower_recv_appendentries_does_not_add_dupe_entries_already_in_log( void TestRaft_follower_recv_appendentries_does_not_add_dupe_entries_already_in_log(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -1212,7 +1449,13 @@ void TestRaft_follower_recv_appendentries_does_not_add_dupe_entries_already_in_l ...@@ -1212,7 +1449,13 @@ void TestRaft_follower_recv_appendentries_does_not_add_dupe_entries_already_in_l
void TestRaft_follower_recv_appendentries_set_commitidx_to_prevLogIdx( void TestRaft_follower_recv_appendentries_set_commitidx_to_prevLogIdx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1255,7 +1498,13 @@ void TestRaft_follower_recv_appendentries_set_commitidx_to_prevLogIdx( ...@@ -1255,7 +1498,13 @@ void TestRaft_follower_recv_appendentries_set_commitidx_to_prevLogIdx(
void TestRaft_follower_recv_appendentries_set_commitidx_to_LeaderCommit( void TestRaft_follower_recv_appendentries_set_commitidx_to_LeaderCommit(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1298,7 +1547,13 @@ void TestRaft_follower_recv_appendentries_set_commitidx_to_LeaderCommit( ...@@ -1298,7 +1547,13 @@ void TestRaft_follower_recv_appendentries_set_commitidx_to_LeaderCommit(
void TestRaft_follower_recv_appendentries_failure_includes_current_idx( void TestRaft_follower_recv_appendentries_failure_includes_current_idx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
...@@ -1336,7 +1591,14 @@ void TestRaft_follower_recv_appendentries_failure_includes_current_idx( ...@@ -1336,7 +1591,14 @@ void TestRaft_follower_recv_appendentries_failure_includes_current_idx(
void TestRaft_follower_becomes_candidate_when_election_timeout_occurs( void TestRaft_follower_becomes_candidate_when_election_timeout_occurs(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
/* 1 second election timeout */ /* 1 second election timeout */
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
...@@ -1358,7 +1620,14 @@ void TestRaft_follower_dont_grant_vote_if_candidate_has_a_less_complete_log( ...@@ -1358,7 +1620,14 @@ void TestRaft_follower_dont_grant_vote_if_candidate_has_a_less_complete_log(
msg_requestvote_t rv; msg_requestvote_t rv;
msg_requestvote_response_t rvr; msg_requestvote_response_t rvr;
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1400,7 +1669,14 @@ void TestRaft_follower_dont_grant_vote_if_candidate_has_a_less_complete_log( ...@@ -1400,7 +1669,14 @@ void TestRaft_follower_dont_grant_vote_if_candidate_has_a_less_complete_log(
void TestRaft_candidate_becomes_candidate_is_candidate(CuTest * tc) void TestRaft_candidate_becomes_candidate_is_candidate(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_become_candidate(r); raft_become_candidate(r);
CuAssertTrue(tc, raft_is_candidate(r)); CuAssertTrue(tc, raft_is_candidate(r));
} }
...@@ -1408,7 +1684,14 @@ void TestRaft_candidate_becomes_candidate_is_candidate(CuTest * tc) ...@@ -1408,7 +1684,14 @@ void TestRaft_candidate_becomes_candidate_is_candidate(CuTest * tc)
/* Candidate 5.2 */ /* Candidate 5.2 */
void TestRaft_follower_becoming_candidate_increments_current_term(CuTest * tc) void TestRaft_follower_becoming_candidate_increments_current_term(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
CuAssertTrue(tc, 0 == raft_get_current_term(r)); CuAssertTrue(tc, 0 == raft_get_current_term(r));
raft_become_candidate(r); raft_become_candidate(r);
CuAssertTrue(tc, 1 == raft_get_current_term(r)); CuAssertTrue(tc, 1 == raft_get_current_term(r));
...@@ -1417,7 +1700,14 @@ void TestRaft_follower_becoming_candidate_increments_current_term(CuTest * tc) ...@@ -1417,7 +1700,14 @@ void TestRaft_follower_becoming_candidate_increments_current_term(CuTest * tc)
/* Candidate 5.2 */ /* Candidate 5.2 */
void TestRaft_follower_becoming_candidate_votes_for_self(CuTest * tc) void TestRaft_follower_becoming_candidate_votes_for_self(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
CuAssertTrue(tc, -1 == raft_get_voted_for(r)); CuAssertTrue(tc, -1 == raft_get_voted_for(r));
raft_become_candidate(r); raft_become_candidate(r);
...@@ -1428,7 +1718,14 @@ void TestRaft_follower_becoming_candidate_votes_for_self(CuTest * tc) ...@@ -1428,7 +1718,14 @@ void TestRaft_follower_becoming_candidate_votes_for_self(CuTest * tc)
/* Candidate 5.2 */ /* Candidate 5.2 */
void TestRaft_follower_becoming_candidate_resets_election_timeout(CuTest * tc) void TestRaft_follower_becoming_candidate_resets_election_timeout(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
CuAssertTrue(tc, 0 == raft_get_timeout_elapsed(r)); CuAssertTrue(tc, 0 == raft_get_timeout_elapsed(r));
...@@ -1443,7 +1740,14 @@ void TestRaft_follower_becoming_candidate_resets_election_timeout(CuTest * tc) ...@@ -1443,7 +1740,14 @@ void TestRaft_follower_becoming_candidate_resets_election_timeout(CuTest * tc)
void TestRaft_follower_recv_appendentries_resets_election_timeout( void TestRaft_follower_recv_appendentries_resets_election_timeout(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 1); raft_add_node(r, NULL, 2, 1);
...@@ -1464,6 +1768,8 @@ void TestRaft_follower_becoming_candidate_requests_votes_from_other_servers( ...@@ -1464,6 +1768,8 @@ void TestRaft_follower_becoming_candidate_requests_votes_from_other_servers(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = sender_requestvote, .send_requestvote = sender_requestvote,
}; };
msg_requestvote_t* rv; msg_requestvote_t* rv;
...@@ -1496,12 +1802,20 @@ void TestRaft_follower_becoming_candidate_requests_votes_from_other_servers( ...@@ -1496,12 +1802,20 @@ void TestRaft_follower_becoming_candidate_requests_votes_from_other_servers(
void TestRaft_candidate_election_timeout_and_no_leader_results_in_new_election( void TestRaft_candidate_election_timeout_and_no_leader_results_in_new_election(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_requestvote_response_t vr; msg_requestvote_response_t vr;
memset(&vr, 0, sizeof(msg_requestvote_response_t)); memset(&vr, 0, sizeof(msg_requestvote_response_t));
vr.term = 0; vr.term = 0;
vr.vote_granted = 1; vr.vote_granted = 1;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_election_timeout(r, 1000); raft_set_election_timeout(r, 1000);
...@@ -1524,7 +1838,16 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc) ...@@ -1524,7 +1838,16 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc)
{ {
msg_requestvote_response_t vr; msg_requestvote_response_t vr;
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_add_node(r, NULL, 3, 0); raft_add_node(r, NULL, 3, 0);
...@@ -1556,10 +1879,17 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc) ...@@ -1556,10 +1879,17 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc)
void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted( void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_requestvote_t rv; msg_requestvote_t rv;
msg_requestvote_response_t rvr; msg_requestvote_response_t rvr;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1577,7 +1907,9 @@ void TestRaft_candidate_requestvote_includes_logidx(CuTest * tc) ...@@ -1577,7 +1907,9 @@ void TestRaft_candidate_requestvote_includes_logidx(CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.send_requestvote = sender_requestvote, .send_requestvote = sender_requestvote,
.log = NULL .log = NULL,
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
}; };
void *sender = sender_new(NULL); void *sender = sender_new(NULL);
...@@ -1613,7 +1945,14 @@ void TestRaft_candidate_requestvote_includes_logidx(CuTest * tc) ...@@ -1613,7 +1945,14 @@ void TestRaft_candidate_requestvote_includes_logidx(CuTest * tc)
void TestRaft_candidate_recv_requestvote_response_becomes_follower_if_current_term_is_less_than_term( void TestRaft_candidate_recv_requestvote_response_becomes_follower_if_current_term_is_less_than_term(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1638,7 +1977,14 @@ void TestRaft_candidate_recv_requestvote_response_becomes_follower_if_current_te ...@@ -1638,7 +1977,14 @@ void TestRaft_candidate_recv_requestvote_response_becomes_follower_if_current_te
void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower( void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1666,10 +2012,18 @@ void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower( ...@@ -1666,10 +2012,18 @@ void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower(
void TestRaft_candidate_recv_appendentries_from_same_term_results_in_step_down( void TestRaft_candidate_recv_appendentries_from_same_term_results_in_step_down(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
.send_requestvote = __raft_send_requestvote,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1709,7 +2063,14 @@ void TestRaft_leader_becomes_leader_is_leader(CuTest * tc) ...@@ -1709,7 +2063,14 @@ void TestRaft_leader_becomes_leader_is_leader(CuTest * tc)
void TestRaft_leader_becomes_leader_does_not_clear_voted_for(CuTest * tc) void TestRaft_leader_becomes_leader_does_not_clear_voted_for(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.persist_vote = __raft_persist_vote,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_vote(r, raft_get_node(r, 1)); raft_vote(r, raft_get_node(r, 1));
CuAssertTrue(tc, 1 == raft_get_voted_for(r)); CuAssertTrue(tc, 1 == raft_get_voted_for(r));
...@@ -1720,7 +2081,13 @@ void TestRaft_leader_becomes_leader_does_not_clear_voted_for(CuTest * tc) ...@@ -1720,7 +2081,13 @@ void TestRaft_leader_becomes_leader_does_not_clear_voted_for(CuTest * tc)
void TestRaft_leader_when_becomes_leader_all_nodes_have_nextidx_equal_to_lastlog_idx_plus_1( void TestRaft_leader_when_becomes_leader_all_nodes_have_nextidx_equal_to_lastlog_idx_plus_1(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_add_node(r, NULL, 3, 0); raft_add_node(r, NULL, 3, 0);
...@@ -1769,9 +2136,15 @@ void TestRaft_leader_when_it_becomes_a_leader_sends_empty_appendentries( ...@@ -1769,9 +2136,15 @@ void TestRaft_leader_when_it_becomes_a_leader_sends_empty_appendentries(
* Note: commit means it's been appended to the log, not applied to the FSM */ * Note: commit means it's been appended to the log, not applied to the FSM */
void TestRaft_leader_responds_to_entry_msg_when_entry_is_committed(CuTest * tc) void TestRaft_leader_responds_to_entry_msg_when_entry_is_committed(CuTest * tc)
{ {
msg_entry_response_t cr; raft_cbs_t funcs = {
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_entry_response_t cr;
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -1997,14 +2370,19 @@ void TestRaft_leader_retries_appendentries_with_decremented_NextIdx_log_inconsis ...@@ -1997,14 +2370,19 @@ void TestRaft_leader_retries_appendentries_with_decremented_NextIdx_log_inconsis
* set commitidx = N (5.2, 5.4). */ * set commitidx = N (5.2, 5.4). */
void TestRaft_leader_append_entry_to_log_increases_idxno(CuTest * tc) void TestRaft_leader_append_entry_to_log_increases_idxno(CuTest * tc)
{ {
msg_entry_response_t cr; raft_cbs_t funcs = {
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_entry_response_t cr;
msg_entry_t ety = {}; msg_entry_t ety = {};
ety.id = 1; ety.id = 1;
ety.data.buf = "entry"; ety.data.buf = "entry";
ety.data.len = strlen("entry"); ety.data.len = strlen("entry");
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_set_state(r, RAFT_STATE_LEADER); raft_set_state(r, RAFT_STATE_LEADER);
...@@ -2050,6 +2428,8 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majori ...@@ -2050,6 +2428,8 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_when_majori
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.applylog = __raft_applylog,
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2126,6 +2506,8 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_using_votin ...@@ -2126,6 +2506,8 @@ void TestRaft_leader_recv_appendentries_response_increase_commit_idx_using_votin
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.applylog = __raft_applylog,
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2177,6 +2559,7 @@ void TestRaft_leader_recv_appendentries_response_duplicate_does_not_decrement_ma ...@@ -2177,6 +2559,7 @@ void TestRaft_leader_recv_appendentries_response_duplicate_does_not_decrement_ma
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2239,6 +2622,8 @@ void TestRaft_leader_recv_appendentries_response_do_not_increase_commit_idx_beca ...@@ -2239,6 +2622,8 @@ void TestRaft_leader_recv_appendentries_response_do_not_increase_commit_idx_beca
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.applylog = __raft_applylog,
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2333,6 +2718,7 @@ void TestRaft_leader_recv_appendentries_response_jumps_to_lower_next_idx( ...@@ -2333,6 +2718,7 @@ void TestRaft_leader_recv_appendentries_response_jumps_to_lower_next_idx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2400,6 +2786,7 @@ void TestRaft_leader_recv_appendentries_response_decrements_to_lower_next_idx( ...@@ -2400,6 +2786,7 @@ void TestRaft_leader_recv_appendentries_response_decrements_to_lower_next_idx(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2479,6 +2866,7 @@ void TestRaft_leader_recv_appendentries_response_decrements_to_lower_next_idx( ...@@ -2479,6 +2866,7 @@ void TestRaft_leader_recv_appendentries_response_decrements_to_lower_next_idx(
void TestRaft_leader_recv_appendentries_response_retry_only_if_leader(CuTest * tc) void TestRaft_leader_recv_appendentries_response_retry_only_if_leader(CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
}; };
...@@ -2525,7 +2913,13 @@ void TestRaft_leader_recv_appendentries_response_retry_only_if_leader(CuTest * t ...@@ -2525,7 +2913,13 @@ void TestRaft_leader_recv_appendentries_response_retry_only_if_leader(CuTest * t
void TestRaft_leader_recv_appendentries_response_without_node_fails(CuTest * tc) void TestRaft_leader_recv_appendentries_response_without_node_fails(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_add_node(r, NULL, 3, 0); raft_add_node(r, NULL, 3, 0);
...@@ -2567,7 +2961,14 @@ void TestRaft_leader_recv_entry_resets_election_timeout( ...@@ -2567,7 +2961,14 @@ void TestRaft_leader_recv_entry_resets_election_timeout(
void TestRaft_leader_recv_entry_is_committed_returns_0_if_not_committed(CuTest * tc) void TestRaft_leader_recv_entry_is_committed_returns_0_if_not_committed(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -2592,7 +2993,14 @@ void TestRaft_leader_recv_entry_is_committed_returns_0_if_not_committed(CuTest * ...@@ -2592,7 +2993,14 @@ void TestRaft_leader_recv_entry_is_committed_returns_0_if_not_committed(CuTest *
void TestRaft_leader_recv_entry_is_committed_returns_neg_1_if_invalidated(CuTest * tc) void TestRaft_leader_recv_entry_is_committed_returns_neg_1_if_invalidated(CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = __raft_send_appendentries,
};
void *r = raft_new(); void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -2645,6 +3053,7 @@ void TestRaft_leader_recv_entry_does_not_send_new_appendentries_to_slow_nodes(Cu ...@@ -2645,6 +3053,7 @@ void TestRaft_leader_recv_entry_does_not_send_new_appendentries_to_slow_nodes(Cu
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
}; };
...@@ -2686,6 +3095,7 @@ void TestRaft_leader_recv_appendentries_response_failure_does_not_set_node_nexti ...@@ -2686,6 +3095,7 @@ void TestRaft_leader_recv_appendentries_response_failure_does_not_set_node_nexti
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2731,6 +3141,7 @@ void TestRaft_leader_recv_appendentries_response_increment_idx_of_node( ...@@ -2731,6 +3141,7 @@ void TestRaft_leader_recv_appendentries_response_increment_idx_of_node(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2762,6 +3173,7 @@ void TestRaft_leader_recv_appendentries_response_drop_message_if_term_is_old( ...@@ -2762,6 +3173,7 @@ void TestRaft_leader_recv_appendentries_response_drop_message_if_term_is_old(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
.log = NULL .log = NULL
}; };
...@@ -2792,10 +3204,16 @@ void TestRaft_leader_recv_appendentries_response_drop_message_if_term_is_old( ...@@ -2792,10 +3204,16 @@ void TestRaft_leader_recv_appendentries_response_drop_message_if_term_is_old(
void TestRaft_leader_recv_appendentries_steps_down_if_newer( void TestRaft_leader_recv_appendentries_steps_down_if_newer(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -2820,10 +3238,16 @@ void TestRaft_leader_recv_appendentries_steps_down_if_newer( ...@@ -2820,10 +3238,16 @@ void TestRaft_leader_recv_appendentries_steps_down_if_newer(
void TestRaft_leader_recv_appendentries_steps_down_if_newer_term( void TestRaft_leader_recv_appendentries_steps_down_if_newer_term(
CuTest * tc) CuTest * tc)
{ {
raft_cbs_t funcs = {
.persist_term = __raft_persist_term,
};
void *r = raft_new();
raft_set_callbacks(r, &funcs, NULL);
msg_appendentries_t ae; msg_appendentries_t ae;
msg_appendentries_response_t aer; msg_appendentries_response_t aer;
void *r = raft_new();
raft_add_node(r, NULL, 1, 1); raft_add_node(r, NULL, 1, 1);
raft_add_node(r, NULL, 2, 0); raft_add_node(r, NULL, 2, 0);
...@@ -2885,6 +3309,9 @@ void T_estRaft_leader_sends_appendentries_when_receive_entry_msg(CuTest * tc) ...@@ -2885,6 +3309,9 @@ void T_estRaft_leader_sends_appendentries_when_receive_entry_msg(CuTest * tc)
void TestRaft_leader_recv_requestvote_responds_without_granting(CuTest * tc) void TestRaft_leader_recv_requestvote_responds_without_granting(CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_vote = __raft_persist_vote,
.persist_term = __raft_persist_term,
.send_requestvote = __raft_send_requestvote,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
}; };
...@@ -2918,6 +3345,9 @@ void TestRaft_leader_recv_requestvote_responds_without_granting(CuTest * tc) ...@@ -2918,6 +3345,9 @@ void TestRaft_leader_recv_requestvote_responds_without_granting(CuTest * tc)
void TestRaft_leader_recv_requestvote_responds_with_granting_if_term_is_higher(CuTest * tc) void TestRaft_leader_recv_requestvote_responds_with_granting_if_term_is_higher(CuTest * tc)
{ {
raft_cbs_t funcs = { raft_cbs_t funcs = {
.persist_vote = __raft_persist_vote,
.persist_term = __raft_persist_term,
.send_requestvote = __raft_send_requestvote,
.send_appendentries = sender_appendentries, .send_appendentries = sender_appendentries,
}; };
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment