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]);
} }
......
This diff is collapsed.
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