@@ -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
377380func 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 (`
382385services:
383386 %s:
384387 image: %s
@@ -390,8 +393,8 @@ services:
390393networks:
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 (`
395398services:
396399 %s:
397400 image: %s
@@ -403,26 +406,34 @@ services:
403406networks:
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
428439func TestComposeUpWithBypass4netns (t * testing.T ) {
0 commit comments