Skip to content

Commit d9cf528

Browse files
committed
Cleanup containers tests
Signed-off-by: apostasie <[email protected]>
1 parent ff0e8ec commit d9cf528

File tree

3 files changed

+104
-173
lines changed

3 files changed

+104
-173
lines changed

cmd/nerdctl/container/container_exec_linux_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ func TestExecTTY(t *testing.T) {
6565

6666
testCase.Setup = func(data test.Data, helpers test.Helpers) {
6767
helpers.Ensure("run", "-d", "--name", data.Identifier(), testutil.CommonImage, "sleep", nerdtest.Infinity)
68+
69+
nerdtest.EnsureContainerStarted(helpers, data.Identifier())
70+
6871
data.Labels().Set("container_name", data.Identifier())
6972
}
7073

cmd/nerdctl/container/container_run_mount_linux_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,8 @@ func TestRunBindMountBind(t *testing.T) {
352352
"top",
353353
)
354354

355+
nerdtest.EnsureContainerStarted(helpers, data.Identifier("container"))
356+
355357
// Save host rwDir location and container id for subtests
356358
data.Labels().Set("container", data.Identifier("container"))
357359
data.Labels().Set("rwDir", rwDir)

cmd/nerdctl/container/container_run_network_linux_test.go

Lines changed: 99 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -361,11 +361,8 @@ func TestRunWithInvalidPortThenCleanUp(t *testing.T) {
361361
testCase.SubTests = []*test.Case{
362362
{
363363
Description: "Run a container with invalid ports, and then clean up.",
364-
Cleanup: func(data test.Data, helpers test.Helpers) {
365-
helpers.Anyhow("rm", "--data-root", data.Temp().Path(), "-f", data.Identifier())
366-
},
367364
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
368-
return helpers.Command("run", "--data-root", data.Temp().Path(), "--rm", "--name", data.Identifier(), "-p", "22200-22299:22200-22299", testutil.CommonImage)
365+
return helpers.Command("run", "--data-root", data.Temp().Path(), "--rm", "-p", "22200-22299:22200-22299", testutil.CommonImage)
369366
},
370367
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
371368
return &test.Expected{
@@ -518,158 +515,104 @@ func TestSharedNetworkSetup(t *testing.T) {
518515
testCase := &test.Case{
519516
Require: require.Not(require.Windows),
520517
Setup: func(data test.Data, helpers test.Helpers) {
521-
data.Labels().Set("containerName1", data.Identifier("-container1"))
522-
containerName1 := data.Labels().Get("containerName1")
523-
helpers.Ensure("run", "-d", "--name", containerName1,
524-
testutil.NginxAlpineImage)
518+
data.Labels().Set("container1", data.Identifier("container1"))
519+
helpers.Ensure("run", "-d", "--name", data.Identifier("container1"),
520+
testutil.CommonImage, "sleep", "inf")
521+
nerdtest.EnsureContainerStarted(helpers, data.Identifier("container1"))
525522
},
526523
Cleanup: func(data test.Data, helpers test.Helpers) {
527-
helpers.Anyhow("rm", "-f", data.Identifier("-container1"))
524+
helpers.Anyhow("rm", "-f", data.Identifier("container1"))
528525
},
529526
SubTests: []*test.Case{
530527
{
531528
Description: "Test network is shared",
532529
NoParallel: true, // The validation involves starting of the main container: container1
533530
Cleanup: func(data test.Data, helpers test.Helpers) {
534-
helpers.Anyhow("rm", "-f", data.Identifier())
531+
helpers.Anyhow("rm", "-f", data.Identifier("container2"))
535532
},
536-
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
537-
containerName2 := data.Identifier()
538-
cmd := helpers.Command()
539-
cmd.WithArgs("run", "-d", "--name", containerName2,
540-
"--network=container:"+data.Labels().Get("containerName1"),
533+
Setup: func(data test.Data, helpers test.Helpers) {
534+
helpers.Ensure(
535+
"run", "-d", "--name", data.Identifier("container2"),
536+
"--network=container:"+data.Labels().Get("container1"),
541537
testutil.NginxAlpineImage)
542-
return cmd
538+
data.Labels().Set("container2", data.Identifier("container2"))
539+
nerdtest.EnsureContainerStarted(helpers, data.Identifier("container2"))
543540
},
544-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
545-
return &test.Expected{
546-
Output: func(stdout string, info string, t *testing.T) {
547-
containerName2 := data.Identifier()
548-
assert.Assert(t, strings.Contains(helpers.Capture("exec", containerName2, "wget", "-qO-", "http://127.0.0.1:80"), testutil.NginxAlpineIndexHTMLSnippet), info)
549-
helpers.Ensure("restart", data.Labels().Get("containerName1"))
550-
helpers.Ensure("stop", "--time=1", containerName2)
551-
helpers.Ensure("start", containerName2)
552-
assert.Assert(t, strings.Contains(helpers.Capture("exec", containerName2, "wget", "-qO-", "http://127.0.0.1:80"), testutil.NginxAlpineIndexHTMLSnippet), info)
541+
SubTests: []*test.Case{
542+
{
543+
NoParallel: true,
544+
Description: "Test network is shared",
545+
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
546+
return helpers.Command("exec", data.Labels().Get("container2"), "wget", "-qO-", "http://127.0.0.1:80")
547+
553548
},
554-
}
549+
Expected: test.Expects(0, nil, expect.Contains(testutil.NginxAlpineIndexHTMLSnippet)),
550+
},
551+
{
552+
NoParallel: true,
553+
Description: "Test network is shared after restart",
554+
Setup: func(data test.Data, helpers test.Helpers) {
555+
helpers.Ensure("restart", data.Labels().Get("container1"))
556+
helpers.Ensure("stop", "--time=1", data.Labels().Get("container2"))
557+
helpers.Ensure("start", data.Labels().Get("container2"))
558+
nerdtest.EnsureContainerStarted(helpers, data.Labels().Get("container2"))
559+
},
560+
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
561+
return helpers.Command("exec", data.Labels().Get("container2"), "wget", "-qO-", "http://127.0.0.1:80")
562+
563+
},
564+
Expected: test.Expects(0, nil, expect.Contains(testutil.NginxAlpineIndexHTMLSnippet)),
565+
},
555566
},
556567
},
557568
{
558569
Description: "Test uts is supported in shared network",
559-
Cleanup: func(data test.Data, helpers test.Helpers) {
560-
helpers.Anyhow("rm", "-f", data.Identifier())
561-
},
562570
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
563-
containerName2 := data.Identifier()
564-
cmd := helpers.Command()
565-
cmd.WithArgs("run", "-d", "--name", containerName2, "--uts", "host",
566-
"--network=container:"+data.Labels().Get("containerName1"),
567-
testutil.AlpineImage)
568-
return cmd
569-
},
570-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
571-
return &test.Expected{
572-
ExitCode: 0,
573-
}
571+
return helpers.Command("run", "--rm", "--uts", "host",
572+
"--network=container:"+data.Labels().Get("container1"),
573+
testutil.CommonImage)
574574
},
575+
Expected: test.Expects(0, nil, nil),
575576
},
576577
{
577578
Description: "Test dns is not supported",
578-
Cleanup: func(data test.Data, helpers test.Helpers) {
579-
helpers.Anyhow("rm", "-f", data.Identifier())
580-
},
581579
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
582-
containerName2 := data.Identifier()
583-
cmd := helpers.Command()
584-
cmd.WithArgs("run", "-d", "--name", containerName2, "--dns", "0.1.2.3",
585-
"--network=container:"+data.Labels().Get("containerName1"),
586-
testutil.AlpineImage)
587-
return cmd
588-
},
589-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
590-
if nerdtest.IsDocker() {
591-
return &test.Expected{
592-
ExitCode: 125,
593-
}
594-
595-
}
596-
return &test.Expected{
597-
ExitCode: 1,
598-
}
580+
return helpers.Command("run", "--rm", "--dns", "0.1.2.3",
581+
"--network=container:"+data.Labels().Get("container1"),
582+
testutil.CommonImage)
599583
},
584+
// 1 for nerdctl, 125 for docker
585+
Expected: test.Expects(expect.ExitCodeGenericFail, nil, nil),
600586
},
601587
{
602588
Description: "Test dns options is not supported",
603-
Cleanup: func(data test.Data, helpers test.Helpers) {
604-
helpers.Anyhow("rm", "-f", data.Identifier())
605-
},
606589
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
607-
containerName2 := data.Identifier()
608-
cmd := helpers.Command()
609-
cmd.WithArgs("run", "--name", containerName2, "--dns-option", "attempts:5",
610-
"--network=container:"+data.Labels().Get("containerName1"),
611-
testutil.AlpineImage, "cat", "/etc/resolv.conf")
612-
return cmd
613-
},
614-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
615-
// The Option doesnt throw an error but is never inserted to the resolv.conf
616-
return &test.Expected{
617-
ExitCode: 0,
618-
Output: func(stdout string, info string, t *testing.T) {
619-
assert.Assert(t, !strings.Contains(stdout, "attempts:5"), info)
620-
},
621-
}
590+
return helpers.Command("run", "--rm", "--dns-option", "attempts:5",
591+
"--network=container:"+data.Labels().Get("container1"),
592+
testutil.CommonImage, "cat", "/etc/resolv.conf")
622593
},
594+
// The Option doesn't throw an error but is never inserted to the resolv.conf
595+
Expected: test.Expects(0, nil, expect.DoesNotContain("attempts:5")),
623596
},
624597
{
625598
Description: "Test publish is not supported",
626-
Cleanup: func(data test.Data, helpers test.Helpers) {
627-
helpers.Anyhow("rm", "-f", data.Identifier())
628-
},
629599
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
630-
containerName2 := data.Identifier()
631-
cmd := helpers.Command()
632-
cmd.WithArgs("run", "-d", "--name", containerName2, "--publish", "80:8080",
633-
"--network=container:"+data.Labels().Get("containerName1"),
600+
return helpers.Command("run", "--rm", "--publish", "80:8080",
601+
"--network=container:"+data.Labels().Get("container1"),
634602
testutil.AlpineImage)
635-
return cmd
636-
},
637-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
638-
if nerdtest.IsDocker() {
639-
return &test.Expected{
640-
ExitCode: 125,
641-
}
642-
643-
}
644-
return &test.Expected{
645-
ExitCode: 1,
646-
}
647603
},
604+
// 1 for nerdctl, 125 for docker
605+
Expected: test.Expects(expect.ExitCodeGenericFail, nil, nil),
648606
},
649607
{
650608
Description: "Test hostname is not supported",
651-
Cleanup: func(data test.Data, helpers test.Helpers) {
652-
helpers.Anyhow("rm", "-f", data.Identifier())
653-
},
654609
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
655-
containerName2 := data.Identifier()
656-
cmd := helpers.Command()
657-
cmd.WithArgs("run", "-d", "--name", containerName2, "--hostname", "test",
658-
"--network=container:"+data.Labels().Get("containerName1"),
610+
return helpers.Command("run", "--rm", "--hostname", "test",
611+
"--network=container:"+data.Labels().Get("container1"),
659612
testutil.AlpineImage)
660-
return cmd
661-
},
662-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
663-
if nerdtest.IsDocker() {
664-
return &test.Expected{
665-
ExitCode: 125,
666-
}
667-
668-
}
669-
return &test.Expected{
670-
ExitCode: 1,
671-
}
672613
},
614+
// 1 for nerdctl, 125 for docker
615+
Expected: test.Expects(expect.ExitCodeGenericFail, nil, nil),
673616
},
674617
},
675618
}
@@ -682,15 +625,15 @@ func TestSharedNetworkWithNone(t *testing.T) {
682625
Require: require.Not(require.Windows),
683626
Setup: func(data test.Data, helpers test.Helpers) {
684627
helpers.Ensure("run", "-d", "--name", data.Identifier("container1"), "--network", "none",
685-
testutil.NginxAlpineImage)
628+
testutil.CommonImage, "sleep", "inf")
629+
nerdtest.EnsureContainerStarted(helpers, data.Identifier("container1"))
686630
},
687631
Cleanup: func(data test.Data, helpers test.Helpers) {
688632
helpers.Anyhow("rm", "-f", data.Identifier("container1"))
689-
helpers.Anyhow("rm", "-f", data.Identifier("container2"))
690633
},
691634
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
692-
return helpers.Command("run", "-d", "--name", data.Identifier("container2"),
693-
"--network=container:"+data.Identifier("container1"), testutil.NginxAlpineImage)
635+
return helpers.Command("run", "--rm",
636+
"--network=container:"+data.Identifier("container1"), testutil.CommonImage)
694637
},
695638
Expected: test.Expects(expect.ExitCodeSuccess, nil, nil),
696639
}
@@ -914,13 +857,14 @@ func TestNoneNetworkHostName(t *testing.T) {
914857
nerdtest.Setup()
915858
testCase := &test.Case{
916859
Require: require.Not(require.Windows),
860+
Cleanup: func(data test.Data, helpers test.Helpers) {
861+
helpers.Anyhow("rm", "-f", data.Identifier())
862+
},
917863
Setup: func(data test.Data, helpers test.Helpers) {
918-
output := helpers.Capture("run", "-d", "--name", data.Identifier(), "--network", "none", testutil.NginxAlpineImage)
864+
output := helpers.Capture("run", "-d", "--name", data.Identifier(), "--network", "none", testutil.CommonImage, "sleep", "inf")
919865
assert.Assert(helpers.T(), len(output) > 12, output)
920866
data.Labels().Set("hostname", output[:12])
921-
},
922-
Cleanup: func(data test.Data, helpers test.Helpers) {
923-
helpers.Anyhow("rm", "-f", data.Identifier())
867+
nerdtest.EnsureContainerStarted(helpers, data.Identifier())
924868
},
925869
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
926870
return helpers.Command("exec", data.Identifier(), "cat", "/etc/hostname")
@@ -939,20 +883,20 @@ func TestHostNetworkHostName(t *testing.T) {
939883
testCase := &test.Case{
940884
Require: require.Not(require.Windows),
941885
Setup: func(data test.Data, helpers test.Helpers) {
942-
data.Labels().Set("containerName1", data.Identifier())
943-
},
944-
Cleanup: func(data test.Data, helpers test.Helpers) {
945-
helpers.Anyhow("rm", "-f", data.Identifier())
886+
helpers.Custom("cat", "/etc/hostname").Run(&test.Expected{
887+
Output: func(stdout, info string, t *testing.T) {
888+
data.Labels().Set("hostHostname", stdout)
889+
},
890+
})
946891
},
947892
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
948-
return helpers.Custom("cat", "/etc/hostname")
893+
return helpers.Command("run", "--rm",
894+
"--network", "host",
895+
testutil.AlpineImage, "cat", "/etc/hostname")
949896
},
950897
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
951898
return &test.Expected{
952-
Output: func(stdout string, info string, t *testing.T) {
953-
hostname := stdout
954-
assert.Assert(t, strings.Compare(strings.TrimSpace(helpers.Capture("run", "--name", data.Identifier(), "--network", "host", testutil.AlpineImage, "cat", "/etc/hostname")), strings.TrimSpace(hostname)) == 0, info)
955-
},
899+
Output: expect.Equals(data.Labels().Get("hostHostname")),
956900
}
957901
},
958902
}
@@ -963,27 +907,18 @@ func TestNoneNetworkDnsConfigs(t *testing.T) {
963907
nerdtest.Setup()
964908
testCase := &test.Case{
965909
Require: require.Not(require.Windows),
966-
Setup: func(data test.Data, helpers test.Helpers) {
967-
data.Labels().Set("containerName1", data.Identifier())
968-
},
969-
Cleanup: func(data test.Data, helpers test.Helpers) {
970-
helpers.Anyhow("rm", "-f", data.Identifier())
971-
},
972910
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
973-
return helpers.Command("run", "-d", "--name", data.Identifier(), "--network", "none", "--dns", "0.1.2.3", "--dns-search", "example.com", "--dns-option", "timeout:3", "--dns-option", "attempts:5", testutil.NginxAlpineImage)
974-
},
975-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
976-
return &test.Expected{
977-
Output: func(stdout string, info string, t *testing.T) {
978-
out := helpers.Capture("exec", data.Identifier(), "cat", "/etc/resolv.conf")
979-
assert.Assert(t, strings.Contains(out, "0.1.2.3"), info)
980-
assert.Assert(t, strings.Contains(out, "example.com"), info)
981-
assert.Assert(t, strings.Contains(out, "attempts:5"), info)
982-
assert.Assert(t, strings.Contains(out, "timeout:3"), info)
983-
984-
},
985-
}
986-
},
911+
return helpers.Command("run", "--rm",
912+
"--network", "none",
913+
"--dns", "0.1.2.3", "--dns-search", "example.com", "--dns-option", "timeout:3", "--dns-option", "attempts:5",
914+
testutil.CommonImage, "cat", "/etc/resolv.conf")
915+
},
916+
Expected: test.Expects(0, nil, expect.Contains(
917+
"0.1.2.3",
918+
"example.com",
919+
"attempts:5",
920+
"timeout:3",
921+
)),
987922
}
988923
testCase.Run(t)
989924
}
@@ -992,27 +927,18 @@ func TestHostNetworkDnsConfigs(t *testing.T) {
992927
nerdtest.Setup()
993928
testCase := &test.Case{
994929
Require: require.Not(require.Windows),
995-
Setup: func(data test.Data, helpers test.Helpers) {
996-
data.Labels().Set("containerName1", data.Identifier())
997-
},
998-
Cleanup: func(data test.Data, helpers test.Helpers) {
999-
helpers.Anyhow("rm", "-f", data.Identifier())
1000-
},
1001930
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
1002-
return helpers.Command("run", "-d", "--name", data.Identifier(), "--network", "host", "--dns", "0.1.2.3", "--dns-search", "example.com", "--dns-option", "timeout:3", "--dns-option", "attempts:5", testutil.NginxAlpineImage)
1003-
},
1004-
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
1005-
return &test.Expected{
1006-
Output: func(stdout string, info string, t *testing.T) {
1007-
out := helpers.Capture("exec", data.Identifier(), "cat", "/etc/resolv.conf")
1008-
assert.Assert(t, strings.Contains(out, "0.1.2.3"), info)
1009-
assert.Assert(t, strings.Contains(out, "example.com"), info)
1010-
assert.Assert(t, strings.Contains(out, "attempts:5"), info)
1011-
assert.Assert(t, strings.Contains(out, "timeout:3"), info)
1012-
1013-
},
1014-
}
1015-
},
931+
return helpers.Command("run", "--rm",
932+
"--network", "host",
933+
"--dns", "0.1.2.3", "--dns-search", "example.com", "--dns-option", "timeout:3", "--dns-option", "attempts:5",
934+
testutil.CommonImage, "cat", "/etc/resolv.conf")
935+
},
936+
Expected: test.Expects(0, nil, expect.Contains(
937+
"0.1.2.3",
938+
"example.com",
939+
"attempts:5",
940+
"timeout:3",
941+
)),
1016942
}
1017943
testCase.Run(t)
1018944
}

0 commit comments

Comments
 (0)