@@ -47,30 +47,30 @@ func (a *Adapter) GetInterestedEvents() ([]*ehpb.Interest, error) {
47
47
return []* ehpb.Interest {
48
48
& ehpb.Interest {EventType : ehpb .EventType_BLOCK },
49
49
& ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "event1" }}},
50
- & ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "" }}},
50
+ & ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "event2 " }}},
51
51
}, nil
52
52
//return []*ehpb.Interest{&ehpb.Interest{EventType: ehpb.EventType_BLOCK}}, nil
53
53
}
54
54
55
+ func (a * Adapter ) updateCountNotify () {
56
+ a .Lock ()
57
+ a .count --
58
+ if a .count <= 0 {
59
+ a .notfy <- struct {}{}
60
+ }
61
+ a .Unlock ()
62
+ }
63
+
55
64
func (a * Adapter ) Recv (msg * ehpb.Event ) (bool , error ) {
56
- //fmt.Printf("Adapter received %+v\n", msg.Event)
57
65
switch x := msg .Event .(type ) {
58
- case * ehpb.Event_Block :
59
- case * ehpb. Event_ChaincodeEvent :
66
+ case * ehpb.Event_Block , * ehpb. Event_ChaincodeEvent , * ehpb. Event_Register , * ehpb. Event_Unregister :
67
+ a . updateCountNotify ()
60
68
case nil :
61
69
// The field is not set.
62
- fmt .Printf ("event not set\n " )
63
70
return false , fmt .Errorf ("event not set" )
64
71
default :
65
- fmt .Printf ("unexpected type %T\n " , x )
66
72
return false , fmt .Errorf ("unexpected type %T" , x )
67
73
}
68
- a .Lock ()
69
- a .count --
70
- if a .count <= 0 {
71
- a .notfy <- struct {}{}
72
- }
73
- a .Unlock ()
74
74
return true , nil
75
75
}
76
76
@@ -107,17 +107,13 @@ func TestReceiveMessage(t *testing.T) {
107
107
t .Logf ("Error sending message %s" , err )
108
108
}
109
109
110
- //receive 2 messages
111
- for i := 0 ; i < 2 ; i ++ {
112
- select {
113
- case <- adapter .notfy :
114
- case <- time .After (5 * time .Second ):
115
- t .Fail ()
116
- t .Logf ("timed out on messge" )
117
- }
110
+ select {
111
+ case <- adapter .notfy :
112
+ case <- time .After (2 * time .Second ):
113
+ t .Fail ()
114
+ t .Logf ("timed out on messge" )
118
115
}
119
116
}
120
-
121
117
func TestReceiveAnyMessage (t * testing.T ) {
122
118
var err error
123
119
@@ -144,6 +140,42 @@ func TestReceiveAnyMessage(t *testing.T) {
144
140
}
145
141
}
146
142
}
143
+ func TestReceiveCCWildcard (t * testing.T ) {
144
+ var err error
145
+
146
+ adapter .count = 1
147
+ obcEHClient .RegisterAsync ([]* ehpb.Interest {& ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "" }}}})
148
+
149
+ select {
150
+ case <- adapter .notfy :
151
+ case <- time .After (2 * time .Second ):
152
+ t .Fail ()
153
+ t .Logf ("timed out on messge" )
154
+ }
155
+
156
+ adapter .count = 1
157
+ emsg := createTestChaincodeEvent ("0xffffffff" , "wildcardevent" )
158
+ if err = producer .Send (emsg ); err != nil {
159
+ t .Fail ()
160
+ t .Logf ("Error sending message %s" , err )
161
+ }
162
+
163
+ select {
164
+ case <- adapter .notfy :
165
+ case <- time .After (2 * time .Second ):
166
+ t .Fail ()
167
+ t .Logf ("timed out on messge" )
168
+ }
169
+ adapter .count = 1
170
+ obcEHClient .UnregisterAsync ([]* ehpb.Interest {& ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "" }}}})
171
+
172
+ select {
173
+ case <- adapter .notfy :
174
+ case <- time .After (2 * time .Second ):
175
+ t .Fail ()
176
+ t .Logf ("timed out on messge" )
177
+ }
178
+ }
147
179
148
180
func TestFailReceive (t * testing.T ) {
149
181
var err error
@@ -163,6 +195,56 @@ func TestFailReceive(t *testing.T) {
163
195
}
164
196
}
165
197
198
+ func TestUnregister (t * testing.T ) {
199
+ var err error
200
+ obcEHClient .RegisterAsync ([]* ehpb.Interest {& ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "event10" }}}})
201
+
202
+ adapter .count = 1
203
+ select {
204
+ case <- adapter .notfy :
205
+ case <- time .After (2 * time .Second ):
206
+ t .Fail ()
207
+ t .Logf ("timed out on messge" )
208
+ }
209
+
210
+ emsg := createTestChaincodeEvent ("0xffffffff" , "event10" )
211
+ if err = producer .Send (emsg ); err != nil {
212
+ t .Fail ()
213
+ t .Logf ("Error sending message %s" , err )
214
+ }
215
+
216
+ adapter .count = 1
217
+ select {
218
+ case <- adapter .notfy :
219
+ case <- time .After (2 * time .Second ):
220
+ t .Fail ()
221
+ t .Logf ("timed out on messge" )
222
+ }
223
+ obcEHClient .UnregisterAsync ([]* ehpb.Interest {& ehpb.Interest {EventType : ehpb .EventType_CHAINCODE , RegInfo : & ehpb.Interest_ChaincodeRegInfo {ChaincodeRegInfo : & ehpb.ChaincodeReg {ChaincodeID : "0xffffffff" , EventName : "event10" }}}})
224
+ adapter .count = 1
225
+ select {
226
+ case <- adapter .notfy :
227
+ case <- time .After (2 * time .Second ):
228
+ t .Fail ()
229
+ t .Logf ("should have received unreg" )
230
+ }
231
+
232
+ adapter .count = 1
233
+ emsg = createTestChaincodeEvent ("0xffffffff" , "event10" )
234
+ if err = producer .Send (emsg ); err != nil {
235
+ t .Fail ()
236
+ t .Logf ("Error sending message %s" , err )
237
+ }
238
+
239
+ select {
240
+ case <- adapter .notfy :
241
+ t .Fail ()
242
+ t .Logf ("should NOT have received event1" )
243
+ case <- time .After (5 * time .Second ):
244
+ }
245
+
246
+ }
247
+
166
248
func BenchmarkMessages (b * testing.B ) {
167
249
numMessages := 10000
168
250
@@ -220,9 +302,10 @@ func TestMain(m *testing.M) {
220
302
fmt .Printf ("Starting events server\n " )
221
303
go grpcServer .Serve (lis )
222
304
305
+ var regTimeout = 5 * time .Second
223
306
done := make (chan struct {})
224
307
adapter = & Adapter {notfy : done }
225
- obcEHClient = consumer .NewEventsClient (peerAddress , adapter )
308
+ obcEHClient , _ = consumer .NewEventsClient (peerAddress , regTimeout , adapter )
226
309
if err = obcEHClient .Start (); err != nil {
227
310
fmt .Printf ("could not start chat %s\n " , err )
228
311
obcEHClient .Stop ()
0 commit comments