@@ -26,6 +26,12 @@ func shutdown(nodes []Node) {
2626 for _ , n := range nodes {
2727 n .grpcServer .Stop ()
2828 n .redisServer .Stop ()
29+ if n .raft != nil {
30+ n .raft .Shutdown ()
31+ }
32+ if n .tm != nil {
33+ _ = n .tm .Close ()
34+ }
2935 }
3036}
3137
@@ -80,15 +86,19 @@ type Node struct {
8086 redisAddress string
8187 grpcServer * grpc.Server
8288 redisServer * RedisServer
89+ raft * raft.Raft
90+ tm * transport.Manager
8391}
8492
85- func newNode (grpcAddress , raftAddress , redisAddress string , grpcs * grpc.Server , rd * RedisServer ) Node {
93+ func newNode (grpcAddress , raftAddress , redisAddress string , r * raft. Raft , tm * transport. Manager , grpcs * grpc.Server , rd * RedisServer ) Node {
8694 return Node {
8795 grpcAddress : grpcAddress ,
8896 raftAddress : raftAddress ,
8997 redisAddress : redisAddress ,
9098 grpcServer : grpcs ,
9199 redisServer : rd ,
100+ raft : r ,
101+ tm : tm ,
92102 }
93103}
94104
@@ -98,6 +108,11 @@ func createNode(t *testing.T, n int) ([]Node, []string, []string) {
98108 var redisAdders []string
99109 var nodes []Node
100110
111+ const (
112+ waitTimeout = 5 * time .Second
113+ waitInterval = 100 * time .Millisecond
114+ )
115+
101116 cfg := raft.Configuration {}
102117 ports := make ([]portsAdress , n )
103118
@@ -165,14 +180,33 @@ func createNode(t *testing.T, n int) ([]Node, []string, []string) {
165180 port .grpcAddress ,
166181 port .raftAddress ,
167182 port .redisAddress ,
183+ r ,
184+ tm ,
168185 s ,
169- rd ) ,
170- )
186+ rd ,
187+ ))
171188
172189 }
173190
174- //nolint:mnd
175- time .Sleep (10 * time .Second )
191+ for _ , n := range nodes {
192+ assert .Eventually (t , func () bool {
193+ conn , err := net .DialTimeout ("tcp" , n .grpcAddress , time .Second )
194+ if err != nil {
195+ return false
196+ }
197+ _ = conn .Close ()
198+ conn , err = net .DialTimeout ("tcp" , n .redisAddress , time .Second )
199+ if err != nil {
200+ return false
201+ }
202+ _ = conn .Close ()
203+ return true
204+ }, waitTimeout , waitInterval )
205+ }
206+
207+ assert .Eventually (t , func () bool {
208+ return nodes [0 ].raft .State () == raft .Leader
209+ }, waitTimeout , waitInterval )
176210
177211 return nodes , grpcAdders , redisAdders
178212}
0 commit comments