@@ -29,11 +29,14 @@ import (
29
29
"gotest.tools/v3/icmd"
30
30
31
31
"github.com/containerd/log"
32
+ "github.com/containerd/nerdctl/mod/tigron/expect"
33
+ "github.com/containerd/nerdctl/mod/tigron/test"
32
34
33
35
"github.com/containerd/nerdctl/v2/cmd/nerdctl/helpers"
34
36
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
35
37
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
36
38
"github.com/containerd/nerdctl/v2/pkg/testutil"
39
+ "github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
37
40
"github.com/containerd/nerdctl/v2/pkg/testutil/nettestutil"
38
41
)
39
42
@@ -375,10 +378,10 @@ services:
375
378
}
376
379
377
380
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 (`
382
385
services:
383
386
%s:
384
387
image: %s
@@ -390,8 +393,8 @@ services:
390
393
networks:
391
394
%s:
392
395
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 (`
395
398
services:
396
399
%s:
397
400
image: %s
@@ -403,26 +406,34 @@ services:
403
406
networks:
404
407
%s:
405
408
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 )
426
437
}
427
438
428
439
func TestComposeUpWithBypass4netns (t * testing.T ) {
0 commit comments