1
1
package multiplex
2
2
3
3
import (
4
+ "context"
4
5
"fmt"
5
6
"io"
6
7
"io/ioutil"
@@ -28,7 +29,7 @@ func TestSlowReader(t *testing.T) {
28
29
29
30
mes := []byte ("Hello world" )
30
31
31
- sa , err := mpa .NewStream ()
32
+ sa , err := mpa .NewStream (context . Background () )
32
33
if err != nil {
33
34
t .Fatal (err )
34
35
}
@@ -85,7 +86,7 @@ func TestBasicStreams(t *testing.T) {
85
86
}
86
87
}()
87
88
88
- s , err := mpa .NewStream ()
89
+ s , err := mpa .NewStream (context . Background () )
89
90
if err != nil {
90
91
t .Fatal (err )
91
92
}
@@ -105,6 +106,32 @@ func TestBasicStreams(t *testing.T) {
105
106
mpb .Close ()
106
107
}
107
108
109
+ func TestOpenStreamDeadline (t * testing.T ) {
110
+ a , _ := net .Pipe ()
111
+ mp := NewMultiplex (a , false )
112
+
113
+ ctx , cancel := context .WithTimeout (context .Background (), 100 * time .Millisecond )
114
+ defer cancel ()
115
+ var counter int
116
+ var deadlineExceeded bool
117
+ for i := 0 ; i < 1000 ; i ++ {
118
+ if _ , err := mp .NewStream (ctx ); err != nil {
119
+ if err != context .DeadlineExceeded {
120
+ t .Fatalf ("expected the error to be a deadline error, got %s" , err .Error ())
121
+ }
122
+ deadlineExceeded = true
123
+ break
124
+ }
125
+ counter ++
126
+ }
127
+ if counter == 0 {
128
+ t .Fatal ("expected at least some streams to open successfully" )
129
+ }
130
+ if ! deadlineExceeded {
131
+ t .Fatal ("expected a deadline error to occur at some point" )
132
+ }
133
+ }
134
+
108
135
func TestWriteAfterClose (t * testing.T ) {
109
136
a , b := net .Pipe ()
110
137
@@ -134,7 +161,7 @@ func TestWriteAfterClose(t *testing.T) {
134
161
close (done )
135
162
}()
136
163
137
- s , err := mpa .NewStream ()
164
+ s , err := mpa .NewStream (context . Background () )
138
165
if err != nil {
139
166
t .Fatal (err )
140
167
}
@@ -178,7 +205,7 @@ func TestEcho(t *testing.T) {
178
205
io .Copy (s , s )
179
206
}()
180
207
181
- s , err := mpa .NewStream ()
208
+ s , err := mpa .NewStream (context . Background () )
182
209
if err != nil {
183
210
t .Fatal (err )
184
211
}
@@ -214,7 +241,7 @@ func TestFullClose(t *testing.T) {
214
241
215
242
mes := make ([]byte , 40960 )
216
243
rand .Read (mes )
217
- s , err := mpa .NewStream ()
244
+ s , err := mpa .NewStream (context . Background () )
218
245
if err != nil {
219
246
t .Fatal (err )
220
247
}
@@ -281,7 +308,7 @@ func TestHalfClose(t *testing.T) {
281
308
}
282
309
}()
283
310
284
- s , err := mpa .NewStream ()
311
+ s , err := mpa .NewStream (context . Background () )
285
312
if err != nil {
286
313
t .Fatal (err )
287
314
}
@@ -339,7 +366,7 @@ func TestClosing(t *testing.T) {
339
366
mpa := NewMultiplex (a , false )
340
367
mpb := NewMultiplex (b , true )
341
368
342
- _ , err := mpb .NewStream ()
369
+ _ , err := mpb .NewStream (context . Background () )
343
370
if err != nil {
344
371
t .Fatal (err )
345
372
}
@@ -373,7 +400,7 @@ func TestReset(t *testing.T) {
373
400
defer mpa .Close ()
374
401
defer mpb .Close ()
375
402
376
- sa , err := mpa .NewStream ()
403
+ sa , err := mpa .NewStream (context . Background () )
377
404
if err != nil {
378
405
t .Fatal (err )
379
406
}
@@ -425,7 +452,7 @@ func TestCancelRead(t *testing.T) {
425
452
defer mpa .Close ()
426
453
defer mpb .Close ()
427
454
428
- sa , err := mpa .NewStream ()
455
+ sa , err := mpa .NewStream (context . Background () )
429
456
if err != nil {
430
457
t .Fatal (err )
431
458
}
@@ -486,7 +513,7 @@ func TestCancelWrite(t *testing.T) {
486
513
defer mpa .Close ()
487
514
defer mpb .Close ()
488
515
489
- sa , err := mpa .NewStream ()
516
+ sa , err := mpa .NewStream (context . Background () )
490
517
if err != nil {
491
518
t .Fatal (err )
492
519
}
@@ -560,7 +587,7 @@ func TestCancelReadAfterWrite(t *testing.T) {
560
587
defer mpa .Close ()
561
588
defer mpb .Close ()
562
589
563
- sa , err := mpa .NewStream ()
590
+ sa , err := mpa .NewStream (context . Background () )
564
591
if err != nil {
565
592
t .Fatal (err )
566
593
}
@@ -603,7 +630,7 @@ func TestResetAfterEOF(t *testing.T) {
603
630
defer mpa .Close ()
604
631
defer mpb .Close ()
605
632
606
- sa , err := mpa .NewStream ()
633
+ sa , err := mpa .NewStream (context . Background () )
607
634
if err != nil {
608
635
t .Fatal (err )
609
636
}
@@ -632,7 +659,7 @@ func TestOpenAfterClose(t *testing.T) {
632
659
mpa := NewMultiplex (a , false )
633
660
mpb := NewMultiplex (b , true )
634
661
635
- sa , err := mpa .NewStream ()
662
+ sa , err := mpa .NewStream (context . Background () )
636
663
if err != nil {
637
664
t .Fatal (err )
638
665
}
@@ -646,12 +673,12 @@ func TestOpenAfterClose(t *testing.T) {
646
673
647
674
mpa .Close ()
648
675
649
- s , err := mpa .NewStream ()
676
+ s , err := mpa .NewStream (context . Background () )
650
677
if err == nil || s != nil {
651
678
t .Fatal ("opened a stream on a closed connection" )
652
679
}
653
680
654
- s , err = mpa .NewStream ()
681
+ s , err = mpa .NewStream (context . Background () )
655
682
if err == nil || s != nil {
656
683
t .Fatal ("opened a stream on a closed connection" )
657
684
}
@@ -668,7 +695,7 @@ func TestDeadline(t *testing.T) {
668
695
defer mpa .Close ()
669
696
defer mpb .Close ()
670
697
671
- sa , err := mpa .NewStream ()
698
+ sa , err := mpa .NewStream (context . Background () )
672
699
if err != nil {
673
700
t .Fatal (err )
674
701
}
@@ -694,7 +721,7 @@ func TestReadAfterClose(t *testing.T) {
694
721
defer mpa .Close ()
695
722
defer mpb .Close ()
696
723
697
- sa , err := mpa .NewStream ()
724
+ sa , err := mpa .NewStream (context . Background () )
698
725
if err != nil {
699
726
t .Fatal (err )
700
727
}
@@ -735,7 +762,7 @@ func TestFuzzCloseStream(t *testing.T) {
735
762
streams := make ([]* Stream , 100 )
736
763
for i := range streams {
737
764
var err error
738
- streams [i ], err = mpb .NewStream ()
765
+ streams [i ], err = mpb .NewStream (context . Background () )
739
766
if err != nil {
740
767
t .Fatal (err )
741
768
}
0 commit comments