Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
RedisLabs Raft
Commits
fc503058
Unverified
Commit
fc503058
authored
Apr 06, 2022
by
Ozan Tezcan
Committed by
GitHub
Apr 06, 2022
Browse files
Add raft_get_state_str() to get state as string (#100)
parent
38d64cae
Changes
4
Hide whitespace changes
Inline
Side-by-side
include/raft.h
View file @
fc503058
...
...
@@ -32,8 +32,7 @@ typedef enum {
}
raft_membership_e
;
typedef
enum
{
RAFT_STATE_NONE
,
RAFT_STATE_FOLLOWER
,
RAFT_STATE_FOLLOWER
=
1
,
RAFT_STATE_PRECANDIDATE
,
RAFT_STATE_CANDIDATE
,
RAFT_STATE_LEADER
,
...
...
@@ -1249,6 +1248,9 @@ raft_node_id_t raft_node_get_id(raft_node_t* me);
* @return get state of type raft_state_e. */
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
* @return the last log term */
raft_term_t
raft_get_last_log_term
(
raft_server_t
*
me
);
...
...
include/raft_private.h
View file @
fc503058
...
...
@@ -49,7 +49,7 @@ struct raft_server {
raft_index_t
last_applied_idx
;
/* follower/leader/candidate indicator */
int
state
;
raft_state_e
state
;
/* amount of time left till timeout */
int
timeout_elapsed
;
...
...
src/raft_server_properties.c
View file @
fc503058
...
...
@@ -139,6 +139,22 @@ int raft_get_state(raft_server_t* me)
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
)
{
int
i
;
...
...
tests/test_server.c
View file @
fc503058
...
...
@@ -240,6 +240,19 @@ void TestRaft_set_state(CuTest * tc)
void
*
r
=
raft_new
();
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
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
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment