Unverified Commit fc503058 authored by Ozan Tezcan's avatar Ozan Tezcan Committed by GitHub
Browse files

Add raft_get_state_str() to get state as string (#100)

parent 38d64cae
...@@ -32,8 +32,7 @@ typedef enum { ...@@ -32,8 +32,7 @@ typedef enum {
} raft_membership_e; } raft_membership_e;
typedef enum { typedef enum {
RAFT_STATE_NONE, RAFT_STATE_FOLLOWER = 1,
RAFT_STATE_FOLLOWER,
RAFT_STATE_PRECANDIDATE, RAFT_STATE_PRECANDIDATE,
RAFT_STATE_CANDIDATE, RAFT_STATE_CANDIDATE,
RAFT_STATE_LEADER, RAFT_STATE_LEADER,
...@@ -1249,6 +1248,9 @@ raft_node_id_t raft_node_get_id(raft_node_t* me); ...@@ -1249,6 +1248,9 @@ raft_node_id_t raft_node_get_id(raft_node_t* me);
* @return get state of type raft_state_e. */ * @return get state of type raft_state_e. */
int raft_get_state(raft_server_t* me); int raft_get_state(raft_server_t* me);
/* @return state string */
const char *raft_get_state_str(raft_server_t* me);
/** Get the most recent log's term /** Get the most recent log's term
* @return the last log term */ * @return the last log term */
raft_term_t raft_get_last_log_term(raft_server_t* me); raft_term_t raft_get_last_log_term(raft_server_t* me);
......
...@@ -49,7 +49,7 @@ struct raft_server { ...@@ -49,7 +49,7 @@ struct raft_server {
raft_index_t last_applied_idx; raft_index_t last_applied_idx;
/* follower/leader/candidate indicator */ /* follower/leader/candidate indicator */
int state; raft_state_e state;
/* amount of time left till timeout */ /* amount of time left till timeout */
int timeout_elapsed; int timeout_elapsed;
......
...@@ -139,6 +139,22 @@ int raft_get_state(raft_server_t* me) ...@@ -139,6 +139,22 @@ int raft_get_state(raft_server_t* me)
return me->state; return me->state;
} }
const char *raft_get_state_str(raft_server_t* me)
{
switch (me->state) {
case RAFT_STATE_FOLLOWER:
return "follower";
case RAFT_STATE_PRECANDIDATE:
return "pre-candidate";
case RAFT_STATE_CANDIDATE:
return "candidate";
case RAFT_STATE_LEADER:
return "leader";
default:
return "unknown";
}
}
raft_node_t* raft_get_node(raft_server_t *me, raft_node_id_t nodeid) raft_node_t* raft_get_node(raft_server_t *me, raft_node_id_t nodeid)
{ {
int i; int i;
......
...@@ -240,6 +240,19 @@ void TestRaft_set_state(CuTest * tc) ...@@ -240,6 +240,19 @@ void TestRaft_set_state(CuTest * tc)
void *r = raft_new(); void *r = raft_new();
raft_set_state(r, RAFT_STATE_LEADER); raft_set_state(r, RAFT_STATE_LEADER);
CuAssertTrue(tc, RAFT_STATE_LEADER == raft_get_state(r)); CuAssertTrue(tc, RAFT_STATE_LEADER == raft_get_state(r));
CuAssertStrEquals(tc, "leader", raft_get_state_str(r));
raft_set_state(r, RAFT_STATE_CANDIDATE);
CuAssertTrue(tc, RAFT_STATE_CANDIDATE == raft_get_state(r));
CuAssertStrEquals(tc, "candidate", raft_get_state_str(r));
raft_set_state(r, RAFT_STATE_PRECANDIDATE);
CuAssertTrue(tc, RAFT_STATE_PRECANDIDATE == raft_get_state(r));
CuAssertStrEquals(tc, "pre-candidate", raft_get_state_str(r));
raft_set_state(r, RAFT_STATE_FOLLOWER);
CuAssertTrue(tc, RAFT_STATE_FOLLOWER == raft_get_state(r));
CuAssertStrEquals(tc, "follower", raft_get_state_str(r));
} }
void TestRaft_server_starts_as_follower(CuTest * tc) void TestRaft_server_starts_as_follower(CuTest * tc)
......
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