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
49176fc7
"doc/ExpireCommand.html" did not exist on "37be27653817f0c4c18d695ceea082e0bb7bf462"
Commit
49176fc7
authored
Sep 19, 2013
by
willem
Browse files
Changed peer interface
parent
0feb3d14
Changes
10
Hide whitespace changes
Inline
Side-by-side
mock_send_functions.c
View file @
49176fc7
...
@@ -20,7 +20,7 @@ typedef struct {
...
@@ -20,7 +20,7 @@ typedef struct {
void
*
inbox
;
void
*
inbox
;
}
sender_t
;
}
sender_t
;
int
sender_send
(
void
*
caller
,
void
*
udata
,
int
peer
,
const
unsigned
char
*
data
,
int
len
)
int
sender_send
(
void
*
caller
,
void
*
udata
,
void
*
peer
,
const
unsigned
char
*
data
,
int
len
)
{
{
sender_t
*
me
=
udata
;
sender_t
*
me
=
udata
;
void
*
n
;
void
*
n
;
...
...
mock_send_functions.h
View file @
49176fc7
int
sender_send
(
void
*
caller
,
void
*
udata
,
const
int
peer
,
int
sender_send
(
void
*
caller
,
void
*
udata
,
void
*
peer
,
const
unsigned
char
*
data
,
const
int
len
);
const
unsigned
char
*
data
,
const
int
len
);
void
*
sender_new
();
void
*
sender_new
();
...
...
raft.h
View file @
49176fc7
...
@@ -65,7 +65,7 @@ typedef int (
...
@@ -65,7 +65,7 @@ typedef int (
)
(
)
(
void
*
caller
,
void
*
caller
,
void
*
udata
,
void
*
udata
,
const
int
peer
,
void
*
peer
,
const
unsigned
char
*
send_data
,
const
unsigned
char
*
send_data
,
const
int
len
const
int
len
);
);
...
@@ -146,23 +146,23 @@ int raft_receive_append_entries(raft_server_t* me, msg_appendentries_t* ae);
...
@@ -146,23 +146,23 @@ int raft_receive_append_entries(raft_server_t* me, msg_appendentries_t* ae);
int
raft_periodic
(
void
*
me_
);
int
raft_periodic
(
void
*
me_
);
int
raft_recv_appendentries
(
void
*
me_
,
int
peer
,
msg_appendentries_t
*
ae
);
int
raft_recv_appendentries
(
void
*
me_
,
void
*
peer
,
msg_appendentries_t
*
ae
);
int
raft_recv_requestvote
(
void
*
me_
,
int
peer
,
msg_requestvote_t
*
vr
);
int
raft_recv_requestvote
(
void
*
me_
,
void
*
peer
,
msg_requestvote_t
*
vr
);
void
raft_execute_command
(
void
*
me_
);
void
raft_execute_command
(
void
*
me_
);
void
raft_set_election_timeout
(
void
*
me_
,
int
millisec
);
void
raft_set_election_timeout
(
void
*
me_
,
int
millisec
);
int
raft_vote
(
void
*
me_
,
int
peer
);
int
raft_vote
(
void
*
me_
,
void
*
peer
);
int
raft_add_peer
(
void
*
me_
,
void
*
peer_udata
);
void
*
raft_add_peer
(
void
*
me_
,
void
*
peer_udata
);
int
raft_remove_peer
(
void
*
me_
,
int
peer
);
int
raft_remove_peer
(
void
*
me_
,
void
*
peer
);
int
raft_get_num_peers
(
void
*
me_
);
int
raft_get_num_peers
(
void
*
me_
);
int
raft_recv_command
(
void
*
me_
,
int
peer
,
msg_command_t
*
cmd
);
int
raft_recv_command
(
void
*
me_
,
void
*
peer
,
msg_command_t
*
cmd
);
int
raft_get_log_size
(
void
*
me_
);
int
raft_get_log_size
(
void
*
me_
);
...
@@ -182,4 +182,4 @@ int raft_is_leader(void* me_);
...
@@ -182,4 +182,4 @@ int raft_is_leader(void* me_);
int
raft_is_candidate
(
void
*
me_
);
int
raft_is_candidate
(
void
*
me_
);
int
raft_send_requestvote
(
void
*
me_
,
int
peer
);
int
raft_send_requestvote
(
void
*
me_
,
void
*
peer
);
raft_server.c
View file @
49176fc7
...
@@ -116,22 +116,22 @@ int raft_periodic(void* me_)
...
@@ -116,22 +116,22 @@ int raft_periodic(void* me_)
/**
/**
* Invoked by leader to replicate log entries (§5.3); also used as heartbeat (§5.2). */
* Invoked by leader to replicate log entries (§5.3); also used as heartbeat (§5.2). */
int
raft_recv_appendentries
(
void
*
me_
,
int
peer
,
msg_appendentries_t
*
ae
)
int
raft_recv_appendentries
(
void
*
me_
,
void
*
peer
,
msg_appendentries_t
*
ae
)
{
{
return
0
;
return
0
;
}
}
int
raft_recv_appendentries_response
(
void
*
me_
,
int
peer
,
msg_appendentries_response_t
*
ae
)
int
raft_recv_appendentries_response
(
void
*
me_
,
void
*
peer
,
msg_appendentries_response_t
*
ae
)
{
{
return
0
;
return
0
;
}
}
int
raft_recv_requestvote
(
void
*
me_
,
int
peer
,
msg_requestvote_t
*
vr
)
int
raft_recv_requestvote
(
void
*
me_
,
void
*
peer
,
msg_requestvote_t
*
vr
)
{
{
return
0
;
return
0
;
}
}
int
raft_recv_requestvote_response
(
void
*
me_
,
int
peer
,
msg_requestvote_response_t
*
r
)
int
raft_recv_requestvote_response
(
void
*
me_
,
void
*
peer
,
msg_requestvote_response_t
*
r
)
{
{
return
0
;
return
0
;
}
}
...
@@ -144,7 +144,7 @@ void raft_set_election_timeout(void* me_, int millisec)
...
@@ -144,7 +144,7 @@ void raft_set_election_timeout(void* me_, int millisec)
{
{
}
}
int
raft_vote
(
void
*
me_
,
int
peer
)
int
raft_vote
(
void
*
me_
,
void
*
peer
)
{
{
return
0
;
return
0
;
}
}
...
@@ -156,12 +156,12 @@ void raft_set_configuration(raft_server_t* me)
...
@@ -156,12 +156,12 @@ void raft_set_configuration(raft_server_t* me)
}
}
#endif
#endif
int
raft_add_peer
(
void
*
me_
,
void
*
peer_udata
)
void
*
raft_add_peer
(
void
*
me_
,
void
*
peer_udata
)
{
{
return
0
;
return
NULL
;
}
}
int
raft_remove_peer
(
void
*
me_
,
int
peer
)
int
raft_remove_peer
(
void
*
me_
,
void
*
peer
)
{
{
return
0
;
return
0
;
}
}
...
@@ -172,7 +172,7 @@ int raft_get_num_peers(void* me_)
...
@@ -172,7 +172,7 @@ int raft_get_num_peers(void* me_)
return
0
;
return
0
;
}
}
int
raft_recv_command
(
void
*
me_
,
int
peer
,
msg_command_t
*
cmd
)
int
raft_recv_command
(
void
*
me_
,
void
*
peer
,
msg_command_t
*
cmd
)
{
{
return
0
;
return
0
;
}
}
...
@@ -220,7 +220,7 @@ int raft_is_candidate(void* me_)
...
@@ -220,7 +220,7 @@ int raft_is_candidate(void* me_)
return
0
;
return
0
;
}
}
int
raft_send_requestvote
(
void
*
me_
,
int
peer
)
int
raft_send_requestvote
(
void
*
me_
,
void
*
peer
)
{
{
return
0
;
return
0
;
...
...
test_candidate.c
View file @
49176fc7
...
@@ -143,7 +143,7 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc)
...
@@ -143,7 +143,7 @@ void TestRaft_candidate_receives_majority_of_votes_becomes_leader(CuTest * tc)
/* Candidate 5.2 */
/* Candidate 5.2 */
void
TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted
(
CuTest
*
tc
)
void
TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
void
*
msg
;
void
*
msg
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
...
@@ -161,7 +161,7 @@ void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted(
...
@@ -161,7 +161,7 @@ void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted(
r
=
raft_new
();
r
=
raft_new
();
/* three nodes */
/* three nodes */
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
...
@@ -170,7 +170,7 @@ void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted(
...
@@ -170,7 +170,7 @@ void TestRaft_candidate_will_not_respond_to_voterequest_if_it_has_already_voted(
CuAssertTrue
(
tc
,
0
==
raft_is_follower
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_is_follower
(
r
));
raft_periodic
(
r
);
raft_periodic
(
r
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
CuAssertTrue
(
tc
,
1
==
raft_is_follower
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_is_follower
(
r
));
}
}
...
@@ -211,7 +211,7 @@ void TestRaft_candidate_will_reject_requestvote_if_its_log_is_more_complete(CuTe
...
@@ -211,7 +211,7 @@ void TestRaft_candidate_will_reject_requestvote_if_its_log_is_more_complete(CuTe
/* Candidate 5.2 */
/* Candidate 5.2 */
void
TestRaft_candidate_requestvote_includes_loginfo
(
CuTest
*
tc
)
void
TestRaft_candidate_requestvote_includes_loginfo
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
void
*
msg
;
void
*
msg
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
...
@@ -223,13 +223,14 @@ void TestRaft_candidate_requestvote_includes_loginfo(CuTest * tc)
...
@@ -223,13 +223,14 @@ void TestRaft_candidate_requestvote_includes_loginfo(CuTest * tc)
r
=
raft_new
();
r
=
raft_new
();
/* three nodes */
/* three nodes */
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_current_term
(
r
,
5
);
raft_set_current_term
(
r
,
5
);
raft_set_current_index
(
r
,
3
);
raft_set_current_index
(
r
,
3
);
raft_set_state
(
r
,
RAFT_STATE_CANDIDATE
);
raft_set_state
(
r
,
RAFT_STATE_CANDIDATE
);
raft_send_requestvote
(
r
,
1
);
raft_send_requestvote
(
r
,
peer
);
msg
=
sender_poll_msg
(
sender
);
msg
=
sender_poll_msg
(
sender
);
// CuAssertTrue(tc, msg_is_requestvote(msg));
// CuAssertTrue(tc, msg_is_requestvote(msg));
...
@@ -240,7 +241,7 @@ void TestRaft_candidate_requestvote_includes_loginfo(CuTest * tc)
...
@@ -240,7 +241,7 @@ void TestRaft_candidate_requestvote_includes_loginfo(CuTest * tc)
/* Candidate 5.2 */
/* Candidate 5.2 */
void
TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower
(
CuTest
*
tc
)
void
TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
void
*
msg
;
void
*
msg
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
...
@@ -254,16 +255,18 @@ void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower(CuTest
...
@@ -254,16 +255,18 @@ void TestRaft_candidate_recv_appendentries_frm_leader_results_in_follower(CuTest
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
/* three nodes */
/* three nodes */
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_state
(
r
,
RAFT_STATE_CANDIDATE
);
raft_set_state
(
r
,
RAFT_STATE_CANDIDATE
);
CuAssertTrue
(
tc
,
0
==
raft_is_follower
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_is_follower
(
r
));
raft_periodic
(
r
);
raft_periodic
(
r
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
CuAssertTrue
(
tc
,
1
==
raft_is_follower
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_is_follower
(
r
));
}
}
...
...
test_follower.c
View file @
49176fc7
...
@@ -11,41 +11,44 @@
...
@@ -11,41 +11,44 @@
void
TestRaft_follower_increases_log_after_appendentry
(
CuTest
*
tc
)
void
TestRaft_follower_increases_log_after_appendentry
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
msg_appendentries_t
ae
;
msg_appendentries_t
ae
;
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
r
=
raft_new
();
r
=
raft_new
();
/* three nodes */
/* three nodes */
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_state
(
r
,
RAFT_STATE_FOLLOWER
);
raft_set_state
(
r
,
RAFT_STATE_FOLLOWER
);
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
}
}
void
TestRaft_follower_rejects_appendentries_if_idx_and_term_dont_match_preceding_ones
(
CuTest
*
tc
)
void
TestRaft_follower_rejects_appendentries_if_idx_and_term_dont_match_preceding_ones
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
msg_appendentries_t
ae
;
msg_appendentries_t
ae
;
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
r
=
raft_new
();
r
=
raft_new
();
/* three nodes */
/* three nodes */
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_add_peer
(
r
,(
void
*
)
2
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_state
(
r
,
RAFT_STATE_FOLLOWER
);
raft_set_state
(
r
,
RAFT_STATE_FOLLOWER
);
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
}
}
...
...
test_leader.c
View file @
49176fc7
...
@@ -64,7 +64,7 @@ set commitIndex = N (
...
@@ -64,7 +64,7 @@ set commitIndex = N (
void
TestRaft_leader_append_command_to_log_increases_idxno
(
CuTest
*
tc
)
void
TestRaft_leader_append_command_to_log_increases_idxno
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
msg_command_t
cmd
;
msg_command_t
cmd
;
cmd
.
id
=
1
;
cmd
.
id
=
1
;
...
@@ -72,16 +72,17 @@ void TestRaft_leader_append_command_to_log_increases_idxno(CuTest * tc)
...
@@ -72,16 +72,17 @@ void TestRaft_leader_append_command_to_log_increases_idxno(CuTest * tc)
cmd
.
len
=
strlen
(
"command"
);
cmd
.
len
=
strlen
(
"command"
);
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
raft_recv_command
(
r
,
1
,
&
cmd
);
raft_recv_command
(
r
,
peer
,
&
cmd
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
}
}
void
TestRaft_leader_doesnt_append_command_if_unique_id_is_duplicate
(
CuTest
*
tc
)
void
TestRaft_leader_doesnt_append_command_if_unique_id_is_duplicate
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
msg_command_t
cmd
;
msg_command_t
cmd
;
cmd
.
id
=
1
;
cmd
.
id
=
1
;
...
@@ -89,19 +90,47 @@ void TestRaft_leader_doesnt_append_command_if_unique_id_is_duplicate(CuTest * tc
...
@@ -89,19 +90,47 @@ void TestRaft_leader_doesnt_append_command_if_unique_id_is_duplicate(CuTest * tc
cmd
.
len
=
strlen
(
"command"
);
cmd
.
len
=
strlen
(
"command"
);
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
0
==
raft_get_log_size
(
r
));
raft_recv_command
(
r
,
1
,
&
cmd
);
raft_recv_command
(
r
,
peer
,
&
cmd
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
raft_recv_command
(
r
,
1
,
&
cmd
);
raft_recv_command
(
r
,
peer
,
&
cmd
);
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
CuAssertTrue
(
tc
,
1
==
raft_get_log_size
(
r
));
}
}
void
TestRaft_leader_increase_commitno_when_majority_have_entry_and_atleast_one_newer_entry
(
CuTest
*
tc
)
void
TestRaft_leader_increase_commitno_when_majority_have_entry_and_atleast_one_newer_entry
(
CuTest
*
tc
)
{
{
}
}
void
TestRaft_leader_steps_down_if_received_appendentries_is_newer_than_itself
(
CuTest
*
tc
)
{
void
*
peer
;
void
*
r
;
void
*
sender
;
raft_external_functions_t
funcs
=
{
.
send
=
sender_send
,
.
log
=
NULL
};
msg_appendentries_t
ae
;
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
ae
.
term
=
5
;
ae
.
prevLogIndex
=
6
;
ae
.
prevLogTerm
=
5
;
sender
=
sender_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_state
(
r
,
RAFT_STATE_LEADER
);
raft_set_current_term
(
r
,
5
);
raft_set_current_index
(
r
,
5
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
CuAssertTrue
(
tc
,
1
==
raft_is_follower
(
r
));
}
test_server.c
View file @
49176fc7
...
@@ -50,7 +50,7 @@ void TestRaft_add_peer(CuTest * tc)
...
@@ -50,7 +50,7 @@ void TestRaft_add_peer(CuTest * tc)
void
TestRaft_remove_peer
(
CuTest
*
tc
)
void
TestRaft_remove_peer
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
;
int
peer
;
void
*
peer
;
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
...
...
test_server_appendentries.c
View file @
49176fc7
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
/* 5.1 */
/* 5.1 */
void
TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentterm
(
CuTest
*
tc
)
void
TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentterm
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
.
send
=
sender_send
,
.
send
=
sender_send
,
...
@@ -26,11 +26,12 @@ void TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentt
...
@@ -26,11 +26,12 @@ void TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentt
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
/* higher current term */
/* higher current term */
raft_set_current_term
(
r
,
5
);
raft_set_current_term
(
r
,
5
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
/* response is false */
/* response is false */
aer
=
sender_poll_msg
(
sender
);
aer
=
sender_poll_msg
(
sender
);
...
@@ -44,7 +45,7 @@ void TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentt
...
@@ -44,7 +45,7 @@ void TestRaft_server_recv_appendentries_reply_false_when_term_less_than_currentt
/* 5.3 */
/* 5.3 */
void
TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entry_at_prevLogIndex
(
CuTest
*
tc
)
void
TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entry_at_prevLogIndex
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
void
*
msg
;
void
*
msg
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
...
@@ -61,9 +62,10 @@ void TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entr
...
@@ -61,9 +62,10 @@ void TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entr
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_current_term
(
r
,
5
);
raft_set_current_term
(
r
,
5
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
aer
=
sender_poll_msg
(
sender
);
aer
=
sender_poll_msg
(
sender
);
CuAssertTrue
(
tc
,
NULL
!=
aer
);
CuAssertTrue
(
tc
,
NULL
!=
aer
);
CuAssertTrue
(
tc
,
0
==
aer
->
success
);
CuAssertTrue
(
tc
,
0
==
aer
->
success
);
...
@@ -72,20 +74,22 @@ void TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entr
...
@@ -72,20 +74,22 @@ void TestRaft_server_recv_appendentries_reply_false_if_log_does_not_contain_entr
/* 5.3 */
/* 5.3 */
void
TestRaft_server_recv_appendentries_delete_entries_if_conflict_with_new_entries
(
CuTest
*
tc
)
void
TestRaft_server_recv_appendentries_delete_entries_if_conflict_with_new_entries
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
msg_appendentries_t
ae
;
msg_appendentries_t
ae
;
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
memset
(
&
ae
,
0
,
sizeof
(
msg_appendentries_t
));
ae
.
term
=
2
;
ae
.
term
=
2
;
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
}
}
void
TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log
(
CuTest
*
tc
)
void
TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
.
send
=
sender_send
,
.
send
=
sender_send
,
...
@@ -99,9 +103,11 @@ void TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log(CuTes
...
@@ -99,9 +103,11 @@ void TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log(CuTes
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
// msg = sender_poll_msg(sender);
// msg = sender_poll_msg(sender);
// CuAssertTrue(tc, aer);
// CuAssertTrue(tc, aer);
...
@@ -113,7 +119,7 @@ void TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log(CuTes
...
@@ -113,7 +119,7 @@ void TestRaft_server_recv_appendentries_add_new_entries_not_already_in_log(CuTes
//min(leaderCommit, last log index)
//min(leaderCommit, last log index)
void
TestRaft_server_recv_appendentries_set_commitindex
(
CuTest
*
tc
)
void
TestRaft_server_recv_appendentries_set_commitindex
(
CuTest
*
tc
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
.
send
=
sender_send
,
.
send
=
sender_send
,
...
@@ -127,9 +133,10 @@ void TestRaft_server_recv_appendentries_set_commitindex(CuTest * tc)
...
@@ -127,9 +133,10 @@ void TestRaft_server_recv_appendentries_set_commitindex(CuTest * tc)
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_appendentries
(
r
,
1
,
&
ae
);
raft_recv_appendentries
(
r
,
peer
,
&
ae
);
// msg = sender_poll_msg(sender);
// msg = sender_poll_msg(sender);
// CuAssertTrue(tc, aer);
// CuAssertTrue(tc, aer);
...
...
test_server_request_vote.c
View file @
49176fc7
...
@@ -18,7 +18,7 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
...
@@ -18,7 +18,7 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
CuTest
*
tc
CuTest
*
tc
)
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
.
send
=
sender_send
,
.
send
=
sender_send
,
...
@@ -33,9 +33,11 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
...
@@ -33,9 +33,11 @@ void TestRaft_server_recv_requestvote_reply_false_if_term_less_than_current_term
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_recv_requestvote
(
r
,
1
,
&
rv
);
raft_recv_requestvote
(
r
,
peer
,
&
rv
);
rvr
=
sender_poll_msg
(
sender
);
rvr
=
sender_poll_msg
(
sender
);
CuAssertTrue
(
tc
,
NULL
!=
rvr
);
CuAssertTrue
(
tc
,
NULL
!=
rvr
);
CuAssertTrue
(
tc
,
0
==
rvr
->
voteGranted
);
CuAssertTrue
(
tc
,
0
==
rvr
->
voteGranted
);
...
@@ -47,7 +49,7 @@ void TestRaft_server_dont_grant_vote_if_we_didnt_vote_for_this_candidate(
...
@@ -47,7 +49,7 @@ void TestRaft_server_dont_grant_vote_if_we_didnt_vote_for_this_candidate(
CuTest
*
tc
CuTest
*
tc
)
)
{
{
void
*
r
;
void
*
r
,
*
peer
;
void
*
sender
;
void
*
sender
;
void
*
msg
;
void
*
msg
;
raft_external_functions_t
funcs
=
{
raft_external_functions_t
funcs
=
{
...
@@ -63,10 +65,12 @@ void TestRaft_server_dont_grant_vote_if_we_didnt_vote_for_this_candidate(
...
@@ -63,10 +65,12 @@ void TestRaft_server_dont_grant_vote_if_we_didnt_vote_for_this_candidate(
sender
=
sender_new
();
sender
=
sender_new
();
r
=
raft_new
();
r
=
raft_new
();
peer
=
raft_add_peer
(
r
,(
void
*
)
1
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_external_functions
(
r
,
&
funcs
,
sender
);
raft_set_current_term
(
r
,
1
);
raft_set_current_term
(
r
,
1
);
raft_vote
(
r
,
2
);
raft_vote
(
r
,
peer
);
raft_recv_requestvote
(
r
,
1
,
&
rv
);
raft_recv_requestvote
(
r
,
peer
,
&
rv
);
rvr
=
sender_poll_msg
(
sender
);
rvr
=
sender_poll_msg
(
sender
);
CuAssertTrue
(
tc
,
NULL
!=
rvr
);
CuAssertTrue
(
tc
,
NULL
!=
rvr
);
CuAssertTrue
(
tc
,
0
==
rvr
->
voteGranted
);
CuAssertTrue
(
tc
,
0
==
rvr
->
voteGranted
);
...
...
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