Commit 2a50ff78 authored by Willem Thiart's avatar Willem Thiart
Browse files

Linting; Fixed -Wunused-variable warnings

parent 9eacf4d0
...@@ -8,6 +8,7 @@ GCOV_CCFLAGS = -fprofile-arcs -ftest-coverage ...@@ -8,6 +8,7 @@ GCOV_CCFLAGS = -fprofile-arcs -ftest-coverage
SHELL = /bin/bash SHELL = /bin/bash
CFLAGS += -Iinclude -Werror -Werror=return-type -Werror=uninitialized -Wcast-align \ CFLAGS += -Iinclude -Werror -Werror=return-type -Werror=uninitialized -Wcast-align \
-Wno-pointer-sign -fno-omit-frame-pointer -fno-common -fsigned-char \ -Wno-pointer-sign -fno-omit-frame-pointer -fno-common -fsigned-char \
-Wunused-variable \
$(GCOV_CCFLAGS) -I$(LLQUEUE_DIR) -Iinclude -g -O2 -fPIC $(GCOV_CCFLAGS) -I$(LLQUEUE_DIR) -Iinclude -g -O2 -fPIC
UNAME := $(shell uname) UNAME := $(shell uname)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/** /**
* Copyright (c) 2013, Willem-Hendrik Thiart * Copyright (c) 2013, Willem-Hendrik Thiart
* Use of this source code is governed by a BSD-style license that can be * Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. * found in the LICENSE file.
* *
* @file * @file
* @brief ADT for managing Raft log entries (aka entries) * @brief ADT for managing Raft log entries (aka entries)
...@@ -24,13 +24,13 @@ ...@@ -24,13 +24,13 @@
typedef struct typedef struct
{ {
/* size of array */ /* size of array */
int size; int size;
/* the amount of elements in the array */ /* the amount of elements in the array */
int count; int count;
/* position of the queue */ /* position of the queue */
int front, back; int front, back;
/* we compact the log, and thus need to increment the base idx */ /* we compact the log, and thus need to increment the base idx */
int base_log_idx; int base_log_idx;
...@@ -40,7 +40,7 @@ typedef struct ...@@ -40,7 +40,7 @@ typedef struct
static void __ensurecapacity( static void __ensurecapacity(
log_private_t * me log_private_t * me
) )
{ {
int i, j; int i, j;
raft_entry_t *temp; raft_entry_t *temp;
...@@ -48,7 +48,7 @@ static void __ensurecapacity( ...@@ -48,7 +48,7 @@ static void __ensurecapacity(
if (me->count < me->size) if (me->count < me->size)
return; return;
temp = calloc(1,sizeof(raft_entry_t) * me->size * 2); temp = calloc(1, sizeof(raft_entry_t) * me->size * 2);
for (i = 0, j = me->front; i < me->count; i++, j++) for (i = 0, j = me->front; i < me->count; i++, j++)
{ {
...@@ -70,11 +70,11 @@ log_t* log_new() ...@@ -70,11 +70,11 @@ log_t* log_new()
{ {
log_private_t* me; log_private_t* me;
me = calloc(1,sizeof(log_private_t)); me = calloc(1, sizeof(log_private_t));
me->size = INITIAL_CAPACITY; me->size = INITIAL_CAPACITY;
me->count = 0; me->count = 0;
me->back = in(me)->front = 0; me->back = in(me)->front = 0;
me->entries = calloc(1,sizeof(raft_entry_t) * me->size); me->entries = calloc(1, sizeof(raft_entry_t) * me->size);
return (void*)me; return (void*)me;
} }
...@@ -90,7 +90,7 @@ int log_append_entry(log_t* me_, raft_entry_t* c) ...@@ -90,7 +90,7 @@ int log_append_entry(log_t* me_, raft_entry_t* c)
// if (hashmap_get(me->log_map, (void*)c->id+1)) // if (hashmap_get(me->log_map, (void*)c->id+1))
// return 0; // return 0;
memcpy(&me->entries[me->back],c,sizeof(raft_entry_t)); memcpy(&me->entries[me->back], c, sizeof(raft_entry_t));
me->entries[me->back].num_nodes = 0; me->entries[me->back].num_nodes = 0;
me->count++; me->count++;
me->back++; me->back++;
...@@ -120,13 +120,13 @@ int log_count(log_t* me_) ...@@ -120,13 +120,13 @@ int log_count(log_t* me_)
void log_delete(log_t* me_, int idx) void log_delete(log_t* me_, int idx)
{ {
log_private_t* me = (void*)me_; log_private_t* me = (void*)me_;
int end, i; int end;
/* idx starts at 1 */ /* idx starts at 1 */
idx -= 1; idx -= 1;
idx -= me->base_log_idx; idx -= me->base_log_idx;
for (end = log_count(me_); idx<end; idx++) for (end = log_count(me_); idx < end; idx++)
{ {
me->back--; me->back--;
me->count--; me->count--;
...@@ -145,7 +145,7 @@ void log_delete(log_t* me_, int idx) ...@@ -145,7 +145,7 @@ void log_delete(log_t* me_, int idx)
in(me)->back = in(me)->size; in(me)->back = in(me)->size;
elem = me->entries[in(me)->back]; elem = me->entries[in(me)->back];
return (void *) elem; return (void*)elem;
#endif #endif
} }
...@@ -160,22 +160,20 @@ void *log_poll(log_t * me_) ...@@ -160,22 +160,20 @@ void *log_poll(log_t * me_)
me->front++; me->front++;
me->count--; me->count--;
me->base_log_idx++; me->base_log_idx++;
return (void *) elem; return (void*)elem;
} }
raft_entry_t *log_peektail(log_t * me_) raft_entry_t *log_peektail(log_t * me_)
{ {
log_private_t* me = (void*)me_; log_private_t* me = (void*)me_;
const void *elem;
int i;
if (0 == log_count(me_)) if (0 == log_count(me_))
return NULL; return NULL;
if (0 == me->back) if (0 == me->back)
return &me->entries[me->size-1]; return &me->entries[me->size - 1];
else else
return &me->entries[me->back-1]; return &me->entries[me->back - 1];
} }
void log_empty(log_t * me_) void log_empty(log_t * me_)
...@@ -197,12 +195,9 @@ void log_free(log_t * me_) ...@@ -197,12 +195,9 @@ void log_free(log_t * me_)
void log_mark_node_has_committed(log_t* me_, int idx) void log_mark_node_has_committed(log_t* me_, int idx)
{ {
log_private_t* me = (void*)me_;
raft_entry_t* e; raft_entry_t* e;
if ((e = log_get_from_idx(me_,idx))) if ((e = log_get_from_idx(me_, idx)))
{
e->num_nodes += 1; e->num_nodes += 1;
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
/** /**
* Copyright (c) 2013, Willem-Hendrik Thiart * Copyright (c) 2013, Willem-Hendrik Thiart
* Use of this source code is governed by a BSD-style license that can be * Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file. * found in the LICENSE file.
* *
* @file * @file
* @brief Implementation of a Raft server * @brief Implementation of a Raft server
...@@ -25,15 +25,16 @@ ...@@ -25,15 +25,16 @@
static void __log(raft_server_t *me_, const char *fmt, ...) static void __log(raft_server_t *me_, const char *fmt, ...)
{ {
raft_server_private_t* me = (void*)me_;
char buf[1024]; char buf[1024];
va_list args; va_list args;
va_start(args, fmt); va_start(args, fmt);
vsprintf(buf, fmt, args); vsprintf(buf, fmt, args);
#if 0 /* debugging */ #if 0 /* debugging */
raft_server_private_t* me = (void*)me_;
printf("%d: %s\n", me->nodeid, buf); printf("%d: %s\n", me->nodeid, buf);
__FUNC_log(bto,src,buf); __FUNC_log(bto, src, buf);
#endif #endif
} }
...@@ -56,7 +57,7 @@ raft_server_t* raft_new() ...@@ -56,7 +57,7 @@ raft_server_t* raft_new()
} }
void raft_set_callbacks(raft_server_t* me_, void raft_set_callbacks(raft_server_t* me_,
raft_cbs_t* funcs, void* udata) raft_cbs_t* funcs, void* udata)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
...@@ -77,7 +78,7 @@ void raft_election_start(raft_server_t* me_) ...@@ -77,7 +78,7 @@ void raft_election_start(raft_server_t* me_)
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
__log(me_, "election starting: %d %d, term: %d", __log(me_, "election starting: %d %d, term: %d",
me->election_timeout, me->timeout_elapsed, me->current_term); me->election_timeout, me->timeout_elapsed, me->current_term);
raft_become_candidate(me_); raft_become_candidate(me_);
} }
...@@ -89,13 +90,14 @@ void raft_become_leader(raft_server_t* me_) ...@@ -89,13 +90,14 @@ void raft_become_leader(raft_server_t* me_)
__log(me_, "becoming leader"); __log(me_, "becoming leader");
raft_set_state(me_,RAFT_STATE_LEADER); raft_set_state(me_, RAFT_STATE_LEADER);
me->voted_for = -1; me->voted_for = -1;
for (i=0; i<me->num_nodes; i++) for (i = 0; i < me->num_nodes; i++)
{ {
if (me->nodeid == i) continue; if (me->nodeid == i)
continue;
raft_node_t* p = raft_get_node(me_, i); raft_node_t* p = raft_get_node(me_, i);
raft_node_set_next_idx(p, raft_get_current_idx(me_)+1); raft_node_set_next_idx(p, raft_get_current_idx(me_) + 1);
raft_send_appendentries(me_, i); raft_send_appendentries(me_, i);
} }
} }
...@@ -115,9 +117,10 @@ void raft_become_candidate(raft_server_t* me_) ...@@ -115,9 +117,10 @@ void raft_become_candidate(raft_server_t* me_)
/* we need a random factor here to prevent simultaneous candidates */ /* we need a random factor here to prevent simultaneous candidates */
me->timeout_elapsed = rand() % 500; me->timeout_elapsed = rand() % 500;
for (i=0; i<me->num_nodes; i++) for (i = 0; i < me->num_nodes; i++)
{ {
if (me->nodeid == i) continue; if (me->nodeid == i)
continue;
raft_send_requestvote(me_, i); raft_send_requestvote(me_, i);
} }
} }
...@@ -142,10 +145,8 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period) ...@@ -142,10 +145,8 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
{ {
case RAFT_STATE_FOLLOWER: case RAFT_STATE_FOLLOWER:
if (me->last_applied_idx < me->commit_idx) if (me->last_applied_idx < me->commit_idx)
{
if (0 == raft_apply_entry(me_)) if (0 == raft_apply_entry(me_))
return 0; return 0;
}
break; break;
} }
...@@ -159,13 +160,9 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period) ...@@ -159,13 +160,9 @@ int raft_periodic(raft_server_t* me_, int msec_since_last_period)
me->timeout_elapsed = 0; me->timeout_elapsed = 0;
} }
} }
else else if (me->election_timeout <= me->timeout_elapsed)
{ raft_election_start(me_);
if (me->election_timeout <= me->timeout_elapsed)
{
raft_election_start(me_);
}
}
return 1; return 1;
} }
...@@ -177,7 +174,7 @@ raft_entry_t* raft_get_entry_from_idx(raft_server_t* me_, int etyidx) ...@@ -177,7 +174,7 @@ 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, msg_appendentries_response_t* r) int node, msg_appendentries_response_t* r)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
raft_node_t* p; raft_node_t* p;
...@@ -190,7 +187,7 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -190,7 +187,7 @@ int raft_recv_appendentries_response(raft_server_t* me_,
{ {
int i; int i;
for (i=r->first_idx; i<=r->current_idx; i++) for (i = r->first_idx; i <= r->current_idx; i++)
log_mark_node_has_committed(me->log, i); log_mark_node_has_committed(me->log, i);
while (1) while (1)
...@@ -202,12 +199,11 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -202,12 +199,11 @@ int raft_recv_appendentries_response(raft_server_t* me_,
/* majority has this */ /* majority has this */
if (e && me->num_nodes / 2 <= e->num_nodes) if (e && me->num_nodes / 2 <= e->num_nodes)
{ {
if (0 == raft_apply_entry(me_)) break; if (0 == raft_apply_entry(me_))
break;
} }
else else
{
break; break;
}
} }
} }
else else
...@@ -217,7 +213,7 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -217,7 +213,7 @@ int raft_recv_appendentries_response(raft_server_t* me_,
assert(0 <= raft_node_get_next_idx(p)); assert(0 <= raft_node_get_next_idx(p));
// TODO does this have test coverage? // TODO does this have test coverage?
// TODO can jump back to where node is different instead of iterating // TODO can jump back to where node is different instead of iterating
raft_node_set_next_idx(p, raft_node_get_next_idx(p)-1); raft_node_set_next_idx(p, raft_node_get_next_idx(p) - 1);
raft_send_appendentries(me_, node); raft_send_appendentries(me_, node);
} }
...@@ -225,9 +221,9 @@ int raft_recv_appendentries_response(raft_server_t* me_, ...@@ -225,9 +221,9 @@ int raft_recv_appendentries_response(raft_server_t* me_,
} }
int raft_recv_appendentries( int raft_recv_appendentries(
raft_server_t* me_, raft_server_t* me_,
const int node, const int node,
msg_appendentries_t* ae) msg_appendentries_t* ae)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
msg_appendentries_response_t r; msg_appendentries_response_t r;
...@@ -252,7 +248,7 @@ int raft_recv_appendentries( ...@@ -252,7 +248,7 @@ int raft_recv_appendentries(
#if 0 #if 0
if (-1 != ae->prev_log_idx && if (-1 != ae->prev_log_idx &&
ae->prev_log_idx < raft_get_current_idx(me_)) ae->prev_log_idx < raft_get_current_idx(me_))
{ {
__log(me_, "AE prev_idx is less than current idx"); __log(me_, "AE prev_idx is less than current idx");
r.success = 0; r.success = 0;
...@@ -277,13 +273,11 @@ int raft_recv_appendentries( ...@@ -277,13 +273,11 @@ int raft_recv_appendentries(
} }
/* 3. If an existing entry conflicts with a new one (same index /* 3. If an existing entry conflicts with a new one (same index
but different terms), delete the existing entry and all that but different terms), delete the existing entry and all that
follow it (§5.3) */ follow it (§5.3) */
raft_entry_t* e2; raft_entry_t* e2;
if ((e2 = raft_get_entry_from_idx(me_, ae->prev_log_idx+1))) if ((e2 = raft_get_entry_from_idx(me_, ae->prev_log_idx + 1)))
{ log_delete(me->log, ae->prev_log_idx + 1);
log_delete(me->log, ae->prev_log_idx+1);
}
} }
else else
{ {
...@@ -303,8 +297,9 @@ int raft_recv_appendentries( ...@@ -303,8 +297,9 @@ int raft_recv_appendentries(
if ((e = log_peektail(me->log))) if ((e = log_peektail(me->log)))
{ {
raft_set_commit_idx(me_, e->id < ae->leader_commit ? raft_set_commit_idx(me_, e->id < ae->leader_commit ?
e->id : ae->leader_commit); e->id : ae->leader_commit);
while (1 == raft_apply_entry(me_)); while (1 == raft_apply_entry(me_))
;
} }
} }
...@@ -314,9 +309,9 @@ int raft_recv_appendentries( ...@@ -314,9 +309,9 @@ int raft_recv_appendentries(
raft_set_current_term(me_, ae->term); raft_set_current_term(me_, ae->term);
int i; int i;
/* append all entries to log */ /* append all entries to log */
for (i=0; i<ae->n_entries; i++) for (i = 0; i < ae->n_entries; i++)
{ {
msg_entry_t* cmd; msg_entry_t* cmd;
raft_entry_t* c; raft_entry_t* c;
...@@ -354,26 +349,22 @@ int raft_recv_requestvote(raft_server_t* me_, int node, msg_requestvote_t* vr) ...@@ -354,26 +349,22 @@ int raft_recv_requestvote(raft_server_t* me_, int node, msg_requestvote_t* vr)
msg_requestvote_response_t r; msg_requestvote_response_t r;
if (raft_get_current_term(me_) < vr->term) if (raft_get_current_term(me_) < vr->term)
{
me->voted_for = -1; me->voted_for = -1;
}
if (vr->term < raft_get_current_term(me_) || if (vr->term < raft_get_current_term(me_) ||
/* we've already voted */ /* we've already voted */
-1 != me->voted_for || -1 != me->voted_for ||
/* we have a more up-to-date log */ /* we have a more up-to-date log */
vr->last_log_idx < me->current_idx) vr->last_log_idx < me->current_idx)
{
r.vote_granted = 0; r.vote_granted = 0;
}
else else
{ {
raft_vote(me_,node); raft_vote(me_, node);
r.vote_granted = 1; r.vote_granted = 1;
} }
__log(me_, "node requested vote: %d replying: %s", __log(me_, "node requested vote: %d replying: %s",
node, r.vote_granted == 1 ? "granted" : "not granted"); node, r.vote_granted == 1 ? "granted" : "not granted");
r.term = raft_get_current_term(me_); r.term = raft_get_current_term(me_);
if (me->cb.send_requestvote_response) if (me->cb.send_requestvote_response)
...@@ -393,12 +384,12 @@ int raft_votes_is_majority(const int num_nodes, const int nvotes) ...@@ -393,12 +384,12 @@ int raft_votes_is_majority(const int num_nodes, const int 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 = (void*)me_; raft_server_private_t* me = (void*)me_;
__log(me_, "node responded to requestvote: %d status: %s", __log(me_, "node responded to requestvote: %d status: %s",
node, r->vote_granted == 1 ? "granted" : "not granted"); node, r->vote_granted == 1 ? "granted" : "not granted");
if (raft_is_leader(me_)) if (raft_is_leader(me_))
return 0; return 0;
...@@ -422,7 +413,7 @@ int raft_recv_requestvote_response(raft_server_t* me_, int node, ...@@ -422,7 +413,7 @@ int raft_recv_requestvote_response(raft_server_t* me_, int node,
} }
int raft_send_entry_response(raft_server_t* me_, int raft_send_entry_response(raft_server_t* me_,
int node, int etyid, int was_committed) int node, int etyid, int was_committed)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
msg_entry_response_t res; msg_entry_response_t res;
...@@ -450,10 +441,11 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e) ...@@ -450,10 +441,11 @@ int raft_recv_entry(raft_server_t* me_, int node, msg_entry_t* e)
ety.len = e->len; ety.len = e->len;
res = raft_append_entry(me_, &ety); res = raft_append_entry(me_, &ety);
raft_send_entry_response(me_, node, e->id, res); raft_send_entry_response(me_, node, e->id, res);
for (i=0; i<me->num_nodes; i++) for (i = 0; i < me->num_nodes; i++)
{ {
if (me->nodeid == i) continue; if (me->nodeid == i)
raft_send_appendentries(me_,i); continue;
raft_send_appendentries(me_, i);
} }
return 0; return 0;
} }
...@@ -476,7 +468,7 @@ int raft_append_entry(raft_server_t* me_, raft_entry_t* c) ...@@ -476,7 +468,7 @@ int raft_append_entry(raft_server_t* me_, raft_entry_t* c)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
if (1 == log_append_entry(me->log,c)) if (1 == log_append_entry(me->log, c))
{ {
me->current_idx += 1; me->current_idx += 1;
return 1; return 1;
...@@ -489,7 +481,7 @@ int raft_apply_entry(raft_server_t* me_) ...@@ -489,7 +481,7 @@ int raft_apply_entry(raft_server_t* me_)
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
raft_entry_t* e; raft_entry_t* e;
if (!(e = log_get_from_idx(me->log, me->last_applied_idx+1))) if (!(e = log_get_from_idx(me->log, me->last_applied_idx + 1)))
return 0; return 0;
__log(me_, "applying log: %d", me->last_applied_idx); __log(me_, "applying log: %d", me->last_applied_idx);
...@@ -529,26 +521,27 @@ void raft_send_appendentries_all(raft_server_t* me_) ...@@ -529,26 +521,27 @@ void raft_send_appendentries_all(raft_server_t* me_)
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
int i; int i;
for (i=0; i<me->num_nodes; i++) for (i = 0; i < me->num_nodes; i++)
{ {
if (me->nodeid == i) continue; if (me->nodeid == i)
continue;
raft_send_appendentries(me_, i); raft_send_appendentries(me_, i);
} }
} }
void raft_set_configuration(raft_server_t* me_, void raft_set_configuration(raft_server_t* me_,
raft_node_configuration_t* nodes, int my_idx) raft_node_configuration_t* nodes, int my_idx)
{ {
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
int num_nodes; int num_nodes;
/* TODO: one memory allocation only please */ /* TODO: one memory allocation only please */
for (num_nodes=0; nodes->udata_address; nodes++) for (num_nodes = 0; nodes->udata_address; nodes++)
{ {
num_nodes++; num_nodes++;
me->nodes = realloc(me->nodes,sizeof(raft_node_t*) * num_nodes); me->nodes = realloc(me->nodes, sizeof(raft_node_t*) * num_nodes);
me->num_nodes = num_nodes; me->num_nodes = num_nodes;
me->nodes[num_nodes-1] = raft_node_new(nodes->udata_address); me->nodes[num_nodes - 1] = raft_node_new(nodes->udata_address);
} }
me->votes_for_me = calloc(num_nodes, sizeof(int)); me->votes_for_me = calloc(num_nodes, sizeof(int));
me->nodeid = my_idx; me->nodeid = my_idx;
...@@ -559,9 +552,10 @@ int raft_get_nvotes_for_me(raft_server_t* me_) ...@@ -559,9 +552,10 @@ int raft_get_nvotes_for_me(raft_server_t* me_)
raft_server_private_t* me = (void*)me_; raft_server_private_t* me = (void*)me_;
int i, votes; int i, votes;
for (i=0, votes=0; i<me->num_nodes; i++) for (i = 0, votes = 0; i < me->num_nodes; i++)
{ {
if (me->nodeid == i) continue; if (me->nodeid == i)
continue;
if (1 == me->votes_for_me[i]) if (1 == me->votes_for_me[i])
votes += 1; votes += 1;
} }
......
...@@ -46,33 +46,33 @@ void TestLog_get_at_idx(CuTest * tc) ...@@ -46,33 +46,33 @@ void TestLog_get_at_idx(CuTest * tc)
CuAssertTrue(tc, 3 == log_count(l)); CuAssertTrue(tc, 3 == log_count(l));
CuAssertTrue(tc, 3 == log_count(l)); CuAssertTrue(tc, 3 == log_count(l));
CuAssertTrue(tc, e2.id == log_get_from_idx(l,2)->id); CuAssertTrue(tc, e2.id == log_get_from_idx(l, 2)->id);
} }
void TestLog_get_at_idx_returns_null_where_out_of_bounds(CuTest * tc) void TestLog_get_at_idx_returns_null_where_out_of_bounds(CuTest * tc)
{ {
void *l; void *l;
raft_entry_t e1, e2, e3; raft_entry_t e1;
l = log_new(); l = log_new();
e1.id = 1; e1.id = 1;
CuAssertTrue(tc, 1 == log_append_entry(l, &e1)); CuAssertTrue(tc, 1 == log_append_entry(l, &e1));
CuAssertTrue(tc, NULL == log_get_from_idx(l,2)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 2));
} }
void TestLog_mark_node_has_committed_adds_nodes(CuTest * tc) void TestLog_mark_node_has_committed_adds_nodes(CuTest * tc)
{ {
void *l; void *l;
raft_entry_t e1, e2, e3; raft_entry_t e1;
l = log_new(); l = log_new();
e1.id = 1; e1.id = 1;
log_append_entry(l, &e1); log_append_entry(l, &e1);
CuAssertTrue(tc, 0 == log_get_from_idx(l,1)->num_nodes); CuAssertTrue(tc, 0 == log_get_from_idx(l, 1)->num_nodes);
log_mark_node_has_committed(l, 1); log_mark_node_has_committed(l, 1);
CuAssertTrue(tc, 1 == log_get_from_idx(l,1)->num_nodes); CuAssertTrue(tc, 1 == log_get_from_idx(l, 1)->num_nodes);
log_mark_node_has_committed(l, 1); log_mark_node_has_committed(l, 1);
CuAssertTrue(tc, 2 == log_get_from_idx(l,1)->num_nodes); CuAssertTrue(tc, 2 == log_get_from_idx(l, 1)->num_nodes);
} }
void TestLog_delete(CuTest * tc) void TestLog_delete(CuTest * tc)
...@@ -89,15 +89,15 @@ void TestLog_delete(CuTest * tc) ...@@ -89,15 +89,15 @@ void TestLog_delete(CuTest * tc)
CuAssertTrue(tc, 1 == log_append_entry(l, &e3)); CuAssertTrue(tc, 1 == log_append_entry(l, &e3));
CuAssertTrue(tc, 3 == log_count(l)); CuAssertTrue(tc, 3 == log_count(l));
log_delete(l,3); log_delete(l, 3);
CuAssertTrue(tc, 2 == log_count(l)); CuAssertTrue(tc, 2 == log_count(l));
CuAssertTrue(tc, NULL == log_get_from_idx(l,3)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 3));
log_delete(l,2); log_delete(l, 2);
CuAssertTrue(tc, 1 == log_count(l)); CuAssertTrue(tc, 1 == log_count(l));
CuAssertTrue(tc, NULL == log_get_from_idx(l,2)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 2));
log_delete(l,1); log_delete(l, 1);
CuAssertTrue(tc, 0 == log_count(l)); CuAssertTrue(tc, 0 == log_count(l));
CuAssertTrue(tc, NULL == log_get_from_idx(l,1)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 1));
} }
void TestLog_delete_onwards(CuTest * tc) void TestLog_delete_onwards(CuTest * tc)
...@@ -115,11 +115,11 @@ void TestLog_delete_onwards(CuTest * tc) ...@@ -115,11 +115,11 @@ void TestLog_delete_onwards(CuTest * tc)
CuAssertTrue(tc, 3 == log_count(l)); CuAssertTrue(tc, 3 == log_count(l));
/* even 3 gets deleted */ /* even 3 gets deleted */
log_delete(l,2); log_delete(l, 2);
CuAssertTrue(tc, 1 == log_count(l)); CuAssertTrue(tc, 1 == log_count(l));
CuAssertTrue(tc, e1.id == log_get_from_idx(l,1)->id); CuAssertTrue(tc, e1.id == log_get_from_idx(l, 1)->id);
CuAssertTrue(tc, NULL == log_get_from_idx(l,2)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 2));
CuAssertTrue(tc, NULL == log_get_from_idx(l,3)); CuAssertTrue(tc, NULL == log_get_from_idx(l, 3));
} }
void TestLog_peektail(CuTest * tc) void TestLog_peektail(CuTest * tc)
......
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