Skip to content

Commit 53e69a3

Browse files
committed
Rewrite compose test (fix 4146)
Signed-off-by: apostasie <[email protected]>
1 parent 599681f commit 53e69a3

File tree

1 file changed

+37
-26
lines changed

1 file changed

+37
-26
lines changed

cmd/nerdctl/compose/compose_up_linux_test.go

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,14 @@ import (
2929
"gotest.tools/v3/icmd"
3030

3131
"github.com/containerd/log"
32+
"github.com/containerd/nerdctl/mod/tigron/expect"
33+
"github.com/containerd/nerdctl/mod/tigron/test"
3234

3335
"github.com/containerd/nerdctl/v2/cmd/nerdctl/helpers"
3436
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
3537
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
3638
"github.com/containerd/nerdctl/v2/pkg/testutil"
39+
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
3740
"github.com/containerd/nerdctl/v2/pkg/testutil/nettestutil"
3841
)
3942

@@ -375,10 +378,10 @@ services:
375378
}
376379

377380
func TestComposeUpWithExternalNetwork(t *testing.T) {
378-
containerName1 := testutil.Identifier(t) + "-1"
379-
containerName2 := testutil.Identifier(t) + "-2"
380-
networkName := testutil.Identifier(t) + "-network"
381-
var dockerComposeYaml1 = fmt.Sprintf(`
381+
testCase := nerdtest.Setup()
382+
383+
testCase.Setup = func(data test.Data, helpers test.Helpers) {
384+
var dockerComposeYaml1 = fmt.Sprintf(`
382385
services:
383386
%s:
384387
image: %s
@@ -390,8 +393,8 @@ services:
390393
networks:
391394
%s:
392395
external: true
393-
`, containerName1, testutil.NginxAlpineImage, containerName1, networkName, networkName)
394-
var dockerComposeYaml2 = fmt.Sprintf(`
396+
`, data.Identifier("con-1"), testutil.NginxAlpineImage, data.Identifier("con-1"), data.Identifier("network"), data.Identifier("network"))
397+
var dockerComposeYaml2 = fmt.Sprintf(`
395398
services:
396399
%s:
397400
image: %s
@@ -403,26 +406,34 @@ services:
403406
networks:
404407
%s:
405408
external: true
406-
`, containerName2, testutil.NginxAlpineImage, containerName2, networkName, networkName)
407-
comp1 := testutil.NewComposeDir(t, dockerComposeYaml1)
408-
defer comp1.CleanUp()
409-
comp2 := testutil.NewComposeDir(t, dockerComposeYaml2)
410-
defer comp2.CleanUp()
411-
base := testutil.NewBase(t)
412-
// Create the test network
413-
base.Cmd("network", "create", networkName).AssertOK()
414-
defer base.Cmd("network", "rm", networkName).Run()
415-
// Run the first compose
416-
base.ComposeCmd("-f", comp1.YAMLFullPath(), "up", "-d").AssertOK()
417-
defer base.ComposeCmd("-f", comp1.YAMLFullPath(), "down", "-v").Run()
418-
// Run the second compose
419-
base.ComposeCmd("-f", comp2.YAMLFullPath(), "up", "-d").AssertOK()
420-
defer base.ComposeCmd("-f", comp2.YAMLFullPath(), "down", "-v").Run()
421-
// Down the second compose
422-
base.ComposeCmd("-f", comp2.YAMLFullPath(), "down", "-v").AssertOK()
423-
// Run the second compose again
424-
base.ComposeCmd("-f", comp2.YAMLFullPath(), "up", "-d").AssertOK()
425-
base.Cmd("exec", containerName1, "wget", "-qO-", "http://"+containerName2).AssertOutContains(testutil.NginxAlpineIndexHTMLSnippet)
409+
`, data.Identifier("con-2"), testutil.NginxAlpineImage, data.Identifier("con-2"), data.Identifier("network"), data.Identifier("network"))
410+
tmp := data.Temp()
411+
412+
tmp.Save(dockerComposeYaml1, "project-1", "compose.yaml")
413+
tmp.Save(dockerComposeYaml2, "project-2", "compose.yaml")
414+
415+
helpers.Ensure("network", "create", data.Identifier("network"))
416+
helpers.Ensure("compose", "-f", tmp.Path("project-1", "compose.yaml"), "up", "-d")
417+
helpers.Ensure("compose", "-f", tmp.Path("project-2", "compose.yaml"), "up", "-d")
418+
helpers.Ensure("compose", "-f", tmp.Path("project-2", "compose.yaml"), "down", "-v")
419+
helpers.Ensure("compose", "-f", tmp.Path("project-2", "compose.yaml"), "up", "-d")
420+
nerdtest.EnsureContainerStarted(helpers, data.Identifier("con-2"))
421+
}
422+
423+
testCase.Command = func(data test.Data, helpers test.Helpers) test.TestableCommand {
424+
helpers.Ensure("exec", data.Identifier("con-1"), "cat", "/etc/hosts")
425+
return helpers.Command("exec", data.Identifier("con-1"), "wget", "-qO-", "http://"+data.Identifier("con-2"))
426+
}
427+
428+
testCase.Expected = test.Expects(0, nil, expect.Contains(testutil.NginxAlpineIndexHTMLSnippet))
429+
430+
testCase.Cleanup = func(data test.Data, helpers test.Helpers) {
431+
helpers.Anyhow("compose", "-f", data.Temp().Path("project-1", "compose.yaml"), "down", "-v")
432+
helpers.Anyhow("compose", "-f", data.Temp().Path("project-2", "compose.yaml"), "down", "-v")
433+
helpers.Anyhow("network", "rm", data.Identifier("network"))
434+
}
435+
436+
testCase.Run(t)
426437
}
427438

428439
func TestComposeUpWithBypass4netns(t *testing.T) {

0 commit comments

Comments
 (0)