@@ -118,7 +118,7 @@ func (s *simpleReceiver) OnCallback(result string) {
118
118
119
119
var _ = Describe ("Client" , func () {
120
120
formatOption := TransferFormat ("Text" )
121
- Context ("Start/Stop " , func () {
121
+ Context ("Start/Cancel " , func () {
122
122
It ("should connect to the server and then be stopped without error" , func (done Done ) {
123
123
// Create a simple server
124
124
server , err := NewServer (context .TODO (), SimpleHubFactory (& simpleHub {}),
@@ -132,14 +132,20 @@ var _ = Describe("Client", func() {
132
132
// Start the server
133
133
go func () { _ = server .Serve (srvConn ) }()
134
134
// Create the Client
135
- clientConn , err := NewClient (context .TODO (), cliConn , testLoggerOption (), formatOption )
135
+ ctx , cancelClient := context .WithCancel (context .Background ())
136
+ clientConn , err := NewClient (ctx , cliConn , testLoggerOption (), formatOption )
136
137
Expect (err ).NotTo (HaveOccurred ())
137
138
Expect (clientConn ).NotTo (BeNil ())
138
139
// Start it
139
- err = clientConn .Start ()
140
- Expect (err ).NotTo (HaveOccurred ())
141
- err = clientConn .Stop ()
142
- Expect (err ).NotTo (HaveOccurred ())
140
+ errCh := clientConn .Start ()
141
+ clientLoopDone := make (chan struct {})
142
+ go func () {
143
+ defer GinkgoRecover ()
144
+ Expect (errors .Is (<- errCh , context .Canceled )).To (BeTrue ())
145
+ close (clientLoopDone )
146
+ }()
147
+ cancelClient ()
148
+ <- clientLoopDone
143
149
server .cancel ()
144
150
close (done )
145
151
}, 1.0 )
@@ -148,6 +154,7 @@ var _ = Describe("Client", func() {
148
154
var cliConn * pipeConnection
149
155
var srvConn * pipeConnection
150
156
var client Client
157
+ var cancelClient context.CancelFunc
151
158
var server Server
152
159
BeforeEach (func (done Done ) {
153
160
server , _ = NewServer (context .TODO (), SimpleHubFactory (& simpleHub {}),
@@ -159,13 +166,15 @@ var _ = Describe("Client", func() {
159
166
// Start the server
160
167
go func () { _ = server .Serve (srvConn ) }()
161
168
// Create the Client
162
- client , _ = NewClient (context .TODO (), cliConn , Receiver (simpleReceiver {}), testLoggerOption (), formatOption )
169
+ var ctx context.Context
170
+ ctx , cancelClient = context .WithCancel (context .Background ())
171
+ client , _ = NewClient (ctx , cliConn , Receiver (simpleReceiver {}), testLoggerOption (), formatOption )
163
172
// Start it
164
173
_ = client .Start ()
165
174
close (done )
166
175
}, 2.0 )
167
176
AfterEach (func (done Done ) {
168
- _ = client . Stop ()
177
+ cancelClient ()
169
178
server .cancel ()
170
179
close (done )
171
180
}, 2.0 )
@@ -199,6 +208,7 @@ var _ = Describe("Client", func() {
199
208
var cliConn * pipeConnection
200
209
var srvConn * pipeConnection
201
210
var client Client
211
+ var cancelClient context.CancelFunc
202
212
receiver := & simpleReceiver {}
203
213
var server Server
204
214
BeforeEach (func (done Done ) {
@@ -211,13 +221,15 @@ var _ = Describe("Client", func() {
211
221
// Start the server
212
222
go func () { _ = server .Serve (srvConn ) }()
213
223
// Create the Client
214
- client , _ = NewClient (context .TODO (), cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
224
+ var ctx context.Context
225
+ ctx , cancelClient = context .WithCancel (context .Background ())
226
+ client , _ = NewClient (ctx , cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
215
227
// Start it
216
228
_ = client .Start ()
217
229
close (done )
218
230
}, 2.0 )
219
231
AfterEach (func (done Done ) {
220
- _ = client . Stop ()
232
+ cancelClient ()
221
233
server .cancel ()
222
234
close (done )
223
235
}, 2.0 )
@@ -279,6 +291,7 @@ var _ = Describe("Client", func() {
279
291
var cliConn * pipeConnection
280
292
var srvConn * pipeConnection
281
293
var client Client
294
+ var cancelClient context.CancelFunc
282
295
var server Server
283
296
BeforeEach (func (done Done ) {
284
297
server , _ = NewServer (context .TODO (), SimpleHubFactory (& simpleHub {}),
@@ -291,13 +304,15 @@ var _ = Describe("Client", func() {
291
304
go func () { _ = server .Serve (srvConn ) }()
292
305
// Create the Client
293
306
receiver := & simpleReceiver {}
294
- client , _ = NewClient (context .TODO (), cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
307
+ var ctx context.Context
308
+ ctx , cancelClient = context .WithCancel (context .Background ())
309
+ client , _ = NewClient (ctx , cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
295
310
// Start it
296
311
_ = client .Start ()
297
312
close (done )
298
313
}, 2.0 )
299
314
AfterEach (func (done Done ) {
300
- _ = client . Stop ()
315
+ cancelClient ()
301
316
server .cancel ()
302
317
close (done )
303
318
}, 2.0 )
@@ -344,6 +359,7 @@ var _ = Describe("Client", func() {
344
359
var cliConn * pipeConnection
345
360
var srvConn * pipeConnection
346
361
var client Client
362
+ var cancelClient context.CancelFunc
347
363
var server Server
348
364
hub := & simpleHub {}
349
365
BeforeEach (func (done Done ) {
@@ -358,13 +374,15 @@ var _ = Describe("Client", func() {
358
374
go func () { _ = server .Serve (srvConn ) }()
359
375
// Create the Client
360
376
receiver := & simpleReceiver {}
361
- client , _ = NewClient (context .TODO (), cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
377
+ var ctx context.Context
378
+ ctx , cancelClient = context .WithCancel (context .Background ())
379
+ client , _ = NewClient (ctx , cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
362
380
// Start it
363
381
_ = client .Start ()
364
382
close (done )
365
383
}, 2.0 )
366
384
AfterEach (func (done Done ) {
367
- _ = client . Stop ()
385
+ cancelClient ()
368
386
server .cancel ()
369
387
close (done )
370
388
}, 2.0 )
@@ -396,6 +414,7 @@ var _ = Describe("Client", func() {
396
414
var cliConn * pipeConnection
397
415
var srvConn * pipeConnection
398
416
var client Client
417
+ var cancelClient context.CancelFunc
399
418
var server Server
400
419
hub := & simpleHub {}
401
420
BeforeEach (func (done Done ) {
@@ -410,23 +429,18 @@ var _ = Describe("Client", func() {
410
429
go func () { _ = server .Serve (srvConn ) }()
411
430
// Create the Client
412
431
receiver := & simpleReceiver {}
413
- client , _ = NewClient (context .TODO (), cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
432
+ var ctx context.Context
433
+ ctx , cancelClient = context .WithCancel (context .Background ())
434
+ client , _ = NewClient (ctx , cliConn , Receiver (receiver ), testLoggerOption (), formatOption )
414
435
// Start it
415
436
_ = client .Start ()
416
437
close (done )
417
438
}, 2.0 )
418
439
AfterEach (func (done Done ) {
419
- _ = client . Stop ()
440
+ cancelClient ()
420
441
server .cancel ()
421
442
close (done )
422
443
}, 2.0 )
423
-
424
- It ("client.Context.Err() should be the error which made the connection fail" , func (done Done ) {
425
- failErr := errors .New ("fail" )
426
- cliConn .fail .Store (failErr )
427
- <- client .Context ().Done ()
428
- Expect (client .Context ().Err (), Equal (failErr ))
429
- close (done )
430
- }, 6.0 )
444
+ // TODO
431
445
})
432
446
})
0 commit comments