@@ -168,21 +168,19 @@ impl RawNode<Candidate> {
168
168
169
169
#[ cfg( test) ]
170
170
mod tests {
171
- use super :: super :: super :: { Entry , Instruction , Log , Request } ;
171
+ use super :: super :: super :: state:: tests:: TestState ;
172
+ use super :: super :: super :: { Entry , Log , Request } ;
172
173
use super :: super :: tests:: { assert_messages, assert_node} ;
173
174
use super :: * ;
174
175
use crate :: storage;
175
176
use tokio:: sync:: mpsc;
176
177
177
178
#[ allow( clippy:: type_complexity) ]
178
- fn setup ( ) -> Result < (
179
- RawNode < Candidate > ,
180
- mpsc:: UnboundedReceiver < Message > ,
181
- mpsc:: UnboundedReceiver < Instruction > ,
182
- ) > {
179
+ fn setup ( ) -> Result < ( RawNode < Candidate > , mpsc:: UnboundedReceiver < Message > ) > {
183
180
let ( node_tx, node_rx) = mpsc:: unbounded_channel ( ) ;
184
- let ( state_tx , state_rx ) = mpsc :: unbounded_channel ( ) ;
181
+ let state = Box :: new ( TestState :: new ( 0 ) ) ;
185
182
let mut log = Log :: new ( storage:: engine:: Memory :: new ( ) , false ) ?;
183
+
186
184
log. append ( 1 , Some ( vec ! [ 0x01 ] ) ) ?;
187
185
log. append ( 1 , Some ( vec ! [ 0x02 ] ) ) ?;
188
186
log. append ( 2 , Some ( vec ! [ 0x03 ] ) ) ?;
@@ -194,18 +192,18 @@ mod tests {
194
192
peers : HashSet :: from ( [ 2 , 3 , 4 , 5 ] ) ,
195
193
term : 3 ,
196
194
log,
195
+ state,
197
196
node_tx,
198
- state_tx,
199
197
role : Candidate :: new ( ) ,
200
198
} ;
201
199
node. role . votes . insert ( 1 ) ;
202
- Ok ( ( node, node_rx, state_rx ) )
200
+ Ok ( ( node, node_rx) )
203
201
}
204
202
205
203
#[ test]
206
204
// Heartbeat for current term converts to follower and emits ConfirmLeader.
207
205
fn step_heartbeat_current_term ( ) -> Result < ( ) > {
208
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
206
+ let ( candidate, mut node_rx) = setup ( ) ?;
209
207
let mut node = candidate. step ( Message {
210
208
from : Address :: Node ( 2 ) ,
211
209
to : Address :: Node ( 1 ) ,
@@ -219,18 +217,17 @@ mod tests {
219
217
from: Address :: Node ( 1 ) ,
220
218
to: Address :: Node ( 2 ) ,
221
219
term: 3 ,
222
- event: Event :: ConfirmLeader { commit_index : 2 , has_committed: true , read_seq: 7 } ,
220
+ event: Event :: ConfirmLeader { has_committed: true , read_seq: 7 } ,
223
221
} ] ,
224
222
) ;
225
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
226
223
Ok ( ( ) )
227
224
}
228
225
229
226
#[ test]
230
227
// Heartbeat for future term converts to follower and emits ConfirmLeader
231
228
// event.
232
229
fn step_heartbeat_future_term ( ) -> Result < ( ) > {
233
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
230
+ let ( candidate, mut node_rx) = setup ( ) ?;
234
231
let mut node = candidate. step ( Message {
235
232
from : Address :: Node ( 2 ) ,
236
233
to : Address :: Node ( 1 ) ,
@@ -244,17 +241,16 @@ mod tests {
244
241
from: Address :: Node ( 1 ) ,
245
242
to: Address :: Node ( 2 ) ,
246
243
term: 4 ,
247
- event: Event :: ConfirmLeader { commit_index : 2 , has_committed: true , read_seq: 7 } ,
244
+ event: Event :: ConfirmLeader { has_committed: true , read_seq: 7 } ,
248
245
} ] ,
249
246
) ;
250
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
251
247
Ok ( ( ) )
252
248
}
253
249
254
250
#[ test]
255
251
// Heartbeat for past term is ignored
256
252
fn step_heartbeat_past_term ( ) -> Result < ( ) > {
257
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
253
+ let ( candidate, mut node_rx) = setup ( ) ?;
258
254
let mut node = candidate. step ( Message {
259
255
from : Address :: Node ( 2 ) ,
260
256
to : Address :: Node ( 1 ) ,
@@ -263,13 +259,12 @@ mod tests {
263
259
} ) ?;
264
260
assert_node ( & mut node) . is_candidate ( ) . term ( 3 ) ;
265
261
assert_messages ( & mut node_rx, vec ! [ ] ) ;
266
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
267
262
Ok ( ( ) )
268
263
}
269
264
270
265
#[ test]
271
266
fn step_grantvote ( ) -> Result < ( ) > {
272
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
267
+ let ( candidate, mut node_rx) = setup ( ) ?;
273
268
let peers = candidate. peers . clone ( ) ;
274
269
let mut node = Node :: Candidate ( candidate) ;
275
270
@@ -282,7 +277,6 @@ mod tests {
282
277
} ) ?;
283
278
assert_node ( & mut node) . is_candidate ( ) . term ( 3 ) ;
284
279
assert_messages ( & mut node_rx, vec ! [ ] ) ;
285
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
286
280
287
281
// However, the second external vote makes us leader
288
282
node = node. step ( Message {
@@ -320,14 +314,13 @@ mod tests {
320
314
}
321
315
322
316
assert_messages ( & mut node_rx, vec ! [ ] ) ;
323
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
324
317
Ok ( ( ) )
325
318
}
326
319
327
320
#[ test]
328
321
// ClientRequest returns Error::Abort.
329
322
fn step_clientrequest ( ) -> Result < ( ) > {
330
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
323
+ let ( candidate, mut node_rx) = setup ( ) ?;
331
324
let mut node = Node :: Candidate ( candidate) ;
332
325
333
326
node = node. step ( Message {
@@ -346,13 +339,12 @@ mod tests {
346
339
event: Event :: ClientResponse { id: vec![ 0x01 ] , response: Err ( Error :: Abort ) } ,
347
340
} ] ,
348
341
) ;
349
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
350
342
Ok ( ( ) )
351
343
}
352
344
353
345
#[ test]
354
346
fn tick ( ) -> Result < ( ) > {
355
- let ( candidate, mut node_rx, mut state_rx ) = setup ( ) ?;
347
+ let ( candidate, mut node_rx) = setup ( ) ?;
356
348
let timeout = candidate. role . election_timeout ;
357
349
let mut node = Node :: Candidate ( candidate) ;
358
350
@@ -372,7 +364,6 @@ mod tests {
372
364
event: Event :: SolicitVote { last_index: 3 , last_term: 2 } ,
373
365
} ] ,
374
366
) ;
375
- assert_messages ( & mut state_rx, vec ! [ ] ) ;
376
367
Ok ( ( ) )
377
368
}
378
369
}
0 commit comments