@@ -6,15 +6,11 @@ use std::time::Duration;
66
77const TIMEOUT : Duration = Duration :: from_secs ( 3 ) ;
88const CLUSTER_NAME : & str = "test-cluster" ;
9-
10- fn names ( ) -> Vec < String > {
11- vec ! [ "A" . to_string( ) , "B" . to_string( ) , "C" . to_string( ) ]
12- }
9+ const NAMES : [ & str ; 3 ] = [ "A" , "B" , "C" ] ;
1310
1411#[ tokio:: test]
1512async fn test_start_and_elect_leader ( ) {
16- let harness = make_harness ( names ( ) ) . await ;
17-
13+ let harness = make_harness ( & NAMES ) . await ;
1814 harness. wait_for_leader ( TIMEOUT , term_greater ( 0 ) ) . await ;
1915
2016 harness. validate ( ) . await ;
@@ -25,7 +21,8 @@ async fn test_start_and_elect_leader() {
2521async fn test_start_and_elect_leader_many_nodes ( ) {
2622 let n = 17 ;
2723 let owned: Vec < String > = ( 1 ..=n) . map ( |i| i. to_string ( ) ) . collect ( ) ;
28- let harness = make_harness ( owned) . await ;
24+ let names: Vec < & str > = owned. iter ( ) . map ( |s| s. as_str ( ) ) . collect ( ) ;
25+ let harness = make_harness ( & names) . await ;
2926
3027 harness. wait_for_leader ( TIMEOUT , term_greater ( 0 ) ) . await ;
3128
@@ -35,7 +32,7 @@ async fn test_start_and_elect_leader_many_nodes() {
3532
3633#[ tokio:: test]
3734async fn test_disconnect_leader ( ) {
38- let harness = make_harness ( names ( ) ) . await ;
35+ let harness = make_harness ( & NAMES ) . await ;
3936
4037 // Wait for the initial leader and capture its term and server.
4138 let ( term1, leader1) = harness. wait_for_leader ( TIMEOUT , term_greater ( 0 ) ) . await ;
@@ -65,7 +62,7 @@ async fn test_disconnect_leader() {
6562
6663#[ tokio:: test]
6764async fn test_commit ( ) {
68- let harness = make_harness ( names ( ) ) . await ;
65+ let harness = make_harness ( & NAMES ) . await ;
6966 harness. wait_for_leader ( TIMEOUT , term_greater ( 0 ) ) . await ;
7067 let client = harness. make_raft_client ( ) ;
7168
@@ -79,42 +76,35 @@ async fn test_commit() {
7976
8077#[ tokio:: test]
8178async fn test_reconfigure_cluster ( ) {
82- let names = vec ! [
83- "A" . to_string( ) ,
84- "B" . to_string( ) ,
85- "C" . to_string( ) ,
86- "D" . to_string( ) ,
87- "E" . to_string( ) ,
88- ] ;
89- let harness = make_harness ( names. clone ( ) ) . await ;
79+ let names = vec ! [ "A" , "B" , "C" , "D" , "E" ] ;
80+ let harness = make_harness ( & names) . await ;
9081
9182 let ( t1, leader1) = harness. wait_for_leader ( TIMEOUT , term_greater ( 0 ) ) . await ;
9283
93- let without_leader: Vec < String > = names
94- . clone ( )
84+ let without_leader: Vec < & str > = names
9585 . iter ( )
96- . filter ( | & s| * s != leader1 . name )
97- . map ( |s| s . clone ( ) )
86+ . copied ( )
87+ . filter ( |s| * s != leader1 . name )
9888 . collect ( ) ;
9989 assert_eq ! ( without_leader. len( ) , 4 ) ;
10090
10191 // Change cluster to contain only 3 members, and not including the current leader.
102- let new_members: Vec < String > = without_leader. iter ( ) . take ( 3 ) . map ( |s| s . clone ( ) ) . collect ( ) ;
92+ let new_members: Vec < & str > = without_leader. iter ( ) . copied ( ) . take ( 3 ) . collect ( ) ;
10393 let result = harness. update_members ( new_members. clone ( ) ) . await ;
10494 assert ! ( result. is_ok( ) ) ;
10595
10696 // Wait for a new leader and verify.
10797 let ( _, leader2) = harness. wait_for_leader ( TIMEOUT , term_greater ( t1) ) . await ;
10898 assert_ne ! ( & leader2. name, & leader1. name) ;
109- assert ! ( new_members. contains( & leader2. name) ) ;
99+ assert ! ( new_members. contains( & leader2. name. as_str ( ) ) ) ;
110100
111101 harness. validate ( ) . await ;
112102 harness. stop ( ) . await ;
113103}
114104
115105#[ tokio:: test]
116106async fn test_keyvalue ( ) {
117- let harness = make_harness ( names ( ) ) . await ;
107+ let harness = make_harness ( & NAMES ) . await ;
118108 let mut kv = harness. make_kv_client ( ) . await ;
119109
120110 let k1 = "k1" . as_bytes ( ) . to_vec ( ) ;
@@ -137,7 +127,7 @@ async fn test_keyvalue() {
137127async fn test_snapshotting ( ) {
138128 let raft_options =
139129 Options :: new_without_persistence_for_testing ( ) . with_compaction ( 5 * 1024 * 1024 , 1000 ) ;
140- let harness = make_harness_with_options ( names ( ) , Some ( raft_options) ) . await ;
130+ let harness = make_harness_with_options ( & NAMES , Some ( raft_options) ) . await ;
141131
142132 // Disconnect a node that will later have to catch up.
143133 harness. failures ( ) . lock ( ) . await . disconnect ( "B" ) ;
@@ -175,22 +165,21 @@ fn term_greater(n: i64) -> Box<dyn Fn(&(i64, Server)) -> bool> {
175165 Box :: new ( move |( term, _) | * term > n)
176166}
177167
178- async fn make_harness ( nodes : Vec < String > ) -> Harness {
168+ async fn make_harness ( nodes : & [ & str ] ) -> Harness {
179169 make_harness_with_options ( nodes, None ) . await
180170}
181171
182- async fn make_harness_with_options ( nodes : Vec < String > , options : Option < Options > ) -> Harness {
183- let mut builder = Harness :: builder ( nodes) . await . expect ( "builder" ) ;
172+ async fn make_harness_with_options ( nodes : & [ & str ] , options : Option < Options > ) -> Harness {
173+ let mut builder = Harness :: builder ( CLUSTER_NAME , nodes)
174+ . await
175+ . expect ( "builder" ) ;
184176
185177 if let Some ( opts) = options {
186178 builder = builder. with_options ( opts)
187179 }
188180
189181 let wipe_persistence = true ;
190- let ( harness, serving) = builder
191- . build ( CLUSTER_NAME , wipe_persistence)
192- . await
193- . expect ( "harness" ) ;
182+ let ( harness, serving) = builder. build ( wipe_persistence) . await . expect ( "harness" ) ;
194183 harness. start ( ) . await ;
195184 tokio:: spawn ( async { serving. await } ) ;
196185 harness
0 commit comments