@@ -146,48 +146,147 @@ func TestRunPort(t *testing.T) {
146
146
hostIP , err := getNonLoopbackIPv4 ()
147
147
assert .NilError (t , err )
148
148
type testCase struct {
149
- listenIP net.IP
150
- connectIP net.IP
151
- port int
152
- err string
149
+ listenIP net.IP
150
+ connectIP net.IP
151
+ hostPort string
152
+ containerPort string
153
+ connectURLPort int
154
+ runShouldSuccess bool
155
+ err string
153
156
}
154
157
lo := net .ParseIP ("127.0.0.1" )
155
158
zeroIP := net .ParseIP ("0.0.0.0" )
156
159
testCases := []testCase {
157
160
{
158
- listenIP : lo ,
159
- connectIP : lo ,
160
- port : 8080 ,
161
+ listenIP : lo ,
162
+ connectIP : lo ,
163
+ hostPort : "8080" ,
164
+ containerPort : "80" ,
165
+ connectURLPort : 8080 ,
166
+ runShouldSuccess : true ,
161
167
},
162
168
{
163
169
// for https://github.com/containerd/nerdctl/issues/88
164
- listenIP : hostIP ,
165
- connectIP : hostIP ,
166
- port : 8080 ,
170
+ listenIP : hostIP ,
171
+ connectIP : hostIP ,
172
+ hostPort : "8080" ,
173
+ containerPort : "80" ,
174
+ connectURLPort : 8080 ,
175
+ runShouldSuccess : true ,
167
176
},
168
177
{
169
- listenIP : hostIP ,
170
- connectIP : lo ,
171
- port : 8080 ,
172
- err : "connection refused" ,
178
+ listenIP : hostIP ,
179
+ connectIP : lo ,
180
+ hostPort : "8080" ,
181
+ containerPort : "80" ,
182
+ connectURLPort : 8080 ,
183
+ err : "connection refused" ,
184
+ runShouldSuccess : true ,
173
185
},
174
186
{
175
- listenIP : lo ,
176
- connectIP : hostIP ,
177
- port : 8080 ,
178
- err : "connection refused" ,
187
+ listenIP : lo ,
188
+ connectIP : hostIP ,
189
+ hostPort : "8080" ,
190
+ containerPort : "80" ,
191
+ connectURLPort : 8080 ,
192
+ err : "connection refused" ,
193
+ runShouldSuccess : true ,
179
194
},
180
195
{
181
- listenIP : zeroIP ,
182
- connectIP : lo ,
183
- port : 8080 ,
196
+ listenIP : zeroIP ,
197
+ connectIP : lo ,
198
+ hostPort : "8080" ,
199
+ containerPort : "80" ,
200
+ connectURLPort : 8080 ,
201
+ runShouldSuccess : true ,
184
202
},
185
203
{
186
- listenIP : zeroIP ,
187
- connectIP : hostIP ,
188
- port : 8080 ,
204
+ listenIP : zeroIP ,
205
+ connectIP : hostIP ,
206
+ hostPort : "8080" ,
207
+ containerPort : "80" ,
208
+ connectURLPort : 8080 ,
209
+ runShouldSuccess : true ,
210
+ },
211
+ {
212
+ listenIP : lo ,
213
+ connectIP : lo ,
214
+ hostPort : "7000-7005" ,
215
+ containerPort : "79-84" ,
216
+ connectURLPort : 7001 ,
217
+ runShouldSuccess : true ,
218
+ },
219
+ {
220
+ listenIP : hostIP ,
221
+ connectIP : hostIP ,
222
+ hostPort : "7000-7005" ,
223
+ containerPort : "79-84" ,
224
+ connectURLPort : 7001 ,
225
+ runShouldSuccess : true ,
226
+ },
227
+ {
228
+ listenIP : hostIP ,
229
+ connectIP : lo ,
230
+ hostPort : "7000-7005" ,
231
+ containerPort : "79-84" ,
232
+ connectURLPort : 7001 ,
233
+ err : "connection refused" ,
234
+ runShouldSuccess : true ,
235
+ },
236
+ {
237
+ listenIP : lo ,
238
+ connectIP : hostIP ,
239
+ hostPort : "7000-7005" ,
240
+ containerPort : "79-84" ,
241
+ connectURLPort : 7001 ,
242
+ err : "connection refused" ,
243
+ runShouldSuccess : true ,
244
+ },
245
+ {
246
+ listenIP : zeroIP ,
247
+ connectIP : hostIP ,
248
+ hostPort : "7000-7005" ,
249
+ containerPort : "79-84" ,
250
+ connectURLPort : 7001 ,
251
+ runShouldSuccess : true ,
252
+ },
253
+ {
254
+ listenIP : zeroIP ,
255
+ connectIP : lo ,
256
+ hostPort : "7000-7005" ,
257
+ containerPort : "80-85" ,
258
+ connectURLPort : 7001 ,
259
+ err : "error after 30 attempts" ,
260
+ runShouldSuccess : true ,
261
+ },
262
+ {
263
+ listenIP : zeroIP ,
264
+ connectIP : lo ,
265
+ hostPort : "7000-7005" ,
266
+ containerPort : "80" ,
267
+ connectURLPort : 7000 ,
268
+ runShouldSuccess : true ,
269
+ },
270
+ {
271
+ listenIP : zeroIP ,
272
+ connectIP : lo ,
273
+ hostPort : "7000-7005" ,
274
+ containerPort : "80" ,
275
+ connectURLPort : 7005 ,
276
+ err : "connection refused" ,
277
+ runShouldSuccess : true ,
278
+ },
279
+ {
280
+ listenIP : zeroIP ,
281
+ connectIP : lo ,
282
+ hostPort : "7000-7005" ,
283
+ containerPort : "79-85" ,
284
+ connectURLPort : 7005 ,
285
+ err : "invalid ranges specified for container and host Ports" ,
286
+ runShouldSuccess : false ,
189
287
},
190
288
}
289
+
191
290
for i , tc := range testCases {
192
291
i := i
193
292
tc := tc
@@ -196,13 +295,19 @@ func TestRunPort(t *testing.T) {
196
295
testContainerName := fmt .Sprintf ("nerdctl-test-nginx-%d" , i )
197
296
base := testutil .NewBase (t )
198
297
defer base .Cmd ("rm" , "-f" , testContainerName ).Run ()
199
- pFlag := fmt .Sprintf ("%s:%d:80 " , tc .listenIP .String (), tc .port )
200
- connectURL := fmt .Sprintf ("http://%s:%d" , tc .connectIP .String (), tc .port )
298
+ pFlag := fmt .Sprintf ("%s:%s:%s " , tc .listenIP .String (), tc .hostPort , tc . containerPort )
299
+ connectURL := fmt .Sprintf ("http://%s:%d" , tc .connectIP .String (), tc .connectURLPort )
201
300
t .Logf ("pFlag=%q, connectURL=%q" , pFlag , connectURL )
202
- base .Cmd ("run" , "-d" ,
301
+ cmd := base .Cmd ("run" , "-d" ,
203
302
"--name" , testContainerName ,
204
303
"-p" , pFlag ,
205
- testutil .NginxAlpineImage ).AssertOK ()
304
+ testutil .NginxAlpineImage )
305
+ if tc .runShouldSuccess {
306
+ cmd .AssertOK ()
307
+ } else {
308
+ cmd .AssertFail ()
309
+ return
310
+ }
206
311
207
312
resp , err := httpGet (connectURL , 30 )
208
313
if tc .err != "" {
@@ -215,6 +320,7 @@ func TestRunPort(t *testing.T) {
215
320
assert .Assert (t , strings .Contains (string (respBody ), testutil .NginxAlpineIndexHTMLSnippet ))
216
321
})
217
322
}
323
+
218
324
}
219
325
220
326
func httpGet (urlStr string , attempts int ) (* http.Response , error ) {
0 commit comments