Browse code

integration-cli: DockerNetworkSuite: replace dockerCmd and waitRun

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2023/07/27 19:58:10
Showing 2 changed files
... ...
@@ -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)
... ...
@@ -6,6 +6,7 @@ import (
6 6
 	"strings"
7 7
 	"testing"
8 8
 
9
+	"github.com/docker/docker/integration-cli/cli"
9 10
 	"github.com/docker/docker/testutil"
10 11
 	"github.com/docker/docker/testutil/request"
11 12
 	"gotest.tools/v3/assert"
... ...
@@ -13,10 +14,10 @@ import (
13 13
 
14 14
 // #19100 This is a deprecated feature test, it should be removed in Docker 1.12
15 15
 func (s *DockerNetworkSuite) TestDeprecatedDockerNetworkStartAPIWithHostconfig(c *testing.T) {
16
-	netName := "test"
17
-	conName := "foo"
18
-	dockerCmd(c, "network", "create", netName)
19
-	dockerCmd(c, "create", "--name", conName, "busybox", "top")
16
+	const netName = "test"
17
+	const conName = "foo"
18
+	cli.DockerCmd(c, "network", "create", netName)
19
+	cli.DockerCmd(c, "create", "--name", conName, "busybox", "top")
20 20
 
21 21
 	config := map[string]interface{}{
22 22
 		"HostConfig": map[string]interface{}{
... ...
@@ -25,7 +26,7 @@ func (s *DockerNetworkSuite) TestDeprecatedDockerNetworkStartAPIWithHostconfig(c
25 25
 	}
26 26
 	_, _, err := request.Post(testutil.GetContext(c), formatV123StartAPIURL("/containers/"+conName+"/start"), request.JSONBody(config))
27 27
 	assert.NilError(c, err)
28
-	assert.NilError(c, waitRun(conName))
28
+	cli.WaitRun(c, conName)
29 29
 	networks := inspectField(c, conName, "NetworkSettings.Networks")
30 30
 	assert.Assert(c, strings.Contains(networks, netName), "Should contain '%s' network", netName)
31 31
 	assert.Assert(c, !strings.Contains(networks, "bridge"), "Should not contain 'bridge' network")