@@ -140,7 +140,7 @@ func TestLeaderElectionWithDeliverClient(t *testing.T) {
140
140
}
141
141
addPeersToChannel (t , n , channelName , gossips , peerIndexes )
142
142
143
- waitForFullMembershipOrFailNow (t , gossips , n , time .Second * 20 , time .Second * 2 )
143
+ waitForFullMembershipOrFailNow (t , channelName , gossips , n , time .Second * 20 , time .Second * 2 )
144
144
145
145
services := make ([]* electionService , n )
146
146
@@ -200,7 +200,7 @@ func TestWithStaticDeliverClientLeader(t *testing.T) {
200
200
201
201
addPeersToChannel (t , n , channelName , gossips , peerIndexes )
202
202
203
- waitForFullMembershipOrFailNow (t , gossips , n , time .Second * 30 , time .Second * 2 )
203
+ waitForFullMembershipOrFailNow (t , channelName , gossips , n , time .Second * 30 , time .Second * 2 )
204
204
205
205
deliverServiceFactory := & mockDeliverServiceFactory {
206
206
service : & mockDeliverService {
@@ -254,7 +254,7 @@ func TestWithStaticDeliverClientNotLeader(t *testing.T) {
254
254
255
255
addPeersToChannel (t , n , channelName , gossips , peerIndexes )
256
256
257
- waitForFullMembershipOrFailNow (t , gossips , n , time .Second * 30 , time .Second * 2 )
257
+ waitForFullMembershipOrFailNow (t , channelName , gossips , n , time .Second * 30 , time .Second * 2 )
258
258
259
259
deliverServiceFactory := & mockDeliverServiceFactory {
260
260
service : & mockDeliverService {
@@ -294,7 +294,7 @@ func TestWithStaticDeliverClientBothStaticAndLeaderElection(t *testing.T) {
294
294
295
295
addPeersToChannel (t , n , channelName , gossips , peerIndexes )
296
296
297
- waitForFullMembershipOrFailNow (t , gossips , n , time .Second * 30 , time .Second * 2 )
297
+ waitForFullMembershipOrFailNow (t , channelName , gossips , n , time .Second * 30 , time .Second * 2 )
298
298
299
299
deliverServiceFactory := & mockDeliverServiceFactory {
300
300
service : & mockDeliverService {
@@ -412,7 +412,7 @@ func TestLeaderElectionWithRealGossip(t *testing.T) {
412
412
}
413
413
addPeersToChannel (t , n , channelName , gossips , peerIndexes )
414
414
415
- waitForFullMembershipOrFailNow (t , gossips , n , time .Second * 30 , time .Second * 2 )
415
+ waitForFullMembershipOrFailNow (t , channelName , gossips , n , time .Second * 30 , time .Second * 2 )
416
416
417
417
logger .Warning ("Starting leader election services" )
418
418
@@ -448,6 +448,12 @@ func TestLeaderElectionWithRealGossip(t *testing.T) {
448
448
secondChannelServices := make ([]* electionService , len (secondChannelPeerIndexes ))
449
449
addPeersToChannel (t , n , secondChannelName , gossips , secondChannelPeerIndexes )
450
450
451
+ secondChannelGossips := make ([]GossipService , 0 )
452
+ for _ , i := range secondChannelPeerIndexes {
453
+ secondChannelGossips = append (secondChannelGossips , gossips [i ])
454
+ }
455
+ waitForFullMembershipOrFailNow (t , secondChannelName , secondChannelGossips , len (secondChannelGossips ), time .Second * 30 , time .Millisecond * 100 )
456
+
451
457
for idx , i := range secondChannelPeerIndexes {
452
458
secondChannelServices [idx ] = & electionService {nil , false , 0 }
453
459
secondChannelServices [idx ].LeaderElectionService =
@@ -481,7 +487,8 @@ func TestLeaderElectionWithRealGossip(t *testing.T) {
481
487
482
488
stopPeers (gossips [:2 ])
483
489
484
- waitForFullMembershipOrFailNow (t , gossips [2 :], n - 2 , time .Second * 30 , time .Second * 2 )
490
+ waitForFullMembershipOrFailNow (t , channelName , gossips [2 :], n - 2 , time .Second * 30 , time .Millisecond * 100 )
491
+ waitForFullMembershipOrFailNow (t , secondChannelName , secondChannelGossips [1 :], len (secondChannelGossips )- 1 , time .Second * 30 , time .Millisecond * 100 )
485
492
486
493
assert .True (t , waitForLeaderElection (t , services [2 :], time .Second * 30 , time .Second * 2 ), "One leader should be selected after re-election - chanA" )
487
494
assert .True (t , waitForLeaderElection (t , secondChannelServices [1 :], time .Second * 30 , time .Second * 2 ), "One leader should be selected after re-election - chanB" )
@@ -537,13 +544,13 @@ func (jmc *joinChanMsg) AnchorPeersOf(org api.OrgIdentityType) []api.AnchorPeer
537
544
return []api.AnchorPeer {}
538
545
}
539
546
540
- func waitForFullMembershipOrFailNow (t * testing.T , gossips []GossipService , peersNum int , timeout time.Duration , testPollInterval time.Duration ) {
547
+ func waitForFullMembershipOrFailNow (t * testing.T , channel string , gossips []GossipService , peersNum int , timeout time.Duration , testPollInterval time.Duration ) {
541
548
end := time .Now ().Add (timeout )
542
549
var correctPeers int
543
550
for time .Now ().Before (end ) {
544
551
correctPeers = 0
545
552
for _ , g := range gossips {
546
- if len (g .Peers ( )) == (peersNum - 1 ) {
553
+ if len (g .PeersOfChannel ( gossipCommon . ChainID ( channel ) )) == (peersNum - 1 ) {
547
554
correctPeers ++
548
555
}
549
556
}
@@ -552,7 +559,7 @@ func waitForFullMembershipOrFailNow(t *testing.T, gossips []GossipService, peers
552
559
}
553
560
time .Sleep (testPollInterval )
554
561
}
555
- t .Fatalf ("Failed to establish full membership. Only %d out of %d peers have full membership" , correctPeers , peersNum )
562
+ t .Fatalf ("Failed to establish full channel membership. Only %d out of %d peers have full membership" , correctPeers , peersNum )
556
563
}
557
564
558
565
func waitForMultipleLeadersElection (t * testing.T , services []* electionService , leadersNum int , timeout time.Duration , testPollInterval time.Duration ) bool {
0 commit comments