@@ -20,63 +20,125 @@ import (
20
20
"fmt"
21
21
"testing"
22
22
23
- "gotest.tools/v3/icmd"
24
-
25
- "github.com/containerd/nerdctl/v2/pkg/rootlessutil"
26
23
"github.com/containerd/nerdctl/v2/pkg/testutil"
24
+ "github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
25
+ "github.com/containerd/nerdctl/v2/pkg/testutil/test"
27
26
"github.com/containerd/nerdctl/v2/pkg/testutil/testregistry"
28
27
)
29
28
30
- func TestImageConvertNydus (t * testing.T ) {
31
- testutil .RequireExecutable (t , "nydus-image" )
32
- testutil .DockerIncompatible (t )
29
+ func TestImageConvert (t * testing.T ) {
30
+ nerdtest .Setup ()
33
31
34
- base := testutil .NewBase (t )
35
- t .Parallel ()
32
+ testCase := & test.Case {
33
+ Description : "Test image conversion" ,
34
+ Require : test .Require (
35
+ test .Not (test .Windows ),
36
+ test .Not (nerdtest .Docker ),
37
+ ),
38
+ Setup : func (data test.Data , helpers test.Helpers ) {
39
+ helpers .Ensure ("pull" , testutil .CommonImage )
40
+ },
41
+ SubTests : []* test.Case {
42
+ {
43
+ Description : "esgz" ,
44
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
45
+ helpers .Anyhow ("rmi" , data .Identifier ("converted-image" ))
46
+ },
47
+ Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
48
+ return helpers .Command ("image" , "convert" , "--oci" , "--estargz" ,
49
+ testutil .CommonImage , data .Identifier ("converted-image" ))
50
+ },
51
+ Expected : test .Expects (0 , nil , nil ),
52
+ },
53
+ {
54
+ Description : "nydus" ,
55
+ Require : test .Require (
56
+ test .Binary ("nydus-image" ),
57
+ ),
58
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
59
+ helpers .Anyhow ("rmi" , data .Identifier ("converted-image" ))
60
+ },
61
+ Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
62
+ return helpers .Command ("image" , "convert" , "--oci" , "--nydus" ,
63
+ testutil .CommonImage , data .Identifier ("converted-image" ))
64
+ },
65
+ Expected : test .Expects (0 , nil , nil ),
66
+ },
67
+ {
68
+ Description : "zstd" ,
69
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
70
+ helpers .Anyhow ("rmi" , data .Identifier ("converted-image" ))
71
+ },
72
+ Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
73
+ return helpers .Command ("image" , "convert" , "--oci" , "--zstd" , "--zstd-compression-level" , "3" ,
74
+ testutil .CommonImage , data .Identifier ("converted-image" ))
75
+ },
76
+ Expected : test .Expects (0 , nil , nil ),
77
+ },
78
+ {
79
+ Description : "zstdchunked" ,
80
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
81
+ helpers .Anyhow ("rmi" , data .Identifier ("converted-image" ))
82
+ },
83
+ Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
84
+ return helpers .Command ("image" , "convert" , "--oci" , "--zstdchunked" , "--zstdchunked-compression-level" , "3" ,
85
+ testutil .CommonImage , data .Identifier ("converted-image" ))
86
+ },
87
+ Expected : test .Expects (0 , nil , nil ),
88
+ },
89
+ },
90
+ }
36
91
37
- convertedImage := testutil .Identifier (t ) + ":nydus"
38
- base .Cmd ("rmi" , convertedImage ).Run ()
39
- base .Cmd ("pull" , testutil .CommonImage ).AssertOK ()
40
- base .Cmd ("image" , "convert" , "--nydus" , "--oci" ,
41
- testutil .CommonImage , convertedImage ).AssertOK ()
42
- defer base .Cmd ("rmi" , convertedImage ).Run ()
92
+ testCase .Run (t )
43
93
44
- // use `nydusify` check whether the convertd nydus image is valid
94
+ }
45
95
46
- // skip if rootless
47
- if rootlessutil .IsRootless () {
48
- t .Skip ("Nydusify check is not supported rootless mode." )
49
- }
96
+ func TestImageConvertNydusVerify (t * testing.T ) {
97
+ nerdtest .Setup ()
50
98
51
- // skip if nydusify and nydusd are not installed
52
- testutil .RequireExecutable (t , "nydusify" )
53
- testutil .RequireExecutable (t , "nydusd" )
99
+ const remoteImageKey = "remoteImageKey"
54
100
55
- // setup local docker registry
56
- registry := testregistry .NewWithNoAuth (base , 0 , false )
57
- remoteImage := fmt .Sprintf ("%s:%d/nydusd-image:test" , "localhost" , registry .Port )
58
- t .Cleanup (func () {
59
- base .Cmd ("rmi" , remoteImage ).Run ()
60
- registry .Cleanup (nil )
61
- })
101
+ var registry * testregistry.RegistryServer
62
102
63
- base .Cmd ("tag" , convertedImage , remoteImage ).AssertOK ()
64
- base .Cmd ("push" , remoteImage ).AssertOK ()
65
- nydusifyCmd := testutil.Cmd {
66
- Cmd : icmd .Command (
67
- "nydusify" ,
68
- "check" ,
69
- "--source" ,
70
- testutil .CommonImage ,
71
- "--target" ,
72
- remoteImage ,
73
- "--source-insecure" ,
74
- "--target-insecure" ,
103
+ testCase := & test.Case {
104
+ Description : "TestImageConvertNydusVerify" ,
105
+ Require : test .Require (
106
+ test .Linux ,
107
+ test .Binary ("nydus-image" ),
108
+ test .Binary ("nydusify" ),
109
+ test .Binary ("nydusd" ),
110
+ test .Not (nerdtest .Docker ),
111
+ nerdtest .RootFul ,
75
112
),
76
- Base : base ,
113
+ Setup : func (data test.Data , helpers test.Helpers ) {
114
+ helpers .Ensure ("pull" , testutil .CommonImage )
115
+ base := testutil .NewBase (t )
116
+ registry = testregistry .NewWithNoAuth (base , 0 , false )
117
+ data .Set (remoteImageKey , fmt .Sprintf ("%s:%d/nydusd-image:test" , "localhost" , registry .Port ))
118
+ helpers .Ensure ("image" , "convert" , "--nydus" , "--oci" , testutil .CommonImage , data .Identifier ("converted-image" ))
119
+ helpers .Ensure ("tag" , data .Identifier ("converted-image" ), data .Get (remoteImageKey ))
120
+ helpers .Ensure ("push" , data .Get (remoteImageKey ))
121
+ },
122
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
123
+ helpers .Anyhow ("rmi" , data .Identifier ("converted-image" ))
124
+ if registry != nil {
125
+ registry .Cleanup (nil )
126
+ helpers .Anyhow ("rmi" , data .Get (remoteImageKey ))
127
+ }
128
+ },
129
+ Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
130
+ return helpers .Custom ("nydusify" ,
131
+ "check" ,
132
+ "--source" ,
133
+ testutil .CommonImage ,
134
+ "--target" ,
135
+ data .Get (remoteImageKey ),
136
+ "--source-insecure" ,
137
+ "--target-insecure" ,
138
+ )
139
+ },
140
+ Expected : test .Expects (0 , nil , nil ),
77
141
}
78
142
79
- // nydus is creating temporary files - make sure we are in a proper location for that
80
- nydusifyCmd .Cmd .Dir = base .T .TempDir ()
81
- nydusifyCmd .AssertOK ()
143
+ testCase .Run (t )
82
144
}
0 commit comments