|
...
|
...
|
@@ -237,7 +237,7 @@ func assertNwNotAvailable(c *testing.T, name string) {
|
|
237
|
237
|
}
|
|
238
|
238
|
|
|
239
|
239
|
func isNwPresent(c *testing.T, name string) bool {
|
|
240
|
|
- out, _ := dockerCmd(c, "network", "ls")
|
|
|
240
|
+ out := cli.DockerCmd(c, "network", "ls").Stdout()
|
|
241
|
241
|
lines := strings.Split(out, "\n")
|
|
242
|
242
|
for i := 1; i < len(lines)-1; i++ {
|
|
243
|
243
|
netFields := strings.Fields(lines[i])
|
|
...
|
...
|
@@ -265,7 +265,7 @@ func assertNwList(c *testing.T, out string, expectNws []string) {
|
|
265
|
265
|
}
|
|
266
|
266
|
|
|
267
|
267
|
func getNwResource(c *testing.T, name string) *types.NetworkResource {
|
|
268
|
|
- out, _ := dockerCmd(c, "network", "inspect", name)
|
|
|
268
|
+ out := cli.DockerCmd(c, "network", "inspect", name).Stdout()
|
|
269
|
269
|
var nr []types.NetworkResource
|
|
270
|
270
|
err := json.Unmarshal([]byte(out), &nr)
|
|
271
|
271
|
assert.NilError(c, err)
|
|
...
|
...
|
@@ -281,29 +281,28 @@ func (s *DockerNetworkSuite) TestDockerNetworkLsDefault(c *testing.T) {
|
|
281
|
281
|
|
|
282
|
282
|
func (s *DockerNetworkSuite) TestDockerNetworkCreatePredefined(c *testing.T) {
|
|
283
|
283
|
predefined := []string{"bridge", "host", "none", "default"}
|
|
284
|
|
- for _, net := range predefined {
|
|
|
284
|
+ for _, nw := range predefined {
|
|
285
|
285
|
// predefined networks can't be created again
|
|
286
|
|
- out, _, err := dockerCmdWithError("network", "create", net)
|
|
|
286
|
+ out, _, err := dockerCmdWithError("network", "create", nw)
|
|
287
|
287
|
assert.ErrorContains(c, err, "", out)
|
|
288
|
288
|
}
|
|
289
|
289
|
}
|
|
290
|
290
|
|
|
291
|
291
|
func (s *DockerNetworkSuite) TestDockerNetworkCreateHostBind(c *testing.T) {
|
|
292
|
|
- dockerCmd(c, "network", "create", "--subnet=192.168.10.0/24", "--gateway=192.168.10.1", "-o", "com.docker.network.bridge.host_binding_ipv4=192.168.10.1", "testbind")
|
|
|
292
|
+ cli.DockerCmd(c, "network", "create", "--subnet=192.168.10.0/24", "--gateway=192.168.10.1", "-o", "com.docker.network.bridge.host_binding_ipv4=192.168.10.1", "testbind")
|
|
293
|
293
|
assertNwIsAvailable(c, "testbind")
|
|
294
|
294
|
|
|
295
|
|
- out := runSleepingContainer(c, "--net=testbind", "-p", "5000:5000")
|
|
296
|
|
- id := strings.TrimSpace(out)
|
|
297
|
|
- assert.NilError(c, waitRun(id))
|
|
298
|
|
- out, _ = dockerCmd(c, "ps")
|
|
|
295
|
+ id := runSleepingContainer(c, "--net=testbind", "-p", "5000:5000")
|
|
|
296
|
+ cli.WaitRun(c, id)
|
|
|
297
|
+ out := cli.DockerCmd(c, "ps").Stdout()
|
|
299
|
298
|
assert.Assert(c, strings.Contains(out, "192.168.10.1:5000->5000/tcp"))
|
|
300
|
299
|
}
|
|
301
|
300
|
|
|
302
|
301
|
func (s *DockerNetworkSuite) TestDockerNetworkRmPredefined(c *testing.T) {
|
|
303
|
302
|
predefined := []string{"bridge", "host", "none", "default"}
|
|
304
|
|
- for _, net := range predefined {
|
|
|
303
|
+ for _, nw := range predefined {
|
|
305
|
304
|
// predefined networks can't be removed
|
|
306
|
|
- out, _, err := dockerCmdWithError("network", "rm", net)
|
|
|
305
|
+ out, _, err := dockerCmdWithError("network", "rm", nw)
|
|
307
|
306
|
assert.ErrorContains(c, err, "", out)
|
|
308
|
307
|
}
|
|
309
|
308
|
}
|
|
...
|
...
|
@@ -314,62 +313,62 @@ func (s *DockerNetworkSuite) TestDockerNetworkLsFilter(c *testing.T) {
|
|
314
|
314
|
testNet := "testnet1"
|
|
315
|
315
|
testLabel := "foo"
|
|
316
|
316
|
testValue := "bar"
|
|
317
|
|
- out, _ := dockerCmd(c, "network", "create", "dev")
|
|
|
317
|
+ out := cli.DockerCmd(c, "network", "create", "dev").Stdout()
|
|
318
|
318
|
defer func() {
|
|
319
|
|
- dockerCmd(c, "network", "rm", "dev")
|
|
320
|
|
- dockerCmd(c, "network", "rm", testNet)
|
|
|
319
|
+ cli.DockerCmd(c, "network", "rm", "dev")
|
|
|
320
|
+ cli.DockerCmd(c, "network", "rm", testNet)
|
|
321
|
321
|
}()
|
|
322
|
322
|
networkID := strings.TrimSpace(out)
|
|
323
|
323
|
|
|
324
|
324
|
// filter with partial ID
|
|
325
|
325
|
// only show 'dev' network
|
|
326
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "id="+networkID[0:5])
|
|
|
326
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "id="+networkID[0:5]).Stdout()
|
|
327
|
327
|
assertNwList(c, out, []string{"dev"})
|
|
328
|
328
|
|
|
329
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "name=dge")
|
|
|
329
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "name=dge").Stdout()
|
|
330
|
330
|
assertNwList(c, out, []string{"bridge"})
|
|
331
|
331
|
|
|
332
|
332
|
// only show built-in network (bridge, none, host)
|
|
333
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "type=builtin")
|
|
|
333
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "type=builtin").Stdout()
|
|
334
|
334
|
assertNwList(c, out, []string{"bridge", "host", "none"})
|
|
335
|
335
|
|
|
336
|
336
|
// only show custom networks (dev)
|
|
337
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "type=custom")
|
|
|
337
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "type=custom").Stdout()
|
|
338
|
338
|
assertNwList(c, out, []string{"dev"})
|
|
339
|
339
|
|
|
340
|
340
|
// show all networks with filter
|
|
341
|
341
|
// it should be equivalent of ls without option
|
|
342
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "type=custom", "-f", "type=builtin")
|
|
|
342
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "type=custom", "-f", "type=builtin").Stdout()
|
|
343
|
343
|
assertNwList(c, out, []string{"bridge", "dev", "host", "none"})
|
|
344
|
344
|
|
|
345
|
|
- dockerCmd(c, "network", "create", "--label", testLabel+"="+testValue, testNet)
|
|
|
345
|
+ cli.DockerCmd(c, "network", "create", "--label", testLabel+"="+testValue, testNet)
|
|
346
|
346
|
assertNwIsAvailable(c, testNet)
|
|
347
|
347
|
|
|
348
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "label="+testLabel)
|
|
|
348
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "label="+testLabel).Stdout()
|
|
349
|
349
|
assertNwList(c, out, []string{testNet})
|
|
350
|
350
|
|
|
351
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "label="+testLabel+"="+testValue)
|
|
|
351
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "label="+testLabel+"="+testValue).Stdout()
|
|
352
|
352
|
assertNwList(c, out, []string{testNet})
|
|
353
|
353
|
|
|
354
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "label=nonexistent")
|
|
|
354
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "label=nonexistent").Stdout()
|
|
355
|
355
|
outArr := strings.Split(strings.TrimSpace(out), "\n")
|
|
356
|
356
|
assert.Equal(c, len(outArr), 1, fmt.Sprintf("%s\n", out))
|
|
357
|
357
|
|
|
358
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "driver=null")
|
|
|
358
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "driver=null").Stdout()
|
|
359
|
359
|
assertNwList(c, out, []string{"none"})
|
|
360
|
360
|
|
|
361
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "driver=host")
|
|
|
361
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "driver=host").Stdout()
|
|
362
|
362
|
assertNwList(c, out, []string{"host"})
|
|
363
|
363
|
|
|
364
|
|
- out, _ = dockerCmd(c, "network", "ls", "-f", "driver=bridge")
|
|
|
364
|
+ out = cli.DockerCmd(c, "network", "ls", "-f", "driver=bridge").Stdout()
|
|
365
|
365
|
assertNwList(c, out, []string{"bridge", "dev", testNet})
|
|
366
|
366
|
}
|
|
367
|
367
|
|
|
368
|
368
|
func (s *DockerNetworkSuite) TestDockerNetworkCreateDelete(c *testing.T) {
|
|
369
|
|
- dockerCmd(c, "network", "create", "test")
|
|
|
369
|
+ cli.DockerCmd(c, "network", "create", "test")
|
|
370
|
370
|
assertNwIsAvailable(c, "test")
|
|
371
|
371
|
|
|
372
|
|
- dockerCmd(c, "network", "rm", "test")
|
|
|
372
|
+ cli.DockerCmd(c, "network", "rm", "test")
|
|
373
|
373
|
assertNwNotAvailable(c, "test")
|
|
374
|
374
|
}
|
|
375
|
375
|
|
|
...
|
...
|
@@ -378,14 +377,14 @@ func (s *DockerNetworkSuite) TestDockerNetworkCreateLabel(c *testing.T) {
|
|
378
|
378
|
testLabel := "foo"
|
|
379
|
379
|
testValue := "bar"
|
|
380
|
380
|
|
|
381
|
|
- dockerCmd(c, "network", "create", "--label", testLabel+"="+testValue, testNet)
|
|
|
381
|
+ cli.DockerCmd(c, "network", "create", "--label", testLabel+"="+testValue, testNet)
|
|
382
|
382
|
assertNwIsAvailable(c, testNet)
|
|
383
|
383
|
|
|
384
|
384
|
out, _, err := dockerCmdWithError("network", "inspect", "--format={{ .Labels."+testLabel+" }}", testNet)
|
|
385
|
385
|
assert.NilError(c, err)
|
|
386
|
386
|
assert.Equal(c, strings.TrimSpace(out), testValue)
|
|
387
|
387
|
|
|
388
|
|
- dockerCmd(c, "network", "rm", testNet)
|
|
|
388
|
+ cli.DockerCmd(c, "network", "rm", testNet)
|
|
389
|
389
|
assertNwNotAvailable(c, testNet)
|
|
390
|
390
|
}
|
|
391
|
391
|
|
|
...
|
...
|
@@ -395,15 +394,15 @@ func (s *DockerCLINetworkSuite) TestDockerNetworkDeleteNotExists(c *testing.T) {
|
|
395
|
395
|
}
|
|
396
|
396
|
|
|
397
|
397
|
func (s *DockerCLINetworkSuite) TestDockerNetworkDeleteMultiple(c *testing.T) {
|
|
398
|
|
- dockerCmd(c, "network", "create", "testDelMulti0")
|
|
|
398
|
+ cli.DockerCmd(c, "network", "create", "testDelMulti0")
|
|
399
|
399
|
assertNwIsAvailable(c, "testDelMulti0")
|
|
400
|
|
- dockerCmd(c, "network", "create", "testDelMulti1")
|
|
|
400
|
+ cli.DockerCmd(c, "network", "create", "testDelMulti1")
|
|
401
|
401
|
assertNwIsAvailable(c, "testDelMulti1")
|
|
402
|
|
- dockerCmd(c, "network", "create", "testDelMulti2")
|
|
|
402
|
+ cli.DockerCmd(c, "network", "create", "testDelMulti2")
|
|
403
|
403
|
assertNwIsAvailable(c, "testDelMulti2")
|
|
404
|
|
- out, _ := dockerCmd(c, "run", "-d", "--net", "testDelMulti2", "busybox", "top")
|
|
|
404
|
+ out := cli.DockerCmd(c, "run", "-d", "--net", "testDelMulti2", "busybox", "top").Stdout()
|
|
405
|
405
|
containerID := strings.TrimSpace(out)
|
|
406
|
|
- waitRun(containerID)
|
|
|
406
|
+ cli.WaitRun(c, containerID)
|
|
407
|
407
|
|
|
408
|
408
|
// delete three networks at the same time, since testDelMulti2
|
|
409
|
409
|
// contains active container, its deletion should fail.
|
|
...
|
...
|
@@ -419,24 +418,24 @@ func (s *DockerCLINetworkSuite) TestDockerNetworkDeleteMultiple(c *testing.T) {
|
|
419
|
419
|
}
|
|
420
|
420
|
|
|
421
|
421
|
func (s *DockerCLINetworkSuite) TestDockerNetworkInspect(c *testing.T) {
|
|
422
|
|
- out, _ := dockerCmd(c, "network", "inspect", "host")
|
|
|
422
|
+ out := cli.DockerCmd(c, "network", "inspect", "host").Stdout()
|
|
423
|
423
|
var networkResources []types.NetworkResource
|
|
424
|
424
|
err := json.Unmarshal([]byte(out), &networkResources)
|
|
425
|
425
|
assert.NilError(c, err)
|
|
426
|
426
|
assert.Equal(c, len(networkResources), 1)
|
|
427
|
427
|
|
|
428
|
|
- out, _ = dockerCmd(c, "network", "inspect", "--format={{ .Name }}", "host")
|
|
|
428
|
+ out = cli.DockerCmd(c, "network", "inspect", "--format={{ .Name }}", "host").Stdout()
|
|
429
|
429
|
assert.Equal(c, strings.TrimSpace(out), "host")
|
|
430
|
430
|
}
|
|
431
|
431
|
|
|
432
|
432
|
func (s *DockerCLINetworkSuite) TestDockerNetworkInspectWithID(c *testing.T) {
|
|
433
|
|
- out, _ := dockerCmd(c, "network", "create", "test2")
|
|
|
433
|
+ out := cli.DockerCmd(c, "network", "create", "test2").Stdout()
|
|
434
|
434
|
networkID := strings.TrimSpace(out)
|
|
435
|
435
|
assertNwIsAvailable(c, "test2")
|
|
436
|
|
- out, _ = dockerCmd(c, "network", "inspect", "--format={{ .Id }}", "test2")
|
|
|
436
|
+ out = cli.DockerCmd(c, "network", "inspect", "--format={{ .Id }}", "test2").Stdout()
|
|
437
|
437
|
assert.Equal(c, strings.TrimSpace(out), networkID)
|
|
438
|
438
|
|
|
439
|
|
- out, _ = dockerCmd(c, "network", "inspect", "--format={{ .ID }}", "test2")
|
|
|
439
|
+ out = cli.DockerCmd(c, "network", "inspect", "--format={{ .ID }}", "test2").Stdout()
|
|
440
|
440
|
assert.Equal(c, strings.TrimSpace(out), networkID)
|
|
441
|
441
|
}
|
|
442
|
442
|
|
|
...
|
...
|
@@ -490,22 +489,22 @@ func (s *DockerCLINetworkSuite) TestDockerInspectMultipleNetworksIncludingNonexi
|
|
490
|
490
|
}
|
|
491
|
491
|
|
|
492
|
492
|
func (s *DockerCLINetworkSuite) TestDockerInspectNetworkWithContainerName(c *testing.T) {
|
|
493
|
|
- dockerCmd(c, "network", "create", "brNetForInspect")
|
|
|
493
|
+ cli.DockerCmd(c, "network", "create", "brNetForInspect")
|
|
494
|
494
|
assertNwIsAvailable(c, "brNetForInspect")
|
|
495
|
495
|
defer func() {
|
|
496
|
|
- dockerCmd(c, "network", "rm", "brNetForInspect")
|
|
|
496
|
+ cli.DockerCmd(c, "network", "rm", "brNetForInspect")
|
|
497
|
497
|
assertNwNotAvailable(c, "brNetForInspect")
|
|
498
|
498
|
}()
|
|
499
|
499
|
|
|
500
|
|
- out, _ := dockerCmd(c, "run", "-d", "--name", "testNetInspect1", "--net", "brNetForInspect", "busybox", "top")
|
|
501
|
|
- assert.Assert(c, waitRun("testNetInspect1") == nil)
|
|
|
500
|
+ out := cli.DockerCmd(c, "run", "-d", "--name", "testNetInspect1", "--net", "brNetForInspect", "busybox", "top").Stdout()
|
|
|
501
|
+ cli.WaitRun(c, "testNetInspect1")
|
|
502
|
502
|
containerID := strings.TrimSpace(out)
|
|
503
|
503
|
defer func() {
|
|
504
|
504
|
// we don't stop container by name, because we'll rename it later
|
|
505
|
|
- dockerCmd(c, "stop", containerID)
|
|
|
505
|
+ cli.DockerCmd(c, "stop", containerID)
|
|
506
|
506
|
}()
|
|
507
|
507
|
|
|
508
|
|
- out, _ = dockerCmd(c, "network", "inspect", "brNetForInspect")
|
|
|
508
|
+ out = cli.DockerCmd(c, "network", "inspect", "brNetForInspect").Stdout()
|
|
509
|
509
|
var networkResources []types.NetworkResource
|
|
510
|
510
|
err := json.Unmarshal([]byte(out), &networkResources)
|
|
511
|
511
|
assert.NilError(c, err)
|
|
...
|
...
|
@@ -516,10 +515,10 @@ func (s *DockerCLINetworkSuite) TestDockerInspectNetworkWithContainerName(c *tes
|
|
516
|
516
|
|
|
517
|
517
|
// rename container and check docker inspect output update
|
|
518
|
518
|
newName := "HappyNewName"
|
|
519
|
|
- dockerCmd(c, "rename", "testNetInspect1", newName)
|
|
|
519
|
+ cli.DockerCmd(c, "rename", "testNetInspect1", newName)
|
|
520
|
520
|
|
|
521
|
521
|
// check whether network inspect works properly
|
|
522
|
|
- out, _ = dockerCmd(c, "network", "inspect", "brNetForInspect")
|
|
|
522
|
+ out = cli.DockerCmd(c, "network", "inspect", "brNetForInspect").Stdout()
|
|
523
|
523
|
var newNetRes []types.NetworkResource
|
|
524
|
524
|
err = json.Unmarshal([]byte(out), &newNetRes)
|
|
525
|
525
|
assert.NilError(c, err)
|
|
...
|
...
|
@@ -530,7 +529,7 @@ func (s *DockerCLINetworkSuite) TestDockerInspectNetworkWithContainerName(c *tes
|
|
530
|
530
|
}
|
|
531
|
531
|
|
|
532
|
532
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnect(c *testing.T) {
|
|
533
|
|
- dockerCmd(c, "network", "create", "test")
|
|
|
533
|
+ cli.DockerCmd(c, "network", "create", "test")
|
|
534
|
534
|
assertNwIsAvailable(c, "test")
|
|
535
|
535
|
nr := getNwResource(c, "test")
|
|
536
|
536
|
|
|
...
|
...
|
@@ -538,12 +537,12 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnect(c *testing.T) {
|
|
538
|
538
|
assert.Equal(c, len(nr.Containers), 0)
|
|
539
|
539
|
|
|
540
|
540
|
// run a container
|
|
541
|
|
- out, _ := dockerCmd(c, "run", "-d", "--name", "test", "busybox", "top")
|
|
542
|
|
- assert.Assert(c, waitRun("test") == nil)
|
|
|
541
|
+ out := cli.DockerCmd(c, "run", "-d", "--name", "test", "busybox", "top").Stdout()
|
|
|
542
|
+ cli.WaitRun(c, "test")
|
|
543
|
543
|
containerID := strings.TrimSpace(out)
|
|
544
|
544
|
|
|
545
|
545
|
// connect the container to the test network
|
|
546
|
|
- dockerCmd(c, "network", "connect", "test", containerID)
|
|
|
546
|
+ cli.DockerCmd(c, "network", "connect", "test", containerID)
|
|
547
|
547
|
|
|
548
|
548
|
// inspect the network to make sure container is connected
|
|
549
|
549
|
nr = getNetworkResource(c, nr.ID)
|
|
...
|
...
|
@@ -556,14 +555,14 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnect(c *testing.T) {
|
|
556
|
556
|
assert.Equal(c, ip.String(), containerIP)
|
|
557
|
557
|
|
|
558
|
558
|
// disconnect container from the network
|
|
559
|
|
- dockerCmd(c, "network", "disconnect", "test", containerID)
|
|
|
559
|
+ cli.DockerCmd(c, "network", "disconnect", "test", containerID)
|
|
560
|
560
|
nr = getNwResource(c, "test")
|
|
561
|
561
|
assert.Equal(c, nr.Name, "test")
|
|
562
|
562
|
assert.Equal(c, len(nr.Containers), 0)
|
|
563
|
563
|
|
|
564
|
564
|
// run another container
|
|
565
|
|
- out, _ = dockerCmd(c, "run", "-d", "--net", "test", "--name", "test2", "busybox", "top")
|
|
566
|
|
- assert.Assert(c, waitRun("test2") == nil)
|
|
|
565
|
+ out = cli.DockerCmd(c, "run", "-d", "--net", "test", "--name", "test2", "busybox", "top").Stdout()
|
|
|
566
|
+ cli.WaitRun(c, "test2")
|
|
567
|
567
|
containerID = strings.TrimSpace(out)
|
|
568
|
568
|
|
|
569
|
569
|
nr = getNwResource(c, "test")
|
|
...
|
...
|
@@ -571,43 +570,43 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnect(c *testing.T) {
|
|
571
|
571
|
assert.Equal(c, len(nr.Containers), 1)
|
|
572
|
572
|
|
|
573
|
573
|
// force disconnect the container to the test network
|
|
574
|
|
- dockerCmd(c, "network", "disconnect", "-f", "test", containerID)
|
|
|
574
|
+ cli.DockerCmd(c, "network", "disconnect", "-f", "test", containerID)
|
|
575
|
575
|
|
|
576
|
576
|
nr = getNwResource(c, "test")
|
|
577
|
577
|
assert.Equal(c, nr.Name, "test")
|
|
578
|
578
|
assert.Equal(c, len(nr.Containers), 0)
|
|
579
|
579
|
|
|
580
|
|
- dockerCmd(c, "network", "rm", "test")
|
|
|
580
|
+ cli.DockerCmd(c, "network", "rm", "test")
|
|
581
|
581
|
assertNwNotAvailable(c, "test")
|
|
582
|
582
|
}
|
|
583
|
583
|
|
|
584
|
584
|
func (s *DockerNetworkSuite) TestDockerNetworkIPAMMultipleNetworks(c *testing.T) {
|
|
585
|
585
|
testRequires(c, testEnv.IsLocalDaemon)
|
|
586
|
586
|
// test0 bridge network
|
|
587
|
|
- dockerCmd(c, "network", "create", "--subnet=192.168.0.0/16", "test1")
|
|
|
587
|
+ cli.DockerCmd(c, "network", "create", "--subnet=192.168.0.0/16", "test1")
|
|
588
|
588
|
assertNwIsAvailable(c, "test1")
|
|
589
|
589
|
|
|
590
|
590
|
// test2 bridge network does not overlap
|
|
591
|
|
- dockerCmd(c, "network", "create", "--subnet=192.169.0.0/16", "test2")
|
|
|
591
|
+ cli.DockerCmd(c, "network", "create", "--subnet=192.169.0.0/16", "test2")
|
|
592
|
592
|
assertNwIsAvailable(c, "test2")
|
|
593
|
593
|
|
|
594
|
594
|
// for networks w/o ipam specified, docker will choose proper non-overlapping subnets
|
|
595
|
|
- dockerCmd(c, "network", "create", "test3")
|
|
|
595
|
+ cli.DockerCmd(c, "network", "create", "test3")
|
|
596
|
596
|
assertNwIsAvailable(c, "test3")
|
|
597
|
|
- dockerCmd(c, "network", "create", "test4")
|
|
|
597
|
+ cli.DockerCmd(c, "network", "create", "test4")
|
|
598
|
598
|
assertNwIsAvailable(c, "test4")
|
|
599
|
|
- dockerCmd(c, "network", "create", "test5")
|
|
|
599
|
+ cli.DockerCmd(c, "network", "create", "test5")
|
|
600
|
600
|
assertNwIsAvailable(c, "test5")
|
|
601
|
601
|
|
|
602
|
602
|
// test network with multiple subnets
|
|
603
|
603
|
// bridge network doesn't support multiple subnets. hence, use a dummy driver that supports
|
|
604
|
604
|
|
|
605
|
|
- dockerCmd(c, "network", "create", "-d", dummyNetworkDriver, "--subnet=192.170.0.0/16", "--subnet=192.171.0.0/16", "test6")
|
|
|
605
|
+ cli.DockerCmd(c, "network", "create", "-d", dummyNetworkDriver, "--subnet=192.170.0.0/16", "--subnet=192.171.0.0/16", "test6")
|
|
606
|
606
|
assertNwIsAvailable(c, "test6")
|
|
607
|
607
|
|
|
608
|
608
|
// test network with multiple subnets with valid ipam combinations
|
|
609
|
609
|
// also check same subnet across networks when the driver supports it.
|
|
610
|
|
- dockerCmd(c, "network", "create", "-d", dummyNetworkDriver,
|
|
|
610
|
+ cli.DockerCmd(c, "network", "create", "-d", dummyNetworkDriver,
|
|
611
|
611
|
"--subnet=192.172.0.0/16", "--subnet=192.173.0.0/16",
|
|
612
|
612
|
"--gateway=192.172.0.100", "--gateway=192.173.0.100",
|
|
613
|
613
|
"--ip-range=192.172.1.0/24",
|
|
...
|
...
|
@@ -618,14 +617,14 @@ func (s *DockerNetworkSuite) TestDockerNetworkIPAMMultipleNetworks(c *testing.T)
|
|
618
|
618
|
|
|
619
|
619
|
// cleanup
|
|
620
|
620
|
for i := 1; i < 8; i++ {
|
|
621
|
|
- dockerCmd(c, "network", "rm", fmt.Sprintf("test%d", i))
|
|
|
621
|
+ cli.DockerCmd(c, "network", "rm", fmt.Sprintf("test%d", i))
|
|
622
|
622
|
}
|
|
623
|
623
|
}
|
|
624
|
624
|
|
|
625
|
625
|
func (s *DockerNetworkSuite) TestDockerNetworkCustomIPAM(c *testing.T) {
|
|
626
|
626
|
testRequires(c, testEnv.IsLocalDaemon)
|
|
627
|
627
|
// Create a bridge network using custom ipam driver
|
|
628
|
|
- dockerCmd(c, "network", "create", "--ipam-driver", dummyIPAMDriver, "br0")
|
|
|
628
|
+ cli.DockerCmd(c, "network", "create", "--ipam-driver", dummyIPAMDriver, "br0")
|
|
629
|
629
|
assertNwIsAvailable(c, "br0")
|
|
630
|
630
|
|
|
631
|
631
|
// Verify expected network ipam fields are there
|
|
...
|
...
|
@@ -634,14 +633,14 @@ func (s *DockerNetworkSuite) TestDockerNetworkCustomIPAM(c *testing.T) {
|
|
634
|
634
|
assert.Equal(c, nr.IPAM.Driver, dummyIPAMDriver)
|
|
635
|
635
|
|
|
636
|
636
|
// remove network and exercise remote ipam driver
|
|
637
|
|
- dockerCmd(c, "network", "rm", "br0")
|
|
|
637
|
+ cli.DockerCmd(c, "network", "rm", "br0")
|
|
638
|
638
|
assertNwNotAvailable(c, "br0")
|
|
639
|
639
|
}
|
|
640
|
640
|
|
|
641
|
641
|
func (s *DockerNetworkSuite) TestDockerNetworkIPAMOptions(c *testing.T) {
|
|
642
|
642
|
testRequires(c, testEnv.IsLocalDaemon)
|
|
643
|
643
|
// Create a bridge network using custom ipam driver and options
|
|
644
|
|
- dockerCmd(c, "network", "create", "--ipam-driver", dummyIPAMDriver, "--ipam-opt", "opt1=drv1", "--ipam-opt", "opt2=drv2", "br0")
|
|
|
644
|
+ cli.DockerCmd(c, "network", "create", "--ipam-driver", dummyIPAMDriver, "--ipam-opt", "opt1=drv1", "--ipam-opt", "opt2=drv2", "br0")
|
|
645
|
645
|
assertNwIsAvailable(c, "br0")
|
|
646
|
646
|
|
|
647
|
647
|
// Verify expected network ipam options
|
|
...
|
...
|
@@ -695,7 +694,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkInspectDefault(c *testing.T) {
|
|
695
|
695
|
|
|
696
|
696
|
func (s *DockerNetworkSuite) TestDockerNetworkInspectCustomUnspecified(c *testing.T) {
|
|
697
|
697
|
// if unspecified, network subnet will be selected from inside preferred pool
|
|
698
|
|
- dockerCmd(c, "network", "create", "test01")
|
|
|
698
|
+ cli.DockerCmd(c, "network", "create", "test01")
|
|
699
|
699
|
assertNwIsAvailable(c, "test01")
|
|
700
|
700
|
|
|
701
|
701
|
nr := getNetworkResource(c, "test01")
|
|
...
|
...
|
@@ -706,12 +705,12 @@ func (s *DockerNetworkSuite) TestDockerNetworkInspectCustomUnspecified(c *testin
|
|
706
|
706
|
assert.Equal(c, nr.IPAM.Driver, "default")
|
|
707
|
707
|
assert.Equal(c, len(nr.IPAM.Config), 1)
|
|
708
|
708
|
|
|
709
|
|
- dockerCmd(c, "network", "rm", "test01")
|
|
|
709
|
+ cli.DockerCmd(c, "network", "rm", "test01")
|
|
710
|
710
|
assertNwNotAvailable(c, "test01")
|
|
711
|
711
|
}
|
|
712
|
712
|
|
|
713
|
713
|
func (s *DockerNetworkSuite) TestDockerNetworkInspectCustomSpecified(c *testing.T) {
|
|
714
|
|
- dockerCmd(c, "network", "create", "--driver=bridge", "--ipv6", "--subnet=fd80:24e2:f998:72d6::/64", "--subnet=172.28.0.0/16", "--ip-range=172.28.5.0/24", "--gateway=172.28.5.254", "br0")
|
|
|
714
|
+ cli.DockerCmd(c, "network", "create", "--driver=bridge", "--ipv6", "--subnet=fd80:24e2:f998:72d6::/64", "--subnet=172.28.0.0/16", "--ip-range=172.28.5.0/24", "--gateway=172.28.5.254", "br0")
|
|
715
|
715
|
assertNwIsAvailable(c, "br0")
|
|
716
|
716
|
|
|
717
|
717
|
nr := getNetworkResource(c, "br0")
|
|
...
|
...
|
@@ -725,7 +724,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkInspectCustomSpecified(c *testing.
|
|
725
|
725
|
assert.Equal(c, nr.IPAM.Config[0].IPRange, "172.28.5.0/24")
|
|
726
|
726
|
assert.Equal(c, nr.IPAM.Config[0].Gateway, "172.28.5.254")
|
|
727
|
727
|
assert.Equal(c, nr.Internal, false)
|
|
728
|
|
- dockerCmd(c, "network", "rm", "br0")
|
|
|
728
|
+ cli.DockerCmd(c, "network", "rm", "br0")
|
|
729
|
729
|
assertNwNotAvailable(c, "br0")
|
|
730
|
730
|
}
|
|
731
|
731
|
|
|
...
|
...
|
@@ -744,18 +743,18 @@ func (s *DockerNetworkSuite) TestDockerNetworkIPAMInvalidCombinations(c *testing
|
|
744
|
744
|
|
|
745
|
745
|
// overlapping subnets across networks must fail
|
|
746
|
746
|
// create a valid test0 network
|
|
747
|
|
- dockerCmd(c, "network", "create", "--subnet=192.168.0.0/16", "test0")
|
|
|
747
|
+ cli.DockerCmd(c, "network", "create", "--subnet=192.168.0.0/16", "test0")
|
|
748
|
748
|
assertNwIsAvailable(c, "test0")
|
|
749
|
749
|
// create an overlapping test1 network
|
|
750
|
750
|
_, _, err = dockerCmdWithError("network", "create", "--subnet=192.168.128.0/17", "test1")
|
|
751
|
751
|
assert.ErrorContains(c, err, "")
|
|
752
|
|
- dockerCmd(c, "network", "rm", "test0")
|
|
|
752
|
+ cli.DockerCmd(c, "network", "rm", "test0")
|
|
753
|
753
|
assertNwNotAvailable(c, "test0")
|
|
754
|
754
|
}
|
|
755
|
755
|
|
|
756
|
756
|
func (s *DockerNetworkSuite) TestDockerNetworkDriverOptions(c *testing.T) {
|
|
757
|
757
|
testRequires(c, testEnv.IsLocalDaemon)
|
|
758
|
|
- dockerCmd(c, "network", "create", "-d", dummyNetworkDriver, "-o", "opt1=drv1", "-o", "opt2=drv2", "testopt")
|
|
|
758
|
+ cli.DockerCmd(c, "network", "create", "-d", dummyNetworkDriver, "-o", "opt1=drv1", "-o", "opt2=drv2", "testopt")
|
|
759
|
759
|
assertNwIsAvailable(c, "testopt")
|
|
760
|
760
|
gopts := remoteDriverNetworkRequest.Options[netlabel.GenericData]
|
|
761
|
761
|
assert.Assert(c, gopts != nil)
|
|
...
|
...
|
@@ -763,7 +762,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkDriverOptions(c *testing.T) {
|
|
763
|
763
|
assert.Equal(c, ok, true)
|
|
764
|
764
|
assert.Equal(c, opts["opt1"], "drv1")
|
|
765
|
765
|
assert.Equal(c, opts["opt2"], "drv2")
|
|
766
|
|
- dockerCmd(c, "network", "rm", "testopt")
|
|
|
766
|
+ cli.DockerCmd(c, "network", "rm", "testopt")
|
|
767
|
767
|
assertNwNotAvailable(c, "testopt")
|
|
768
|
768
|
}
|
|
769
|
769
|
|
|
...
|
...
|
@@ -783,9 +782,9 @@ func (s *DockerNetworkSuite) TestDockerPluginV2NetworkDriver(c *testing.T) {
|
|
783
|
783
|
assert.Assert(c, strings.Contains(out, npName))
|
|
784
|
784
|
assert.Assert(c, strings.Contains(out, npTag))
|
|
785
|
785
|
assert.Assert(c, strings.Contains(out, "true"))
|
|
786
|
|
- dockerCmd(c, "network", "create", "-d", npNameWithTag, "v2net")
|
|
|
786
|
+ cli.DockerCmd(c, "network", "create", "-d", npNameWithTag, "v2net")
|
|
787
|
787
|
assertNwIsAvailable(c, "v2net")
|
|
788
|
|
- dockerCmd(c, "network", "rm", "v2net")
|
|
|
788
|
+ cli.DockerCmd(c, "network", "rm", "v2net")
|
|
789
|
789
|
assertNwNotAvailable(c, "v2net")
|
|
790
|
790
|
}
|
|
791
|
791
|
|
|
...
|
...
|
@@ -848,16 +847,16 @@ func (s *DockerNetworkSuite) TestDockerNetworkAnonymousEndpoint(c *testing.T) {
|
|
848
|
848
|
cstmBridgeNw := "custom-bridge-nw"
|
|
849
|
849
|
cstmBridgeNw1 := "custom-bridge-nw1"
|
|
850
|
850
|
|
|
851
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", cstmBridgeNw)
|
|
|
851
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", cstmBridgeNw)
|
|
852
|
852
|
assertNwIsAvailable(c, cstmBridgeNw)
|
|
853
|
853
|
|
|
854
|
854
|
// run two anonymous containers and store their etc/hosts content
|
|
855
|
|
- out, _ := dockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "busybox", "top")
|
|
|
855
|
+ out := cli.DockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "busybox", "top").Stdout()
|
|
856
|
856
|
cid1 := strings.TrimSpace(out)
|
|
857
|
857
|
|
|
858
|
858
|
hosts1 := readContainerFileWithExec(c, cid1, hostsFile)
|
|
859
|
859
|
|
|
860
|
|
- out, _ = dockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "busybox", "top")
|
|
|
860
|
+ out = cli.DockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "busybox", "top").Stdout()
|
|
861
|
861
|
cid2 := strings.TrimSpace(out)
|
|
862
|
862
|
|
|
863
|
863
|
// verify first container etc/hosts file has not changed
|
|
...
|
...
|
@@ -865,25 +864,25 @@ func (s *DockerNetworkSuite) TestDockerNetworkAnonymousEndpoint(c *testing.T) {
|
|
865
|
865
|
assert.Equal(c, string(hosts1), string(hosts1post), fmt.Sprintf("Unexpected %s change on anonymous container creation", hostsFile))
|
|
866
|
866
|
// Connect the 2nd container to a new network and verify the
|
|
867
|
867
|
// first container /etc/hosts file still hasn't changed.
|
|
868
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", cstmBridgeNw1)
|
|
|
868
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", cstmBridgeNw1)
|
|
869
|
869
|
assertNwIsAvailable(c, cstmBridgeNw1)
|
|
870
|
870
|
|
|
871
|
|
- dockerCmd(c, "network", "connect", cstmBridgeNw1, cid2)
|
|
|
871
|
+ cli.DockerCmd(c, "network", "connect", cstmBridgeNw1, cid2)
|
|
872
|
872
|
|
|
873
|
873
|
hosts2 := readContainerFileWithExec(c, cid2, hostsFile)
|
|
874
|
874
|
hosts1post = readContainerFileWithExec(c, cid1, hostsFile)
|
|
875
|
875
|
assert.Equal(c, string(hosts1), string(hosts1post), fmt.Sprintf("Unexpected %s change on container connect", hostsFile))
|
|
876
|
876
|
// start a named container
|
|
877
|
877
|
cName := "AnyName"
|
|
878
|
|
- out, _ = dockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "--name", cName, "busybox", "top")
|
|
|
878
|
+ out = cli.DockerCmd(c, "run", "-d", "--net", cstmBridgeNw, "--name", cName, "busybox", "top").Stdout()
|
|
879
|
879
|
cid3 := strings.TrimSpace(out)
|
|
880
|
880
|
|
|
881
|
881
|
// verify that container 1 and 2 can ping the named container
|
|
882
|
|
- dockerCmd(c, "exec", cid1, "ping", "-c", "1", cName)
|
|
883
|
|
- dockerCmd(c, "exec", cid2, "ping", "-c", "1", cName)
|
|
|
882
|
+ cli.DockerCmd(c, "exec", cid1, "ping", "-c", "1", cName)
|
|
|
883
|
+ cli.DockerCmd(c, "exec", cid2, "ping", "-c", "1", cName)
|
|
884
|
884
|
|
|
885
|
885
|
// Stop named container and verify first two containers' etc/hosts file hasn't changed
|
|
886
|
|
- dockerCmd(c, "stop", cid3)
|
|
|
886
|
+ cli.DockerCmd(c, "stop", cid3)
|
|
887
|
887
|
hosts1post = readContainerFileWithExec(c, cid1, hostsFile)
|
|
888
|
888
|
assert.Equal(c, string(hosts1), string(hosts1post), fmt.Sprintf("Unexpected %s change on name container creation", hostsFile))
|
|
889
|
889
|
hosts2post := readContainerFileWithExec(c, cid2, hostsFile)
|
|
...
|
...
|
@@ -902,23 +901,23 @@ func (s *DockerNetworkSuite) TestDockerNetworkLinkOnDefaultNetworkOnly(c *testin
|
|
902
|
902
|
network := "anotherbridge"
|
|
903
|
903
|
|
|
904
|
904
|
// Run first container on default network
|
|
905
|
|
- dockerCmd(c, "run", "-d", "--name", cnt1, "busybox", "top")
|
|
|
905
|
+ cli.DockerCmd(c, "run", "-d", "--name", cnt1, "busybox", "top")
|
|
906
|
906
|
|
|
907
|
907
|
// Create another network and run the second container on it
|
|
908
|
|
- dockerCmd(c, "network", "create", network)
|
|
|
908
|
+ cli.DockerCmd(c, "network", "create", network)
|
|
909
|
909
|
assertNwIsAvailable(c, network)
|
|
910
|
|
- dockerCmd(c, "run", "-d", "--net", network, "--name", cnt2, "busybox", "top")
|
|
|
910
|
+ cli.DockerCmd(c, "run", "-d", "--net", network, "--name", cnt2, "busybox", "top")
|
|
911
|
911
|
|
|
912
|
912
|
// Try launching a container on default network, linking to the first container. Must succeed
|
|
913
|
|
- dockerCmd(c, "run", "-d", "--link", fmt.Sprintf("%s:%s", cnt1, cnt1), "busybox", "top")
|
|
|
913
|
+ cli.DockerCmd(c, "run", "-d", "--link", fmt.Sprintf("%s:%s", cnt1, cnt1), "busybox", "top")
|
|
914
|
914
|
|
|
915
|
915
|
// Try launching a container on default network, linking to the second container. Must fail
|
|
916
|
916
|
_, _, err := dockerCmdWithError("run", "-d", "--link", fmt.Sprintf("%s:%s", cnt2, cnt2), "busybox", "top")
|
|
917
|
917
|
assert.ErrorContains(c, err, "")
|
|
918
|
918
|
|
|
919
|
919
|
// Connect second container to default network. Now a container on default network can link to it
|
|
920
|
|
- dockerCmd(c, "network", "connect", "bridge", cnt2)
|
|
921
|
|
- dockerCmd(c, "run", "-d", "--link", fmt.Sprintf("%s:%s", cnt2, cnt2), "busybox", "top")
|
|
|
920
|
+ cli.DockerCmd(c, "network", "connect", "bridge", cnt2)
|
|
|
921
|
+ cli.DockerCmd(c, "run", "-d", "--link", fmt.Sprintf("%s:%s", cnt2, cnt2), "busybox", "top")
|
|
922
|
922
|
}
|
|
923
|
923
|
|
|
924
|
924
|
func (s *DockerNetworkSuite) TestDockerNetworkOverlayPortMapping(c *testing.T) {
|
|
...
|
...
|
@@ -933,15 +932,15 @@ func (s *DockerNetworkSuite) TestDockerNetworkOverlayPortMapping(c *testing.T) {
|
|
933
|
933
|
expose1 := fmt.Sprintf("--expose=%d", port1)
|
|
934
|
934
|
expose2 := fmt.Sprintf("--expose=%d", port2)
|
|
935
|
935
|
|
|
936
|
|
- dockerCmd(c, "network", "create", "-d", dummyNetworkDriver, nwn)
|
|
|
936
|
+ cli.DockerCmd(c, "network", "create", "-d", dummyNetworkDriver, nwn)
|
|
937
|
937
|
assertNwIsAvailable(c, nwn)
|
|
938
|
938
|
|
|
939
|
|
- dockerCmd(c, "run", "-d", "--net", nwn, "--name", ctn, expose1, expose2, "busybox", "top")
|
|
|
939
|
+ cli.DockerCmd(c, "run", "-d", "--net", nwn, "--name", ctn, expose1, expose2, "busybox", "top")
|
|
940
|
940
|
|
|
941
|
941
|
// Check docker ps o/p for last created container reports the unpublished ports
|
|
942
|
942
|
unpPort1 := fmt.Sprintf("%d/tcp", port1)
|
|
943
|
943
|
unpPort2 := fmt.Sprintf("%d/tcp", port2)
|
|
944
|
|
- out, _ := dockerCmd(c, "ps", "-n=1")
|
|
|
944
|
+ out := cli.DockerCmd(c, "ps", "-n=1").Stdout()
|
|
945
|
945
|
// Missing unpublished ports in docker ps output
|
|
946
|
946
|
assert.Assert(c, strings.Contains(out, unpPort1))
|
|
947
|
947
|
// Missing unpublished ports in docker ps output
|
|
...
|
...
|
@@ -997,24 +996,24 @@ func (s *DockerNetworkSuite) TestDockerNetworkMacInspect(c *testing.T) {
|
|
997
|
997
|
nwn := "ov"
|
|
998
|
998
|
ctn := "bb"
|
|
999
|
999
|
|
|
1000
|
|
- dockerCmd(c, "network", "create", "-d", dummyNetworkDriver, nwn)
|
|
|
1000
|
+ cli.DockerCmd(c, "network", "create", "-d", dummyNetworkDriver, nwn)
|
|
1001
|
1001
|
assertNwIsAvailable(c, nwn)
|
|
1002
|
1002
|
|
|
1003
|
|
- dockerCmd(c, "run", "-d", "--net", nwn, "--name", ctn, "busybox", "top")
|
|
|
1003
|
+ cli.DockerCmd(c, "run", "-d", "--net", nwn, "--name", ctn, "busybox", "top")
|
|
1004
|
1004
|
|
|
1005
|
1005
|
mac := inspectField(c, ctn, "NetworkSettings.Networks."+nwn+".MacAddress")
|
|
1006
|
1006
|
assert.Equal(c, mac, "a0:b1:c2:d3:e4:f5")
|
|
1007
|
1007
|
}
|
|
1008
|
1008
|
|
|
1009
|
1009
|
func (s *DockerCLINetworkSuite) TestInspectAPIMultipleNetworks(c *testing.T) {
|
|
1010
|
|
- dockerCmd(c, "network", "create", "mybridge1")
|
|
1011
|
|
- dockerCmd(c, "network", "create", "mybridge2")
|
|
1012
|
|
- out, _ := dockerCmd(c, "run", "-d", "busybox", "top")
|
|
|
1010
|
+ cli.DockerCmd(c, "network", "create", "mybridge1")
|
|
|
1011
|
+ cli.DockerCmd(c, "network", "create", "mybridge2")
|
|
|
1012
|
+ out := cli.DockerCmd(c, "run", "-d", "busybox", "top").Stdout()
|
|
1013
|
1013
|
id := strings.TrimSpace(out)
|
|
1014
|
|
- assert.NilError(c, waitRun(id))
|
|
|
1014
|
+ cli.WaitRun(c, id)
|
|
1015
|
1015
|
|
|
1016
|
|
- dockerCmd(c, "network", "connect", "mybridge1", id)
|
|
1017
|
|
- dockerCmd(c, "network", "connect", "mybridge2", id)
|
|
|
1016
|
+ cli.DockerCmd(c, "network", "connect", "mybridge1", id)
|
|
|
1017
|
+ cli.DockerCmd(c, "network", "connect", "mybridge2", id)
|
|
1018
|
1018
|
|
|
1019
|
1019
|
body := getInspectBody(c, "v1.20", id)
|
|
1020
|
1020
|
var inspect120 v1p20.ContainerJSON
|
|
...
|
...
|
@@ -1100,7 +1099,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkMultipleNetworksUngracefulDaemonRe
|
|
1100
|
1100
|
}
|
|
1101
|
1101
|
|
|
1102
|
1102
|
func (s *DockerNetworkSuite) TestDockerNetworkRunNetByID(c *testing.T) {
|
|
1103
|
|
- out, _ := dockerCmd(c, "network", "create", "one")
|
|
|
1103
|
+ out := cli.DockerCmd(c, "network", "create", "one").Stdout()
|
|
1104
|
1104
|
containerOut, _, err := dockerCmdWithError("run", "-d", "--net", strings.TrimSpace(out), "busybox", "top")
|
|
1105
|
1105
|
assert.Assert(c, err == nil, containerOut)
|
|
1106
|
1106
|
}
|
|
...
|
...
|
@@ -1133,31 +1132,31 @@ func (s *DockerNetworkSuite) TestDockerNetworkHostModeUngracefulDaemonRestart(c
|
|
1133
|
1133
|
}
|
|
1134
|
1134
|
|
|
1135
|
1135
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectToHostFromOtherNetwork(c *testing.T) {
|
|
1136
|
|
- dockerCmd(c, "run", "-d", "--name", "container1", "busybox", "top")
|
|
1137
|
|
- assert.Assert(c, waitRun("container1") == nil)
|
|
1138
|
|
- dockerCmd(c, "network", "disconnect", "bridge", "container1")
|
|
|
1136
|
+ cli.DockerCmd(c, "run", "-d", "--name", "container1", "busybox", "top")
|
|
|
1137
|
+ cli.WaitRun(c, "container1")
|
|
|
1138
|
+ cli.DockerCmd(c, "network", "disconnect", "bridge", "container1")
|
|
1139
|
1139
|
out, _, err := dockerCmdWithError("network", "connect", "host", "container1")
|
|
1140
|
1140
|
assert.ErrorContains(c, err, "", out)
|
|
1141
|
1141
|
assert.Assert(c, strings.Contains(out, runconfig.ErrConflictHostNetwork.Error()))
|
|
1142
|
1142
|
}
|
|
1143
|
1143
|
|
|
1144
|
1144
|
func (s *DockerNetworkSuite) TestDockerNetworkDisconnectFromHost(c *testing.T) {
|
|
1145
|
|
- dockerCmd(c, "run", "-d", "--name", "container1", "--net=host", "busybox", "top")
|
|
1146
|
|
- assert.Assert(c, waitRun("container1") == nil)
|
|
|
1145
|
+ cli.DockerCmd(c, "run", "-d", "--name", "container1", "--net=host", "busybox", "top")
|
|
|
1146
|
+ cli.WaitRun(c, "container1")
|
|
1147
|
1147
|
out, _, err := dockerCmdWithError("network", "disconnect", "host", "container1")
|
|
1148
|
1148
|
assert.Assert(c, err != nil, "Should err out disconnect from host")
|
|
1149
|
1149
|
assert.Assert(c, strings.Contains(out, runconfig.ErrConflictHostNetwork.Error()))
|
|
1150
|
1150
|
}
|
|
1151
|
1151
|
|
|
1152
|
1152
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectWithPortMapping(c *testing.T) {
|
|
1153
|
|
- dockerCmd(c, "network", "create", "test1")
|
|
1154
|
|
- dockerCmd(c, "run", "-d", "--name", "c1", "-p", "5000:5000", "busybox", "top")
|
|
1155
|
|
- assert.Assert(c, waitRun("c1") == nil)
|
|
1156
|
|
- dockerCmd(c, "network", "connect", "test1", "c1")
|
|
|
1153
|
+ cli.DockerCmd(c, "network", "create", "test1")
|
|
|
1154
|
+ cli.DockerCmd(c, "run", "-d", "--name", "c1", "-p", "5000:5000", "busybox", "top")
|
|
|
1155
|
+ cli.WaitRun(c, "c1")
|
|
|
1156
|
+ cli.DockerCmd(c, "network", "connect", "test1", "c1")
|
|
1157
|
1157
|
}
|
|
1158
|
1158
|
|
|
1159
|
1159
|
func verifyPortMap(c *testing.T, container, port, originalMapping string, mustBeEqual bool) {
|
|
1160
|
|
- currentMapping, _ := dockerCmd(c, "port", container, port)
|
|
|
1160
|
+ currentMapping := cli.DockerCmd(c, "port", container, port).Stdout()
|
|
1161
|
1161
|
if mustBeEqual {
|
|
1162
|
1162
|
assert.Equal(c, currentMapping, originalMapping)
|
|
1163
|
1163
|
} else {
|
|
...
|
...
|
@@ -1171,60 +1170,60 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnectWithPortMapping(c
|
|
1171
|
1171
|
// the container default gateway to change, and verify docker port cmd
|
|
1172
|
1172
|
// returns congruent information
|
|
1173
|
1173
|
cnt := "c1"
|
|
1174
|
|
- dockerCmd(c, "network", "create", "aaa")
|
|
1175
|
|
- dockerCmd(c, "network", "create", "ccc")
|
|
|
1174
|
+ cli.DockerCmd(c, "network", "create", "aaa")
|
|
|
1175
|
+ cli.DockerCmd(c, "network", "create", "ccc")
|
|
1176
|
1176
|
|
|
1177
|
|
- dockerCmd(c, "run", "-d", "--name", cnt, "-p", "9000:90", "-p", "70", "busybox", "top")
|
|
1178
|
|
- assert.Assert(c, waitRun(cnt) == nil)
|
|
1179
|
|
- curPortMap, _ := dockerCmd(c, "port", cnt, "70")
|
|
1180
|
|
- curExplPortMap, _ := dockerCmd(c, "port", cnt, "90")
|
|
|
1177
|
+ cli.DockerCmd(c, "run", "-d", "--name", cnt, "-p", "9000:90", "-p", "70", "busybox", "top")
|
|
|
1178
|
+ cli.WaitRun(c, cnt)
|
|
|
1179
|
+ curPortMap := cli.DockerCmd(c, "port", cnt, "70").Stdout()
|
|
|
1180
|
+ curExplPortMap := cli.DockerCmd(c, "port", cnt, "90").Stdout()
|
|
1181
|
1181
|
|
|
1182
|
1182
|
// Connect to a network which causes the container's default gw switch
|
|
1183
|
|
- dockerCmd(c, "network", "connect", "aaa", cnt)
|
|
|
1183
|
+ cli.DockerCmd(c, "network", "connect", "aaa", cnt)
|
|
1184
|
1184
|
verifyPortMap(c, cnt, "70", curPortMap, false)
|
|
1185
|
1185
|
verifyPortMap(c, cnt, "90", curExplPortMap, true)
|
|
1186
|
1186
|
|
|
1187
|
1187
|
// Read current mapping
|
|
1188
|
|
- curPortMap, _ = dockerCmd(c, "port", cnt, "70")
|
|
|
1188
|
+ curPortMap = cli.DockerCmd(c, "port", cnt, "70").Stdout()
|
|
1189
|
1189
|
|
|
1190
|
1190
|
// Disconnect from a network which causes the container's default gw switch
|
|
1191
|
|
- dockerCmd(c, "network", "disconnect", "aaa", cnt)
|
|
|
1191
|
+ cli.DockerCmd(c, "network", "disconnect", "aaa", cnt)
|
|
1192
|
1192
|
verifyPortMap(c, cnt, "70", curPortMap, false)
|
|
1193
|
1193
|
verifyPortMap(c, cnt, "90", curExplPortMap, true)
|
|
1194
|
1194
|
|
|
1195
|
1195
|
// Read current mapping
|
|
1196
|
|
- curPortMap, _ = dockerCmd(c, "port", cnt, "70")
|
|
|
1196
|
+ curPortMap = cli.DockerCmd(c, "port", cnt, "70").Stdout()
|
|
1197
|
1197
|
|
|
1198
|
1198
|
// Connect to a network which does not cause the container's default gw switch
|
|
1199
|
|
- dockerCmd(c, "network", "connect", "ccc", cnt)
|
|
|
1199
|
+ cli.DockerCmd(c, "network", "connect", "ccc", cnt)
|
|
1200
|
1200
|
verifyPortMap(c, cnt, "70", curPortMap, true)
|
|
1201
|
1201
|
verifyPortMap(c, cnt, "90", curExplPortMap, true)
|
|
1202
|
1202
|
}
|
|
1203
|
1203
|
|
|
1204
|
1204
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectWithMac(c *testing.T) {
|
|
1205
|
1205
|
macAddress := "02:42:ac:11:00:02"
|
|
1206
|
|
- dockerCmd(c, "network", "create", "mynetwork")
|
|
1207
|
|
- dockerCmd(c, "run", "--name=test", "-d", "--mac-address", macAddress, "busybox", "top")
|
|
1208
|
|
- assert.Assert(c, waitRun("test") == nil)
|
|
|
1206
|
+ cli.DockerCmd(c, "network", "create", "mynetwork")
|
|
|
1207
|
+ cli.DockerCmd(c, "run", "--name=test", "-d", "--mac-address", macAddress, "busybox", "top")
|
|
|
1208
|
+ cli.WaitRun(c, "test")
|
|
1209
|
1209
|
mac1 := inspectField(c, "test", "NetworkSettings.Networks.bridge.MacAddress")
|
|
1210
|
1210
|
assert.Equal(c, strings.TrimSpace(mac1), macAddress)
|
|
1211
|
|
- dockerCmd(c, "network", "connect", "mynetwork", "test")
|
|
|
1211
|
+ cli.DockerCmd(c, "network", "connect", "mynetwork", "test")
|
|
1212
|
1212
|
mac2 := inspectField(c, "test", "NetworkSettings.Networks.mynetwork.MacAddress")
|
|
1213
|
1213
|
assert.Assert(c, strings.TrimSpace(mac2) != strings.TrimSpace(mac1))
|
|
1214
|
1214
|
}
|
|
1215
|
1215
|
|
|
1216
|
1216
|
func (s *DockerNetworkSuite) TestDockerNetworkInspectCreatedContainer(c *testing.T) {
|
|
1217
|
|
- dockerCmd(c, "create", "--name", "test", "busybox")
|
|
|
1217
|
+ cli.DockerCmd(c, "create", "--name", "test", "busybox")
|
|
1218
|
1218
|
networks := inspectField(c, "test", "NetworkSettings.Networks")
|
|
1219
|
1219
|
assert.Assert(c, strings.Contains(networks, "bridge"), "Should return 'bridge' network")
|
|
1220
|
1220
|
}
|
|
1221
|
1221
|
|
|
1222
|
1222
|
func (s *DockerNetworkSuite) TestDockerNetworkRestartWithMultipleNetworks(c *testing.T) {
|
|
1223
|
|
- dockerCmd(c, "network", "create", "test")
|
|
1224
|
|
- dockerCmd(c, "run", "--name=foo", "-d", "busybox", "top")
|
|
1225
|
|
- assert.Assert(c, waitRun("foo") == nil)
|
|
1226
|
|
- dockerCmd(c, "network", "connect", "test", "foo")
|
|
1227
|
|
- dockerCmd(c, "restart", "foo")
|
|
|
1223
|
+ cli.DockerCmd(c, "network", "create", "test")
|
|
|
1224
|
+ cli.DockerCmd(c, "run", "--name=foo", "-d", "busybox", "top")
|
|
|
1225
|
+ cli.WaitRun(c, "foo")
|
|
|
1226
|
+ cli.DockerCmd(c, "network", "connect", "test", "foo")
|
|
|
1227
|
+ cli.DockerCmd(c, "restart", "foo")
|
|
1228
|
1228
|
networks := inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1229
|
1229
|
assert.Assert(c, strings.Contains(networks, "bridge"), "Should contain 'bridge' network")
|
|
1230
|
1230
|
assert.Assert(c, strings.Contains(networks, "test"), "Should contain 'test' network")
|
|
...
|
...
|
@@ -1232,9 +1231,9 @@ func (s *DockerNetworkSuite) TestDockerNetworkRestartWithMultipleNetworks(c *tes
|
|
1232
|
1232
|
|
|
1233
|
1233
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnectToStoppedContainer(c *testing.T) {
|
|
1234
|
1234
|
testRequires(c, testEnv.IsLocalDaemon)
|
|
1235
|
|
- dockerCmd(c, "network", "create", "test")
|
|
1236
|
|
- dockerCmd(c, "create", "--name=foo", "busybox", "top")
|
|
1237
|
|
- dockerCmd(c, "network", "connect", "test", "foo")
|
|
|
1235
|
+ cli.DockerCmd(c, "network", "create", "test")
|
|
|
1236
|
+ cli.DockerCmd(c, "create", "--name=foo", "busybox", "top")
|
|
|
1237
|
+ cli.DockerCmd(c, "network", "connect", "test", "foo")
|
|
1238
|
1238
|
networks := inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1239
|
1239
|
assert.Assert(c, strings.Contains(networks, "test"), "Should contain 'test' network")
|
|
1240
|
1240
|
// Restart docker daemon to test the config has persisted to disk
|
|
...
|
...
|
@@ -1242,16 +1241,16 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnectToStoppedContaine
|
|
1242
|
1242
|
networks = inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1243
|
1243
|
assert.Assert(c, strings.Contains(networks, "test"), "Should contain 'test' network")
|
|
1244
|
1244
|
// start the container and test if we can ping it from another container in the same network
|
|
1245
|
|
- dockerCmd(c, "start", "foo")
|
|
1246
|
|
- assert.Assert(c, waitRun("foo") == nil)
|
|
|
1245
|
+ cli.DockerCmd(c, "start", "foo")
|
|
|
1246
|
+ cli.WaitRun(c, "foo")
|
|
1247
|
1247
|
ip := inspectField(c, "foo", "NetworkSettings.Networks.test.IPAddress")
|
|
1248
|
1248
|
ip = strings.TrimSpace(ip)
|
|
1249
|
|
- dockerCmd(c, "run", "--net=test", "busybox", "sh", "-c", fmt.Sprintf("ping -c 1 %s", ip))
|
|
|
1249
|
+ cli.DockerCmd(c, "run", "--net=test", "busybox", "sh", "-c", fmt.Sprintf("ping -c 1 %s", ip))
|
|
1250
|
1250
|
|
|
1251
|
|
- dockerCmd(c, "stop", "foo")
|
|
|
1251
|
+ cli.DockerCmd(c, "stop", "foo")
|
|
1252
|
1252
|
|
|
1253
|
1253
|
// Test disconnect
|
|
1254
|
|
- dockerCmd(c, "network", "disconnect", "test", "foo")
|
|
|
1254
|
+ cli.DockerCmd(c, "network", "disconnect", "test", "foo")
|
|
1255
|
1255
|
networks = inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1256
|
1256
|
assert.Assert(c, !strings.Contains(networks, "test"), "Should not contain 'test' network")
|
|
1257
|
1257
|
// Restart docker daemon to test the config has persisted to disk
|
|
...
|
...
|
@@ -1261,42 +1260,42 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectDisconnectToStoppedContaine
|
|
1261
|
1261
|
}
|
|
1262
|
1262
|
|
|
1263
|
1263
|
func (s *DockerNetworkSuite) TestDockerNetworkDisconnectContainerNonexistingNetwork(c *testing.T) {
|
|
1264
|
|
- dockerCmd(c, "network", "create", "test")
|
|
1265
|
|
- dockerCmd(c, "run", "--net=test", "-d", "--name=foo", "busybox", "top")
|
|
|
1264
|
+ cli.DockerCmd(c, "network", "create", "test")
|
|
|
1265
|
+ cli.DockerCmd(c, "run", "--net=test", "-d", "--name=foo", "busybox", "top")
|
|
1266
|
1266
|
networks := inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1267
|
1267
|
assert.Assert(c, strings.Contains(networks, "test"), "Should contain 'test' network")
|
|
1268
|
1268
|
// Stop container and remove network
|
|
1269
|
|
- dockerCmd(c, "stop", "foo")
|
|
1270
|
|
- dockerCmd(c, "network", "rm", "test")
|
|
|
1269
|
+ cli.DockerCmd(c, "stop", "foo")
|
|
|
1270
|
+ cli.DockerCmd(c, "network", "rm", "test")
|
|
1271
|
1271
|
|
|
1272
|
1272
|
// Test disconnecting stopped container from nonexisting network
|
|
1273
|
|
- dockerCmd(c, "network", "disconnect", "-f", "test", "foo")
|
|
|
1273
|
+ cli.DockerCmd(c, "network", "disconnect", "-f", "test", "foo")
|
|
1274
|
1274
|
networks = inspectField(c, "foo", "NetworkSettings.Networks")
|
|
1275
|
1275
|
assert.Assert(c, !strings.Contains(networks, "test"), "Should not contain 'test' network")
|
|
1276
|
1276
|
}
|
|
1277
|
1277
|
|
|
1278
|
1278
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectPreferredIP(c *testing.T) {
|
|
1279
|
1279
|
// create two networks
|
|
1280
|
|
- dockerCmd(c, "network", "create", "--ipv6", "--subnet=172.28.0.0/16", "--subnet=2001:db8:1234::/64", "n0")
|
|
|
1280
|
+ cli.DockerCmd(c, "network", "create", "--ipv6", "--subnet=172.28.0.0/16", "--subnet=2001:db8:1234::/64", "n0")
|
|
1281
|
1281
|
assertNwIsAvailable(c, "n0")
|
|
1282
|
1282
|
|
|
1283
|
|
- dockerCmd(c, "network", "create", "--ipv6", "--subnet=172.30.0.0/16", "--ip-range=172.30.5.0/24", "--subnet=2001:db8:abcd::/64", "--ip-range=2001:db8:abcd::/80", "n1")
|
|
|
1283
|
+ cli.DockerCmd(c, "network", "create", "--ipv6", "--subnet=172.30.0.0/16", "--ip-range=172.30.5.0/24", "--subnet=2001:db8:abcd::/64", "--ip-range=2001:db8:abcd::/80", "n1")
|
|
1284
|
1284
|
assertNwIsAvailable(c, "n1")
|
|
1285
|
1285
|
|
|
1286
|
1286
|
// run a container on first network specifying the ip addresses
|
|
1287
|
|
- dockerCmd(c, "run", "-d", "--name", "c0", "--net=n0", "--ip", "172.28.99.88", "--ip6", "2001:db8:1234::9988", "busybox", "top")
|
|
1288
|
|
- assert.Assert(c, waitRun("c0") == nil)
|
|
|
1287
|
+ cli.DockerCmd(c, "run", "-d", "--name", "c0", "--net=n0", "--ip", "172.28.99.88", "--ip6", "2001:db8:1234::9988", "busybox", "top")
|
|
|
1288
|
+ cli.WaitRun(c, "c0")
|
|
1289
|
1289
|
verifyIPAddressConfig(c, "c0", "n0", "172.28.99.88", "2001:db8:1234::9988")
|
|
1290
|
1290
|
verifyIPAddresses(c, "c0", "n0", "172.28.99.88", "2001:db8:1234::9988")
|
|
1291
|
1291
|
|
|
1292
|
1292
|
// connect the container to the second network specifying an ip addresses
|
|
1293
|
|
- dockerCmd(c, "network", "connect", "--ip", "172.30.5.44", "--ip6", "2001:db8:abcd::5544", "n1", "c0")
|
|
|
1293
|
+ cli.DockerCmd(c, "network", "connect", "--ip", "172.30.5.44", "--ip6", "2001:db8:abcd::5544", "n1", "c0")
|
|
1294
|
1294
|
verifyIPAddressConfig(c, "c0", "n1", "172.30.5.44", "2001:db8:abcd::5544")
|
|
1295
|
1295
|
verifyIPAddresses(c, "c0", "n1", "172.30.5.44", "2001:db8:abcd::5544")
|
|
1296
|
1296
|
|
|
1297
|
1297
|
// Stop and restart the container
|
|
1298
|
|
- dockerCmd(c, "stop", "c0")
|
|
1299
|
|
- dockerCmd(c, "start", "c0")
|
|
|
1298
|
+ cli.DockerCmd(c, "stop", "c0")
|
|
|
1299
|
+ cli.DockerCmd(c, "start", "c0")
|
|
1300
|
1300
|
|
|
1301
|
1301
|
// verify requested addresses are applied and configs are still there
|
|
1302
|
1302
|
verifyIPAddressConfig(c, "c0", "n0", "172.28.99.88", "2001:db8:1234::9988")
|
|
...
|
...
|
@@ -1312,24 +1311,24 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectPreferredIP(c *testing.T) {
|
|
1312
|
1312
|
|
|
1313
|
1313
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectPreferredIPStoppedContainer(c *testing.T) {
|
|
1314
|
1314
|
// create a container
|
|
1315
|
|
- dockerCmd(c, "create", "--name", "c0", "busybox", "top")
|
|
|
1315
|
+ cli.DockerCmd(c, "create", "--name", "c0", "busybox", "top")
|
|
1316
|
1316
|
|
|
1317
|
1317
|
// create a network
|
|
1318
|
|
- dockerCmd(c, "network", "create", "--ipv6", "--subnet=172.30.0.0/16", "--subnet=2001:db8:abcd::/64", "n0")
|
|
|
1318
|
+ cli.DockerCmd(c, "network", "create", "--ipv6", "--subnet=172.30.0.0/16", "--subnet=2001:db8:abcd::/64", "n0")
|
|
1319
|
1319
|
assertNwIsAvailable(c, "n0")
|
|
1320
|
1320
|
|
|
1321
|
1321
|
// connect the container to the network specifying an ip addresses
|
|
1322
|
|
- dockerCmd(c, "network", "connect", "--ip", "172.30.55.44", "--ip6", "2001:db8:abcd::5544", "n0", "c0")
|
|
|
1322
|
+ cli.DockerCmd(c, "network", "connect", "--ip", "172.30.55.44", "--ip6", "2001:db8:abcd::5544", "n0", "c0")
|
|
1323
|
1323
|
verifyIPAddressConfig(c, "c0", "n0", "172.30.55.44", "2001:db8:abcd::5544")
|
|
1324
|
1324
|
|
|
1325
|
1325
|
// start the container, verify config has not changed and ip addresses are assigned
|
|
1326
|
|
- dockerCmd(c, "start", "c0")
|
|
1327
|
|
- assert.Assert(c, waitRun("c0") == nil)
|
|
|
1326
|
+ cli.DockerCmd(c, "start", "c0")
|
|
|
1327
|
+ cli.WaitRun(c, "c0")
|
|
1328
|
1328
|
verifyIPAddressConfig(c, "c0", "n0", "172.30.55.44", "2001:db8:abcd::5544")
|
|
1329
|
1329
|
verifyIPAddresses(c, "c0", "n0", "172.30.55.44", "2001:db8:abcd::5544")
|
|
1330
|
1330
|
|
|
1331
|
1331
|
// stop the container and check ip config has not changed
|
|
1332
|
|
- dockerCmd(c, "stop", "c0")
|
|
|
1332
|
+ cli.DockerCmd(c, "stop", "c0")
|
|
1333
|
1333
|
verifyIPAddressConfig(c, "c0", "n0", "172.30.55.44", "2001:db8:abcd::5544")
|
|
1334
|
1334
|
}
|
|
1335
|
1335
|
|
|
...
|
...
|
@@ -1340,7 +1339,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkUnsupportedRequiredIP(c *testing.T
|
|
1340
|
1340
|
}
|
|
1341
|
1341
|
|
|
1342
|
1342
|
// requested IP is not supported on networks with no user defined subnets
|
|
1343
|
|
- dockerCmd(c, "network", "create", "n0")
|
|
|
1343
|
+ cli.DockerCmd(c, "network", "create", "n0")
|
|
1344
|
1344
|
assertNwIsAvailable(c, "n0")
|
|
1345
|
1345
|
|
|
1346
|
1346
|
out, _, err := dockerCmdWithError("run", "-d", "--ip", "172.28.99.88", "--net", "n0", "busybox", "top")
|
|
...
|
...
|
@@ -1349,7 +1348,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkUnsupportedRequiredIP(c *testing.T
|
|
1349
|
1349
|
out, _, err = dockerCmdWithError("run", "-d", "--ip6", "2001:db8:1234::9988", "--net", "n0", "busybox", "top")
|
|
1350
|
1350
|
assert.Assert(c, err != nil, "out: %s", out)
|
|
1351
|
1351
|
assert.Assert(c, strings.Contains(out, runconfig.ErrUnsupportedNetworkNoSubnetAndIP.Error()))
|
|
1352
|
|
- dockerCmd(c, "network", "rm", "n0")
|
|
|
1352
|
+ cli.DockerCmd(c, "network", "rm", "n0")
|
|
1353
|
1353
|
assertNwNotAvailable(c, "n0")
|
|
1354
|
1354
|
}
|
|
1355
|
1355
|
|
|
...
|
...
|
@@ -1381,7 +1380,7 @@ func verifyIPAddresses(c *testing.T, cName, nwname, ipv4, ipv6 string) {
|
|
1381
|
1381
|
|
|
1382
|
1382
|
func (s *DockerNetworkSuite) TestDockerNetworkConnectLinkLocalIP(c *testing.T) {
|
|
1383
|
1383
|
// create one test network
|
|
1384
|
|
- dockerCmd(c, "network", "create", "--ipv6", "--subnet=2001:db8:1234::/64", "n0")
|
|
|
1384
|
+ cli.DockerCmd(c, "network", "create", "--ipv6", "--subnet=2001:db8:1234::/64", "n0")
|
|
1385
|
1385
|
assertNwIsAvailable(c, "n0")
|
|
1386
|
1386
|
|
|
1387
|
1387
|
// run a container with incorrect link-local address
|
|
...
|
...
|
@@ -1391,15 +1390,15 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectLinkLocalIP(c *testing.T) {
|
|
1391
|
1391
|
assert.ErrorContains(c, err, "")
|
|
1392
|
1392
|
|
|
1393
|
1393
|
// run two containers with link-local ip on the test network
|
|
1394
|
|
- dockerCmd(c, "run", "-d", "--name", "c0", "--net=n0", "--link-local-ip", "169.254.7.7", "--link-local-ip", "fe80::254:77", "busybox", "top")
|
|
1395
|
|
- assert.Assert(c, waitRun("c0") == nil)
|
|
1396
|
|
- dockerCmd(c, "run", "-d", "--name", "c1", "--net=n0", "--link-local-ip", "169.254.8.8", "--link-local-ip", "fe80::254:88", "busybox", "top")
|
|
1397
|
|
- assert.Assert(c, waitRun("c1") == nil)
|
|
|
1394
|
+ cli.DockerCmd(c, "run", "-d", "--name", "c0", "--net=n0", "--link-local-ip", "169.254.7.7", "--link-local-ip", "fe80::254:77", "busybox", "top")
|
|
|
1395
|
+ cli.WaitRun(c, "c0")
|
|
|
1396
|
+ cli.DockerCmd(c, "run", "-d", "--name", "c1", "--net=n0", "--link-local-ip", "169.254.8.8", "--link-local-ip", "fe80::254:88", "busybox", "top")
|
|
|
1397
|
+ cli.WaitRun(c, "c1")
|
|
1398
|
1398
|
|
|
1399
|
1399
|
// run a container on the default network and connect it to the test network specifying a link-local address
|
|
1400
|
|
- dockerCmd(c, "run", "-d", "--name", "c2", "busybox", "top")
|
|
1401
|
|
- assert.Assert(c, waitRun("c2") == nil)
|
|
1402
|
|
- dockerCmd(c, "network", "connect", "--link-local-ip", "169.254.9.9", "n0", "c2")
|
|
|
1400
|
+ cli.DockerCmd(c, "run", "-d", "--name", "c2", "busybox", "top")
|
|
|
1401
|
+ cli.WaitRun(c, "c2")
|
|
|
1402
|
+ cli.DockerCmd(c, "network", "connect", "--link-local-ip", "169.254.9.9", "n0", "c2")
|
|
1403
|
1403
|
|
|
1404
|
1404
|
// verify the three containers can ping each other via the link-local addresses
|
|
1405
|
1405
|
_, _, err = dockerCmdWithError("exec", "c0", "ping", "-c", "1", "169.254.8.8")
|
|
...
|
...
|
@@ -1410,12 +1409,12 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectLinkLocalIP(c *testing.T) {
|
|
1410
|
1410
|
assert.NilError(c, err)
|
|
1411
|
1411
|
|
|
1412
|
1412
|
// Stop and restart the three containers
|
|
1413
|
|
- dockerCmd(c, "stop", "c0")
|
|
1414
|
|
- dockerCmd(c, "stop", "c1")
|
|
1415
|
|
- dockerCmd(c, "stop", "c2")
|
|
1416
|
|
- dockerCmd(c, "start", "c0")
|
|
1417
|
|
- dockerCmd(c, "start", "c1")
|
|
1418
|
|
- dockerCmd(c, "start", "c2")
|
|
|
1413
|
+ cli.DockerCmd(c, "stop", "c0")
|
|
|
1414
|
+ cli.DockerCmd(c, "stop", "c1")
|
|
|
1415
|
+ cli.DockerCmd(c, "stop", "c2")
|
|
|
1416
|
+ cli.DockerCmd(c, "start", "c0")
|
|
|
1417
|
+ cli.DockerCmd(c, "start", "c1")
|
|
|
1418
|
+ cli.DockerCmd(c, "start", "c2")
|
|
1419
|
1419
|
|
|
1420
|
1420
|
// verify the ping again
|
|
1421
|
1421
|
_, _, err = dockerCmdWithError("exec", "c0", "ping", "-c", "1", "169.254.8.8")
|
|
...
|
...
|
@@ -1428,17 +1427,16 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectLinkLocalIP(c *testing.T) {
|
|
1428
|
1428
|
|
|
1429
|
1429
|
func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectDisconnectLink(c *testing.T) {
|
|
1430
|
1430
|
testRequires(c, DaemonIsLinux, NotUserNamespace)
|
|
1431
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "foo1")
|
|
1432
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "foo2")
|
|
|
1431
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "foo1")
|
|
|
1432
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "foo2")
|
|
1433
|
1433
|
|
|
1434
|
|
- dockerCmd(c, "run", "-d", "--net=foo1", "--name=first", "busybox", "top")
|
|
1435
|
|
- assert.Assert(c, waitRun("first") == nil)
|
|
|
1434
|
+ cli.DockerCmd(c, "run", "-d", "--net=foo1", "--name=first", "busybox", "top")
|
|
|
1435
|
+ cli.WaitRun(c, "first")
|
|
1436
|
1436
|
|
|
1437
|
1437
|
// run a container in a user-defined network with a link for an existing container
|
|
1438
|
1438
|
// and a link for a container that doesn't exist
|
|
1439
|
|
- dockerCmd(c, "run", "-d", "--net=foo1", "--name=second", "--link=first:FirstInFoo1",
|
|
1440
|
|
- "--link=third:bar", "busybox", "top")
|
|
1441
|
|
- assert.Assert(c, waitRun("second") == nil)
|
|
|
1439
|
+ cli.DockerCmd(c, "run", "-d", "--net=foo1", "--name=second", "--link=first:FirstInFoo1", "--link=third:bar", "busybox", "top")
|
|
|
1440
|
+ cli.WaitRun(c, "second")
|
|
1442
|
1441
|
|
|
1443
|
1442
|
// ping to first and its alias FirstInFoo1 must succeed
|
|
1444
|
1443
|
_, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
...
|
...
|
@@ -1447,16 +1445,16 @@ func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectDisconnectLink(c *t
|
|
1447
|
1447
|
assert.NilError(c, err)
|
|
1448
|
1448
|
|
|
1449
|
1449
|
// connect first container to foo2 network
|
|
1450
|
|
- dockerCmd(c, "network", "connect", "foo2", "first")
|
|
|
1450
|
+ cli.DockerCmd(c, "network", "connect", "foo2", "first")
|
|
1451
|
1451
|
// connect second container to foo2 network with a different alias for first container
|
|
1452
|
|
- dockerCmd(c, "network", "connect", "--link=first:FirstInFoo2", "foo2", "second")
|
|
|
1452
|
+ cli.DockerCmd(c, "network", "connect", "--link=first:FirstInFoo2", "foo2", "second")
|
|
1453
|
1453
|
|
|
1454
|
1454
|
// ping the new alias in network foo2
|
|
1455
|
1455
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "FirstInFoo2")
|
|
1456
|
1456
|
assert.NilError(c, err)
|
|
1457
|
1457
|
|
|
1458
|
1458
|
// disconnect first container from foo1 network
|
|
1459
|
|
- dockerCmd(c, "network", "disconnect", "foo1", "first")
|
|
|
1459
|
+ cli.DockerCmd(c, "network", "disconnect", "foo1", "first")
|
|
1460
|
1460
|
|
|
1461
|
1461
|
// link in foo1 network must fail
|
|
1462
|
1462
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "FirstInFoo1")
|
|
...
|
...
|
@@ -1472,15 +1470,15 @@ func (s *DockerNetworkSuite) TestDockerNetworkDisconnectDefault(c *testing.T) {
|
|
1472
|
1472
|
netWorkName2 := "test2"
|
|
1473
|
1473
|
containerName := "foo"
|
|
1474
|
1474
|
|
|
1475
|
|
- dockerCmd(c, "network", "create", netWorkName1)
|
|
1476
|
|
- dockerCmd(c, "network", "create", netWorkName2)
|
|
1477
|
|
- dockerCmd(c, "create", "--name", containerName, "busybox", "top")
|
|
1478
|
|
- dockerCmd(c, "network", "connect", netWorkName1, containerName)
|
|
1479
|
|
- dockerCmd(c, "network", "connect", netWorkName2, containerName)
|
|
1480
|
|
- dockerCmd(c, "network", "disconnect", "bridge", containerName)
|
|
|
1475
|
+ cli.DockerCmd(c, "network", "create", netWorkName1)
|
|
|
1476
|
+ cli.DockerCmd(c, "network", "create", netWorkName2)
|
|
|
1477
|
+ cli.DockerCmd(c, "create", "--name", containerName, "busybox", "top")
|
|
|
1478
|
+ cli.DockerCmd(c, "network", "connect", netWorkName1, containerName)
|
|
|
1479
|
+ cli.DockerCmd(c, "network", "connect", netWorkName2, containerName)
|
|
|
1480
|
+ cli.DockerCmd(c, "network", "disconnect", "bridge", containerName)
|
|
1481
|
1481
|
|
|
1482
|
|
- dockerCmd(c, "start", containerName)
|
|
1483
|
|
- assert.Assert(c, waitRun(containerName) == nil)
|
|
|
1482
|
+ cli.DockerCmd(c, "start", containerName)
|
|
|
1483
|
+ cli.WaitRun(c, containerName)
|
|
1484
|
1484
|
networks := inspectField(c, containerName, "NetworkSettings.Networks")
|
|
1485
|
1485
|
assert.Assert(c, strings.Contains(networks, netWorkName1), fmt.Sprintf("Should contain '%s' network", netWorkName1))
|
|
1486
|
1486
|
assert.Assert(c, strings.Contains(networks, netWorkName2), fmt.Sprintf("Should contain '%s' network", netWorkName2))
|
|
...
|
...
|
@@ -1491,10 +1489,10 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectWithAliasOnDefaultNetworks(
|
|
1491
|
1491
|
testRequires(c, DaemonIsLinux, NotUserNamespace)
|
|
1492
|
1492
|
|
|
1493
|
1493
|
defaults := []string{"bridge", "host", "none"}
|
|
1494
|
|
- out, _ := dockerCmd(c, "run", "-d", "--net=none", "busybox", "top")
|
|
|
1494
|
+ out := cli.DockerCmd(c, "run", "-d", "--net=none", "busybox", "top").Stdout()
|
|
1495
|
1495
|
containerID := strings.TrimSpace(out)
|
|
1496
|
|
- for _, net := range defaults {
|
|
1497
|
|
- res, _, err := dockerCmdWithError("network", "connect", "--alias", "alias"+net, net, containerID)
|
|
|
1496
|
+ for _, nw := range defaults {
|
|
|
1497
|
+ res, _, err := dockerCmdWithError("network", "connect", "--alias", "alias"+nw, nw, containerID)
|
|
1498
|
1498
|
assert.ErrorContains(c, err, "")
|
|
1499
|
1499
|
assert.Assert(c, strings.Contains(res, runconfig.ErrUnsupportedNetworkAndAlias.Error()))
|
|
1500
|
1500
|
}
|
|
...
|
...
|
@@ -1502,14 +1500,14 @@ func (s *DockerNetworkSuite) TestDockerNetworkConnectWithAliasOnDefaultNetworks(
|
|
1502
|
1502
|
|
|
1503
|
1503
|
func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectDisconnectAlias(c *testing.T) {
|
|
1504
|
1504
|
testRequires(c, DaemonIsLinux, NotUserNamespace)
|
|
1505
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "net1")
|
|
1506
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "net2")
|
|
|
1505
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "net1")
|
|
|
1506
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "net2")
|
|
1507
|
1507
|
|
|
1508
|
|
- cid, _ := dockerCmd(c, "run", "-d", "--net=net1", "--name=first", "--net-alias=foo", "busybox:glibc", "top")
|
|
1509
|
|
- assert.Assert(c, waitRun("first") == nil)
|
|
|
1508
|
+ cid := cli.DockerCmd(c, "run", "-d", "--net=net1", "--name=first", "--net-alias=foo", "busybox:glibc", "top").Stdout()
|
|
|
1509
|
+ cli.WaitRun(c, "first")
|
|
1510
|
1510
|
|
|
1511
|
|
- dockerCmd(c, "run", "-d", "--net=net1", "--name=second", "busybox:glibc", "top")
|
|
1512
|
|
- assert.Assert(c, waitRun("second") == nil)
|
|
|
1511
|
+ cli.DockerCmd(c, "run", "-d", "--net=net1", "--name=second", "busybox:glibc", "top")
|
|
|
1512
|
+ cli.WaitRun(c, "second")
|
|
1513
|
1513
|
|
|
1514
|
1514
|
// ping first container and its alias
|
|
1515
|
1515
|
_, _, err := dockerCmdWithError("exec", "second", "ping", "-c", "1", "first")
|
|
...
|
...
|
@@ -1522,16 +1520,16 @@ func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectDisconnectAlias(c *
|
|
1522
|
1522
|
assert.NilError(c, err)
|
|
1523
|
1523
|
|
|
1524
|
1524
|
// connect first container to net2 network
|
|
1525
|
|
- dockerCmd(c, "network", "connect", "--alias=bar", "net2", "first")
|
|
|
1525
|
+ cli.DockerCmd(c, "network", "connect", "--alias=bar", "net2", "first")
|
|
1526
|
1526
|
// connect second container to foo2 network with a different alias for first container
|
|
1527
|
|
- dockerCmd(c, "network", "connect", "net2", "second")
|
|
|
1527
|
+ cli.DockerCmd(c, "network", "connect", "net2", "second")
|
|
1528
|
1528
|
|
|
1529
|
1529
|
// ping the new alias in network foo2
|
|
1530
|
1530
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "bar")
|
|
1531
|
1531
|
assert.NilError(c, err)
|
|
1532
|
1532
|
|
|
1533
|
1533
|
// disconnect first container from net1 network
|
|
1534
|
|
- dockerCmd(c, "network", "disconnect", "net1", "first")
|
|
|
1534
|
+ cli.DockerCmd(c, "network", "disconnect", "net1", "first")
|
|
1535
|
1535
|
|
|
1536
|
1536
|
// ping to net1 scoped alias "foo" must fail
|
|
1537
|
1537
|
_, _, err = dockerCmdWithError("exec", "second", "ping", "-c", "1", "foo")
|
|
...
|
...
|
@@ -1556,13 +1554,13 @@ func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectDisconnectAlias(c *
|
|
1556
|
1556
|
|
|
1557
|
1557
|
func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectivity(c *testing.T) {
|
|
1558
|
1558
|
testRequires(c, DaemonIsLinux, NotUserNamespace)
|
|
1559
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "br.net1")
|
|
|
1559
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "br.net1")
|
|
1560
|
1560
|
|
|
1561
|
|
- dockerCmd(c, "run", "-d", "--net=br.net1", "--name=c1.net1", "busybox:glibc", "top")
|
|
1562
|
|
- assert.Assert(c, waitRun("c1.net1") == nil)
|
|
|
1561
|
+ cli.DockerCmd(c, "run", "-d", "--net=br.net1", "--name=c1.net1", "busybox:glibc", "top")
|
|
|
1562
|
+ cli.WaitRun(c, "c1.net1")
|
|
1563
|
1563
|
|
|
1564
|
|
- dockerCmd(c, "run", "-d", "--net=br.net1", "--name=c2.net1", "busybox:glibc", "top")
|
|
1565
|
|
- assert.Assert(c, waitRun("c2.net1") == nil)
|
|
|
1564
|
+ cli.DockerCmd(c, "run", "-d", "--net=br.net1", "--name=c2.net1", "busybox:glibc", "top")
|
|
|
1565
|
+ cli.WaitRun(c, "c2.net1")
|
|
1566
|
1566
|
|
|
1567
|
1567
|
// ping first container by its unqualified name
|
|
1568
|
1568
|
_, _, err := dockerCmdWithError("exec", "c2.net1", "ping", "-c", "1", "c1.net1")
|
|
...
|
...
|
@@ -1579,16 +1577,16 @@ func (s *DockerCLINetworkSuite) TestUserDefinedNetworkConnectivity(c *testing.T)
|
|
1579
|
1579
|
|
|
1580
|
1580
|
func (s *DockerCLINetworkSuite) TestEmbeddedDNSInvalidInput(c *testing.T) {
|
|
1581
|
1581
|
testRequires(c, DaemonIsLinux, NotUserNamespace)
|
|
1582
|
|
- dockerCmd(c, "network", "create", "-d", "bridge", "nw1")
|
|
|
1582
|
+ cli.DockerCmd(c, "network", "create", "-d", "bridge", "nw1")
|
|
1583
|
1583
|
|
|
1584
|
1584
|
// Sending garbage to embedded DNS shouldn't crash the daemon
|
|
1585
|
|
- dockerCmd(c, "run", "-i", "--net=nw1", "--name=c1", "debian:bullseye-slim", "bash", "-c", "echo InvalidQuery > /dev/udp/127.0.0.11/53")
|
|
|
1585
|
+ cli.DockerCmd(c, "run", "-i", "--net=nw1", "--name=c1", "debian:bullseye-slim", "bash", "-c", "echo InvalidQuery > /dev/udp/127.0.0.11/53")
|
|
1586
|
1586
|
}
|
|
1587
|
1587
|
|
|
1588
|
1588
|
func (s *DockerCLINetworkSuite) TestDockerNetworkConnectFailsNoInspectChange(c *testing.T) {
|
|
1589
|
|
- dockerCmd(c, "run", "-d", "--name=bb", "busybox", "top")
|
|
1590
|
|
- assert.Assert(c, waitRun("bb") == nil)
|
|
1591
|
|
- defer dockerCmd(c, "stop", "bb")
|
|
|
1589
|
+ cli.DockerCmd(c, "run", "-d", "--name=bb", "busybox", "top")
|
|
|
1590
|
+ cli.WaitRun(c, "bb")
|
|
|
1591
|
+ defer cli.DockerCmd(c, "stop", "bb")
|
|
1592
|
1592
|
|
|
1593
|
1593
|
ns0 := inspectField(c, "bb", "NetworkSettings.Networks.bridge")
|
|
1594
|
1594
|
|
|
...
|
...
|
@@ -1601,15 +1599,15 @@ func (s *DockerCLINetworkSuite) TestDockerNetworkConnectFailsNoInspectChange(c *
|
|
1601
|
1601
|
}
|
|
1602
|
1602
|
|
|
1603
|
1603
|
func (s *DockerCLINetworkSuite) TestDockerNetworkInternalMode(c *testing.T) {
|
|
1604
|
|
- dockerCmd(c, "network", "create", "--driver=bridge", "--internal", "internal")
|
|
|
1604
|
+ cli.DockerCmd(c, "network", "create", "--driver=bridge", "--internal", "internal")
|
|
1605
|
1605
|
assertNwIsAvailable(c, "internal")
|
|
1606
|
1606
|
nr := getNetworkResource(c, "internal")
|
|
1607
|
1607
|
assert.Assert(c, nr.Internal)
|
|
1608
|
1608
|
|
|
1609
|
|
- dockerCmd(c, "run", "-d", "--net=internal", "--name=first", "busybox:glibc", "top")
|
|
1610
|
|
- assert.Assert(c, waitRun("first") == nil)
|
|
1611
|
|
- dockerCmd(c, "run", "-d", "--net=internal", "--name=second", "busybox:glibc", "top")
|
|
1612
|
|
- assert.Assert(c, waitRun("second") == nil)
|
|
|
1609
|
+ cli.DockerCmd(c, "run", "-d", "--net=internal", "--name=first", "busybox:glibc", "top")
|
|
|
1610
|
+ cli.WaitRun(c, "first")
|
|
|
1611
|
+ cli.DockerCmd(c, "run", "-d", "--net=internal", "--name=second", "busybox:glibc", "top")
|
|
|
1612
|
+ cli.WaitRun(c, "second")
|
|
1613
|
1613
|
out, _, err := dockerCmdWithError("exec", "first", "ping", "-W", "4", "-c", "1", "8.8.8.8")
|
|
1614
|
1614
|
assert.ErrorContains(c, err, "")
|
|
1615
|
1615
|
assert.Assert(c, is.Contains(out, "Network is unreachable"))
|
|
...
|
...
|
@@ -1619,14 +1617,14 @@ func (s *DockerCLINetworkSuite) TestDockerNetworkInternalMode(c *testing.T) {
|
|
1619
|
1619
|
|
|
1620
|
1620
|
// Test for #21401
|
|
1621
|
1621
|
func (s *DockerNetworkSuite) TestDockerNetworkCreateDeleteSpecialCharacters(c *testing.T) {
|
|
1622
|
|
- dockerCmd(c, "network", "create", "test@#$")
|
|
|
1622
|
+ cli.DockerCmd(c, "network", "create", "test@#$")
|
|
1623
|
1623
|
assertNwIsAvailable(c, "test@#$")
|
|
1624
|
|
- dockerCmd(c, "network", "rm", "test@#$")
|
|
|
1624
|
+ cli.DockerCmd(c, "network", "rm", "test@#$")
|
|
1625
|
1625
|
assertNwNotAvailable(c, "test@#$")
|
|
1626
|
1626
|
|
|
1627
|
|
- dockerCmd(c, "network", "create", "kiwl$%^")
|
|
|
1627
|
+ cli.DockerCmd(c, "network", "create", "kiwl$%^")
|
|
1628
|
1628
|
assertNwIsAvailable(c, "kiwl$%^")
|
|
1629
|
|
- dockerCmd(c, "network", "rm", "kiwl$%^")
|
|
|
1629
|
+ cli.DockerCmd(c, "network", "rm", "kiwl$%^")
|
|
1630
|
1630
|
assertNwNotAvailable(c, "kiwl$%^")
|
|
1631
|
1631
|
}
|
|
1632
|
1632
|
|
|
...
|
...
|
@@ -1701,11 +1699,11 @@ func (s *DockerDaemonSuite) TestDaemonRestartRestoreBridgeNetwork(t *testing.T)
|
|
1701
|
1701
|
}
|
|
1702
|
1702
|
|
|
1703
|
1703
|
func (s *DockerNetworkSuite) TestDockerNetworkFlagAlias(c *testing.T) {
|
|
1704
|
|
- dockerCmd(c, "network", "create", "user")
|
|
1705
|
|
- output, status := dockerCmd(c, "run", "--rm", "--network=user", "--network-alias=foo", "busybox", "true")
|
|
1706
|
|
- assert.Equal(c, status, 0, fmt.Sprintf("unexpected status code %d (%s)", status, output))
|
|
|
1704
|
+ cli.DockerCmd(c, "network", "create", "user")
|
|
|
1705
|
+ result := cli.DockerCmd(c, "run", "--rm", "--network=user", "--network-alias=foo", "busybox", "true")
|
|
|
1706
|
+ assert.Equal(c, result.ExitCode, 0, fmt.Sprintf("unexpected status code %d (%s)", result.ExitCode, result.Combined()))
|
|
1707
|
1707
|
|
|
1708
|
|
- output, status, _ = dockerCmdWithError("run", "--rm", "--network=user", "--net-alias=foo", "--network-alias=bar", "busybox", "true")
|
|
|
1708
|
+ output, status, _ := dockerCmdWithError("run", "--rm", "--network=user", "--net-alias=foo", "--network-alias=bar", "busybox", "true")
|
|
1709
|
1709
|
assert.Equal(c, status, 0, fmt.Sprintf("unexpected status code %d (%s)", status, output))
|
|
1710
|
1710
|
}
|
|
1711
|
1711
|
|
|
...
|
...
|
@@ -1716,7 +1714,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkValidateIP(c *testing.T) {
|
|
1716
|
1716
|
|
|
1717
|
1717
|
_, _, err = dockerCmdWithError("run", "-d", "--name", "mynet0", "--net=mynet", "--ip", "172.28.99.88", "--ip6", "2001:db8:1234::9988", "busybox", "top")
|
|
1718
|
1718
|
assert.NilError(c, err)
|
|
1719
|
|
- assert.Assert(c, waitRun("mynet0") == nil)
|
|
|
1719
|
+ cli.WaitRun(c, "mynet0")
|
|
1720
|
1720
|
verifyIPAddressConfig(c, "mynet0", "mynet", "172.28.99.88", "2001:db8:1234::9988")
|
|
1721
|
1721
|
verifyIPAddresses(c, "mynet0", "mynet", "172.28.99.88", "2001:db8:1234::9988")
|
|
1722
|
1722
|
|
|
...
|
...
|
@@ -1735,12 +1733,11 @@ func (s *DockerNetworkSuite) TestDockerNetworkValidateIP(c *testing.T) {
|
|
1735
|
1735
|
|
|
1736
|
1736
|
// Test case for 26220
|
|
1737
|
1737
|
func (s *DockerNetworkSuite) TestDockerNetworkDisconnectFromBridge(c *testing.T) {
|
|
1738
|
|
- out, _ := dockerCmd(c, "network", "inspect", "--format", "{{.Id}}", "bridge")
|
|
1739
|
|
-
|
|
|
1738
|
+ out := cli.DockerCmd(c, "network", "inspect", "--format", "{{.Id}}", "bridge").Stdout()
|
|
1740
|
1739
|
network := strings.TrimSpace(out)
|
|
1741
|
1740
|
|
|
1742
|
1741
|
name := "test"
|
|
1743
|
|
- dockerCmd(c, "create", "--name", name, "busybox", "top")
|
|
|
1742
|
+ cli.DockerCmd(c, "create", "--name", name, "busybox", "top")
|
|
1744
|
1743
|
|
|
1745
|
1744
|
_, _, err := dockerCmdWithError("network", "disconnect", network, name)
|
|
1746
|
1745
|
assert.NilError(c, err)
|