Skip to content

Commit 5278562

Browse files
committedApr 9, 2019
Test: remove member from channel
1 parent 4789ba0 commit 5278562

File tree

5 files changed

+76
-4
lines changed

5 files changed

+76
-4
lines changed
 

‎discovery/service.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ func (d *gossipDiscoveryService) GetMembership() []common.NetworkMember {
213213
}
214214

215215
func (d *gossipDiscoveryService) Stop() {
216-
defer logging.Info("Stopped")
217-
logging.Info("Stopping")
216+
defer logging.Info("Stopped discovery")
217+
logging.Info("Stopping discovery")
218218

219219
d.lock.Lock()
220220
defer d.lock.Unlock()

‎filter/filter_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,20 @@ func TestSelecdtPeers(t *testing.T) {
5454
assert.Len(t, SelectPeers(3, peers, CombineRoutingFilters(SelectAllPolicy, pa)), 1)
5555
assert.Len(t, SelectPeers(3, peers, CombineRoutingFilters(SelectAllPolicy, pb)), 1)
5656
}
57+
58+
func TestSelectAllPeers(t *testing.T) {
59+
a := common.NetworkMember{Endpoint: "a"}
60+
b := common.NetworkMember{Endpoint: "b"}
61+
c := common.NetworkMember{Endpoint: "c"}
62+
d := common.NetworkMember{Endpoint: "d"}
63+
e := common.NetworkMember{Endpoint: "e"}
64+
f := common.NetworkMember{Endpoint: "f"}
65+
g := common.NetworkMember{Endpoint: "g"}
66+
67+
peers := []common.NetworkMember{a, b, c, d, e, f, g}
68+
filter := func(member common.NetworkMember) bool {
69+
return member.Endpoint == "a" || member.Endpoint == "b" || member.Endpoint == "c" || member.Endpoint == "d"
70+
}
71+
72+
assert.Len(t, SelectAllPeers(peers, filter), 4)
73+
}

‎gossip/channel_test.go

+53
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,59 @@ func TestCreateLeaveChainMessage(t *testing.T) {
104104
assert.True(t, len(msg.Envelope.Signature) > 0)
105105
}
106106

107+
func TestRemoveMemberWithChain(t *testing.T) {
108+
gossipSvc1, err := CreateGossipServer([]string{"localhost:9058"}, "localhost:9058", 0)
109+
require.NoError(t, err)
110+
defer gossipSvc1.Stop()
111+
112+
gossipSvc2, err := CreateGossipServer([]string{"localhost:9058"}, "localhost:10058", 1)
113+
require.NoError(t, err)
114+
defer gossipSvc2.Stop()
115+
116+
mac := channel.GenerateMAC(gossipSvc1.SelfPKIid(), "channel3")
117+
_, err = gossipSvc1.CreateChain(mac, "channel3", []common.FileSyncInfo{})
118+
assert.NoError(t, err)
119+
120+
_, err = gossipSvc1.AddMemberToChain(mac, gossipSvc2.SelfPKIid())
121+
assert.NoError(t, err)
122+
123+
time.Sleep(5 * time.Second)
124+
chainState := gossipSvc2.SelfChainInfo("channel3")
125+
assert.NotNil(t, chainState)
126+
127+
gossipSvc3, err := CreateGossipServer([]string{"localhost:9058"}, "localhost:8058", 2)
128+
require.NoError(t, err)
129+
defer gossipSvc3.Stop()
130+
131+
_, err = gossipSvc1.AddMemberToChain(mac, gossipSvc3.SelfPKIid())
132+
assert.NoError(t, err)
133+
134+
time.Sleep(5 * time.Second)
135+
chainState = gossipSvc3.SelfChainInfo("channel3")
136+
assert.NotNil(t, chainState)
137+
138+
chainState, err = gossipSvc1.RemoveMemberWithChain(mac, []byte{0})
139+
assert.NoError(t, err)
140+
chainInfo, err := chainState.GetChainStateInfo()
141+
assert.NoError(t, err)
142+
assert.Len(t, chainInfo.Properties.Members, 3)
143+
144+
_, err = gossipSvc2.RemoveMemberWithChain(mac, gossipSvc3.SelfPKIid())
145+
assert.Error(t, err)
146+
assert.Contains(t, err.Error(), "Failed verifying ChainStateInfo message")
147+
148+
chainState, err = gossipSvc1.RemoveMemberWithChain(mac, gossipSvc3.SelfPKIid())
149+
assert.NoError(t, err)
150+
chainInfo, err = chainState.GetChainStateInfo()
151+
assert.NoError(t, err)
152+
assert.Len(t, chainInfo.Properties.Members, 2)
153+
154+
time.Sleep(5 * time.Second)
155+
156+
chainState = gossipSvc3.SelfChainInfo("channel3")
157+
assert.Nil(t, chainState)
158+
}
159+
107160
func secureDialOpts() []grpc.DialOption {
108161
var dialOpts []grpc.DialOption
109162
dialOpts = append(dialOpts, grpc.WithDefaultCallOptions(

‎gossip/chanstate.go

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ type channelState struct {
3838
}
3939

4040
func (cs *channelState) stop() {
41+
logging.Info("Stopping channelState")
42+
defer logging.Info("Stopped channelState")
4143
if cs.isStopping() {
4244
return
4345
}

‎rpc/rpc.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -379,8 +379,8 @@ func (s *Server) Stop() {
379379
if !atomic.CompareAndSwapInt32(&s.stopping, int32(0), int32(1)) {
380380
return
381381
}
382-
logging.Info("Stopping")
383-
defer logging.Info("Stopped")
382+
logging.Info("Stopping rpc")
383+
defer logging.Info("Stopped rpc")
384384
if s.gSrv != nil {
385385
s.gSrv.Stop()
386386
}

0 commit comments

Comments
 (0)