@@ -25,12 +25,15 @@ import (
25
25
"time"
26
26
)
27
27
28
- const testTimeout = 5 * time .Second
28
+ const (
29
+ testTimeout = 5 * time .Second
30
+ testShortTimeout = 10 * time .Millisecond
31
+ )
29
32
30
33
func (s ) TestBlockingDialer_NoHold (t * testing.T ) {
31
34
lis , err := LocalTCPListener ()
32
35
if err != nil {
33
- t .Fatalf ("failed to listen: %v" , err )
36
+ t .Fatalf ("Failed to listen: %v" , err )
34
37
}
35
38
defer lis .Close ()
36
39
@@ -88,8 +91,8 @@ func (s) TestBlockingDialer_HoldWaitResume(t *testing.T) {
88
91
89
92
select {
90
93
case <- done :
91
- t .Errorf ("Expected dialer to be blocked." )
92
- default :
94
+ t .Fatalf ("Expected dialer to be blocked." )
95
+ case <- time . After ( testShortTimeout ) :
93
96
}
94
97
95
98
h .Resume () // Unblock the above goroutine.
@@ -104,7 +107,7 @@ func (s) TestBlockingDialer_HoldWaitResume(t *testing.T) {
104
107
func (s ) TestBlockingDialer_HoldWaitFail (t * testing.T ) {
105
108
lis , err := LocalTCPListener ()
106
109
if err != nil {
107
- t .Fatalf ("failed to listen: %v" , err )
110
+ t .Fatalf ("Failed to listen: %v" , err )
108
111
}
109
112
defer lis .Close ()
110
113
@@ -113,30 +116,30 @@ func (s) TestBlockingDialer_HoldWaitFail(t *testing.T) {
113
116
114
117
wantErr := errors .New ("test error" )
115
118
116
- done := make (chan struct {} )
119
+ dialError := make (chan error )
117
120
ctx , cancel := context .WithTimeout (context .Background (), testTimeout )
118
121
defer cancel ()
119
122
go func () {
120
123
_ , err := d .DialContext (ctx , lis .Addr ().String ())
121
- if ! errors .Is (err , wantErr ) {
122
- t .Errorf ("BlockingDialer.DialContext() after Fail(): got error %v, want %v" , err , wantErr )
123
- }
124
- done <- struct {}{}
124
+ dialError <- err
125
125
}()
126
126
127
127
if ! h .Wait (ctx ) {
128
128
t .Fatalf ("Timeout while waiting for a connection attempt to " + h .addr )
129
129
}
130
130
select {
131
- case <- done :
132
- t .Errorf ("Expected dialer to still be blocked after Wait()" )
133
- default :
131
+ case err = <- dialError :
132
+ t .Errorf ("DialContext got unblocked with err %v. Want DialContext to still be blocked after Wait()" , err )
133
+ case <- time . After ( testShortTimeout ) :
134
134
}
135
135
136
136
h .Fail (wantErr )
137
137
138
138
select {
139
- case <- done :
139
+ case err = <- dialError :
140
+ if ! errors .Is (err , wantErr ) {
141
+ t .Errorf ("BlockingDialer.DialContext() after Fail(): got error %v, want %v" , err , wantErr )
142
+ }
140
143
case <- ctx .Done ():
141
144
t .Errorf ("Timeout waiting for connection attempt to fail." )
142
145
}
@@ -145,25 +148,22 @@ func (s) TestBlockingDialer_HoldWaitFail(t *testing.T) {
145
148
func (s ) TestBlockingDialer_ContextCanceled (t * testing.T ) {
146
149
lis , err := LocalTCPListener ()
147
150
if err != nil {
148
- t .Fatalf ("failed to listen: %v" , err )
151
+ t .Fatalf ("Failed to listen: %v" , err )
149
152
}
150
153
defer lis .Close ()
151
154
152
155
d := NewBlockingDialer ()
153
156
h := d .Hold (lis .Addr ().String ())
154
157
155
- done := make (chan struct {} )
158
+ dialErr := make (chan error )
156
159
testCtx , cancel := context .WithTimeout (context .Background (), testTimeout )
157
160
defer cancel ()
158
161
159
162
ctx , cancel := context .WithCancel (testCtx )
160
163
defer cancel ()
161
164
go func () {
162
165
_ , err := d .DialContext (ctx , lis .Addr ().String ())
163
- if ! errors .Is (err , context .Canceled ) {
164
- t .Errorf ("BlockingDialer.DialContext() after context cancel: got error %v, want %v" , err , context .Canceled )
165
- }
166
- done <- struct {}{}
166
+ dialErr <- err
167
167
}()
168
168
if ! h .Wait (testCtx ) {
169
169
t .Errorf ("Timeout while waiting for a connection attempt to %q" , h .addr )
@@ -172,7 +172,10 @@ func (s) TestBlockingDialer_ContextCanceled(t *testing.T) {
172
172
cancel ()
173
173
174
174
select {
175
- case <- done :
175
+ case err = <- dialErr :
176
+ if ! errors .Is (err , context .Canceled ) {
177
+ t .Errorf ("BlockingDialer.DialContext() after context cancel: got error %v, want %v" , err , context .Canceled )
178
+ }
176
179
case <- testCtx .Done ():
177
180
t .Errorf ("Timeout while waiting for Wait to return." )
178
181
}
@@ -183,7 +186,7 @@ func (s) TestBlockingDialer_ContextCanceled(t *testing.T) {
183
186
func (s ) TestBlockingDialer_CancelWait (t * testing.T ) {
184
187
lis , err := LocalTCPListener ()
185
188
if err != nil {
186
- t .Fatalf ("failed to listen: %v" , err )
189
+ t .Fatalf ("Failed to listen: %v" , err )
187
190
}
188
191
defer lis .Close ()
189
192
0 commit comments