Commit 763799c5 authored by Willem Thiart's avatar Willem Thiart
Browse files

Refactor, add more asserts

parent 97c91833
...@@ -162,7 +162,8 @@ raft_entry_t* raft_get_entry_from_idx(raft_server_t* me_, int etyidx) ...@@ -162,7 +162,8 @@ raft_entry_t* raft_get_entry_from_idx(raft_server_t* me_, int etyidx)
} }
int raft_recv_appendentries_response(raft_server_t* me_, int raft_recv_appendentries_response(raft_server_t* me_,
int node_idx, msg_appendentries_response_t* r) int node_idx,
msg_appendentries_response_t* r)
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
...@@ -444,7 +445,8 @@ int raft_votes_is_majority(const int num_nodes, const int nvotes) ...@@ -444,7 +445,8 @@ int raft_votes_is_majority(const int num_nodes, const int nvotes)
return half + 1 <= nvotes; return half + 1 <= nvotes;
} }
int raft_recv_requestvote_response(raft_server_t* me_, int node, int raft_recv_requestvote_response(raft_server_t* me_,
int node,
msg_requestvote_response_t* r) msg_requestvote_response_t* r)
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
......
...@@ -94,6 +94,8 @@ int raft_get_current_idx(raft_server_t* me_) ...@@ -94,6 +94,8 @@ int raft_get_current_idx(raft_server_t* me_)
void raft_set_commit_idx(raft_server_t* me_, int idx) void raft_set_commit_idx(raft_server_t* me_, int idx)
{ {
raft_server_private_t* me = (raft_server_private_t*)me_; raft_server_private_t* me = (raft_server_private_t*)me_;
assert(me->commit_idx <= idx);
assert(idx <= raft_get_current_idx(me_));
me->commit_idx = idx; me->commit_idx = idx;
} }
......
...@@ -270,23 +270,23 @@ void TestRaft_server_wont_apply_entry_if_there_isnt_a_majority(CuTest* tc) ...@@ -270,23 +270,23 @@ 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_entry_t ety;
void *r = raft_new(); void *r = raft_new();
/* must be follower */ /* must be follower */
raft_set_state(r, RAFT_STATE_FOLLOWER); raft_set_state(r, RAFT_STATE_FOLLOWER);
raft_set_current_term(r, 1); raft_set_current_term(r, 1);
raft_set_commit_idx(r, 1);
raft_set_last_applied_idx(r, 0); raft_set_last_applied_idx(r, 0);
/* need at least one entry */ /* need at least one entry */
raft_entry_t ety;
ety.term = 1; ety.term = 1;
ety.id = 1; ety.id = 1;
ety.data.buf = "aaa"; ety.data.buf = "aaa";
ety.data.len = 3; ety.data.len = 3;
raft_append_entry(r, &ety); raft_append_entry(r, &ety);
raft_set_commit_idx(r, 1);
/* let time lapse */ /* let time lapse */
raft_periodic(r, 1); raft_periodic(r, 1);
CuAssertTrue(tc, 0 != raft_get_last_applied_idx(r)); CuAssertTrue(tc, 0 != raft_get_last_applied_idx(r));
...@@ -295,19 +295,16 @@ void TestRaft_server_increment_lastApplied_when_lastApplied_lt_commitidx( ...@@ -295,19 +295,16 @@ 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_entry_t ety;
char *str = "aaa";
ety.term = 1;
void *r = raft_new(); void *r = raft_new();
raft_set_commit_idx(r, 1);
raft_set_last_applied_idx(r, 0); raft_set_last_applied_idx(r, 0);
raft_entry_t ety;
ety.term = 1;
ety.id = 1; ety.id = 1;
ety.data.buf = str; ety.data.buf = "aaa";
ety.data.len = 3; ety.data.len = 3;
raft_append_entry(r, &ety); raft_append_entry(r, &ety);
raft_set_commit_idx(r, 1);
raft_apply_entry(r); raft_apply_entry(r);
CuAssertTrue(tc, 1 == raft_get_last_applied_idx(r)); CuAssertTrue(tc, 1 == raft_get_last_applied_idx(r));
} }
...@@ -744,8 +741,6 @@ void TestRaft_follower_recv_appendentries_reply_false_if_doesnt_have_log_at_prev ...@@ -744,8 +741,6 @@ void TestRaft_follower_recv_appendentries_reply_false_if_doesnt_have_log_at_prev
/* term is different from appendentries */ /* term is different from appendentries */
raft_set_current_term(r, 2); raft_set_current_term(r, 2);
raft_set_commit_idx(r, 1);
raft_set_last_applied_idx(r, 1);
// TODO at log manually? // TODO at log manually?
/* log idx that server doesn't have */ /* log idx that server doesn't have */
...@@ -1581,6 +1576,19 @@ void TestRaft_leader_sends_appendentries_with_leader_commit( ...@@ -1581,6 +1576,19 @@ void TestRaft_leader_sends_appendentries_with_leader_commit(
/* i'm leader */ /* i'm leader */
raft_set_state(r, RAFT_STATE_LEADER); raft_set_state(r, RAFT_STATE_LEADER);
int i;
for (i=0; i<10; i++)
{
raft_entry_t ety;
ety.term = 1;
ety.id = 1;
ety.data.buf = "aaa";
ety.data.len = 3;
raft_append_entry(r, &ety);
}
raft_set_commit_idx(r, 10); raft_set_commit_idx(r, 10);
/* receive appendentries messages */ /* receive appendentries messages */
......
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