Skip to content

Commit b494aa9

Browse files
committed
test: add force-compression option for nydus case
For testing the case: Nydus image layers cannot be mixed with other compression types in the same image, so the `force-compression=true` option must be enabled when exporting both Nydus and other compression types. Signed-off-by: Yan Song <[email protected]>
1 parent 10695dc commit b494aa9

File tree

3 files changed

+141
-141
lines changed

3 files changed

+141
-141
lines changed

.github/workflows/.test.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,6 @@ jobs:
155155
BUILDKITD_TAGS: ${{ matrix.tags }}
156156
-
157157
name: Test
158-
continue-on-error: ${{ matrix.tags == 'nydus' }}
159158
run: |
160159
export TEST_REPORT_SUFFIX=-${{ github.job }}-$(echo "${{ matrix.pkg }}-${{ matrix.skip-integration-tests }}-${{ matrix.kind }}-${{ matrix.worker }}-${{ matrix.tags }}" | tr -dc '[:alnum:]-\n\r' | tr '[:upper:]' '[:lower:]')
161160
if [ -n "${{ matrix.tags }}" ]; then

client/client_nydus_test.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ package client
55

66
import (
77
"fmt"
8-
"strconv"
98
"testing"
109

1110
"github.com/containerd/containerd/images"
1211
"github.com/containerd/containerd/namespaces"
13-
nydusify "github.com/containerd/nydus-snapshotter/pkg/converter"
12+
"github.com/containerd/nydus-snapshotter/pkg/converter"
1413
"github.com/moby/buildkit/client/llb"
1514
"github.com/moby/buildkit/identity"
1615
"github.com/moby/buildkit/util/compression"
@@ -21,9 +20,9 @@ import (
2120
"github.com/stretchr/testify/require"
2221
)
2322

24-
func TestNydusIntegration(t *testing.T) {
25-
testIntegration(
26-
t,
23+
func init() {
24+
allTests = append(
25+
allTests,
2726
testBuildExportNydusWithHybrid,
2827
)
2928
}
@@ -68,10 +67,11 @@ func testBuildExportNydusWithHybrid(t *testing.T, sb integration.Sandbox) {
6867
{
6968
Type: ExporterImage,
7069
Attrs: map[string]string{
71-
"name": target,
72-
"push": "true",
73-
"compression": "nydus",
74-
"oci-mediatypes": "true",
70+
"name": target,
71+
"push": "true",
72+
"compression": "nydus",
73+
"oci-mediatypes": "true",
74+
"force-compression": "true",
7575
},
7676
},
7777
},
@@ -85,12 +85,12 @@ func testBuildExportNydusWithHybrid(t *testing.T, sb integration.Sandbox) {
8585
require.NoError(t, err)
8686

8787
require.Equal(t, len(manifest.Layers), 3)
88-
require.Equal(t, "true", manifest.Layers[0].Annotations[nydusify.LayerAnnotationNydusBlob])
89-
require.Equal(t, "true", manifest.Layers[1].Annotations[nydusify.LayerAnnotationNydusBlob])
90-
require.Equal(t, "true", manifest.Layers[2].Annotations[nydusify.LayerAnnotationNydusBootstrap])
88+
require.Equal(t, "true", manifest.Layers[0].Annotations[converter.LayerAnnotationNydusBlob])
89+
require.Equal(t, "true", manifest.Layers[1].Annotations[converter.LayerAnnotationNydusBlob])
90+
require.Equal(t, "true", manifest.Layers[2].Annotations[converter.LayerAnnotationNydusBootstrap])
9191
}
9292

93-
buildOther := func(file string, compType compression.Type, forceCompression bool) {
93+
buildOther := func(file string, compType compression.Type) {
9494
orgImage := "docker.io/library/alpine:latest"
9595
baseDef := llb.Image(orgImage).Run(llb.Args([]string{"/bin/touch", "/" + file}))
9696
def, err := baseDef.Marshal(sb.Context())
@@ -110,7 +110,7 @@ func testBuildExportNydusWithHybrid(t *testing.T, sb integration.Sandbox) {
110110
"push": "true",
111111
"compression": compType.String(),
112112
"oci-mediatypes": "true",
113-
"force-compression": strconv.FormatBool(forceCompression),
113+
"force-compression": "true",
114114
},
115115
},
116116
},
@@ -131,10 +131,10 @@ func testBuildExportNydusWithHybrid(t *testing.T, sb integration.Sandbox) {
131131
// Make sure that the nydus compression layer is not mixed with other
132132
// types of compression layers in an image.
133133
buildNydus("foo")
134-
buildOther("foo", compression.Gzip, false)
135-
buildOther("foo", compression.Zstd, true)
134+
buildOther("foo", compression.Gzip)
135+
buildOther("foo", compression.Zstd)
136136

137-
buildOther("bar", compression.Gzip, false)
138-
buildOther("bar", compression.Zstd, true)
137+
buildOther("bar", compression.Gzip)
138+
buildOther("bar", compression.Zstd)
139139
buildNydus("bar")
140140
}

client/client_test.go

Lines changed: 123 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -88,129 +88,130 @@ type nopWriteCloser struct {
8888

8989
func (nopWriteCloser) Close() error { return nil }
9090

91+
var allTests = []func(t *testing.T, sb integration.Sandbox){
92+
testCacheExportCacheKeyLoop,
93+
testRelativeWorkDir,
94+
testFileOpMkdirMkfile,
95+
testFileOpCopyRm,
96+
testFileOpCopyIncludeExclude,
97+
testFileOpRmWildcard,
98+
testFileOpCopyUIDCache,
99+
testCallDiskUsage,
100+
testBuildMultiMount,
101+
testBuildHTTPSource,
102+
testBuildPushAndValidate,
103+
testBuildExportWithUncompressed,
104+
testBuildExportScratch,
105+
testResolveAndHosts,
106+
testUser,
107+
testOCIExporter,
108+
testOCIExporterContentStore,
109+
testWhiteoutParentDir,
110+
testFrontendImageNaming,
111+
testDuplicateWhiteouts,
112+
testSchema1Image,
113+
testMountWithNoSource,
114+
testInvalidExporter,
115+
testReadonlyRootFS,
116+
testBasicRegistryCacheImportExport,
117+
testBasicLocalCacheImportExport,
118+
testBasicS3CacheImportExport,
119+
testBasicAzblobCacheImportExport,
120+
testCachedMounts,
121+
testCopyFromEmptyImage,
122+
testProxyEnv,
123+
testLocalSymlinkEscape,
124+
testTmpfsMounts,
125+
testSharedCacheMounts,
126+
testSharedCacheMountsNoScratch,
127+
testLockedCacheMounts,
128+
testDuplicateCacheMount,
129+
testRunCacheWithMounts,
130+
testParallelLocalBuilds,
131+
testSecretEnv,
132+
testSecretMounts,
133+
testExtraHosts,
134+
testShmSize,
135+
testUlimit,
136+
testCgroupParent,
137+
testNetworkMode,
138+
testFrontendMetadataReturn,
139+
testFrontendUseSolveResults,
140+
testSSHMount,
141+
testStdinClosed,
142+
testHostnameLookup,
143+
testHostnameSpecifying,
144+
testPushByDigest,
145+
testBasicInlineCacheImportExport,
146+
testBasicGhaCacheImportExport,
147+
testExportBusyboxLocal,
148+
testBridgeNetworking,
149+
testCacheMountNoCache,
150+
testExporterTargetExists,
151+
testTarExporterWithSocket,
152+
testTarExporterWithSocketCopy,
153+
testTarExporterSymlink,
154+
testMultipleRegistryCacheImportExport,
155+
testSourceMap,
156+
testSourceMapFromRef,
157+
testLazyImagePush,
158+
testStargzLazyPull,
159+
testStargzLazyInlineCacheImportExport,
160+
testFileOpInputSwap,
161+
testRelativeMountpoint,
162+
testLocalSourceDiffer,
163+
testOCILayoutSource,
164+
testOCILayoutPlatformSource,
165+
testBuildExportZstd,
166+
testPullZstdImage,
167+
testMergeOp,
168+
testMergeOpCacheInline,
169+
testMergeOpCacheMin,
170+
testMergeOpCacheMax,
171+
testRmSymlink,
172+
testMoveParentDir,
173+
testBuildExportWithForeignLayer,
174+
testZstdLocalCacheExport,
175+
testCacheExportIgnoreError,
176+
testZstdRegistryCacheImportExport,
177+
testZstdLocalCacheImportExport,
178+
testUncompressedLocalCacheImportExport,
179+
testUncompressedRegistryCacheImportExport,
180+
testStargzLazyRegistryCacheImportExport,
181+
testValidateDigestOrigin,
182+
testCallInfo,
183+
testPullWithLayerLimit,
184+
testExportAnnotations,
185+
testExportAnnotationsMediaTypes,
186+
testExportAttestations,
187+
testExportedImageLabels,
188+
testAttestationDefaultSubject,
189+
testSourceDateEpochLayerTimestamps,
190+
testSourceDateEpochClamp,
191+
testSourceDateEpochReset,
192+
testSourceDateEpochLocalExporter,
193+
testSourceDateEpochTarExporter,
194+
testSourceDateEpochImageExporter,
195+
testAttestationBundle,
196+
testSBOMScan,
197+
testSBOMScanSingleRef,
198+
testSBOMSupplements,
199+
testMultipleCacheExports,
200+
testMountStubsDirectory,
201+
testMountStubsTimestamp,
202+
testSourcePolicy,
203+
testImageManifestRegistryCacheImportExport,
204+
testLLBMountPerformance,
205+
testClientCustomGRPCOpts,
206+
testMultipleRecordsWithSameLayersCacheImportExport,
207+
testRegistryEmptyCacheExport,
208+
testSnapshotWithMultipleBlobs,
209+
testExportLocalNoPlatformSplit,
210+
testExportLocalNoPlatformSplitOverwrite,
211+
}
212+
91213
func TestIntegration(t *testing.T) {
92-
testIntegration(
93-
t,
94-
testCacheExportCacheKeyLoop,
95-
testRelativeWorkDir,
96-
testFileOpMkdirMkfile,
97-
testFileOpCopyRm,
98-
testFileOpCopyIncludeExclude,
99-
testFileOpRmWildcard,
100-
testFileOpCopyUIDCache,
101-
testCallDiskUsage,
102-
testBuildMultiMount,
103-
testBuildHTTPSource,
104-
testBuildPushAndValidate,
105-
testBuildExportWithUncompressed,
106-
testBuildExportScratch,
107-
testResolveAndHosts,
108-
testUser,
109-
testOCIExporter,
110-
testOCIExporterContentStore,
111-
testWhiteoutParentDir,
112-
testFrontendImageNaming,
113-
testDuplicateWhiteouts,
114-
testSchema1Image,
115-
testMountWithNoSource,
116-
testInvalidExporter,
117-
testReadonlyRootFS,
118-
testBasicRegistryCacheImportExport,
119-
testBasicLocalCacheImportExport,
120-
testBasicS3CacheImportExport,
121-
testBasicAzblobCacheImportExport,
122-
testCachedMounts,
123-
testCopyFromEmptyImage,
124-
testProxyEnv,
125-
testLocalSymlinkEscape,
126-
testTmpfsMounts,
127-
testSharedCacheMounts,
128-
testSharedCacheMountsNoScratch,
129-
testLockedCacheMounts,
130-
testDuplicateCacheMount,
131-
testRunCacheWithMounts,
132-
testParallelLocalBuilds,
133-
testSecretEnv,
134-
testSecretMounts,
135-
testExtraHosts,
136-
testShmSize,
137-
testUlimit,
138-
testCgroupParent,
139-
testNetworkMode,
140-
testFrontendMetadataReturn,
141-
testFrontendUseSolveResults,
142-
testSSHMount,
143-
testStdinClosed,
144-
testHostnameLookup,
145-
testHostnameSpecifying,
146-
testPushByDigest,
147-
testBasicInlineCacheImportExport,
148-
testBasicGhaCacheImportExport,
149-
testExportBusyboxLocal,
150-
testBridgeNetworking,
151-
testCacheMountNoCache,
152-
testExporterTargetExists,
153-
testTarExporterWithSocket,
154-
testTarExporterWithSocketCopy,
155-
testTarExporterSymlink,
156-
testMultipleRegistryCacheImportExport,
157-
testSourceMap,
158-
testSourceMapFromRef,
159-
testLazyImagePush,
160-
testStargzLazyPull,
161-
testStargzLazyInlineCacheImportExport,
162-
testFileOpInputSwap,
163-
testRelativeMountpoint,
164-
testLocalSourceDiffer,
165-
testOCILayoutSource,
166-
testOCILayoutPlatformSource,
167-
testBuildExportZstd,
168-
testPullZstdImage,
169-
testMergeOp,
170-
testMergeOpCacheInline,
171-
testMergeOpCacheMin,
172-
testMergeOpCacheMax,
173-
testRmSymlink,
174-
testMoveParentDir,
175-
testBuildExportWithForeignLayer,
176-
testZstdLocalCacheExport,
177-
testCacheExportIgnoreError,
178-
testZstdRegistryCacheImportExport,
179-
testZstdLocalCacheImportExport,
180-
testUncompressedLocalCacheImportExport,
181-
testUncompressedRegistryCacheImportExport,
182-
testStargzLazyRegistryCacheImportExport,
183-
testValidateDigestOrigin,
184-
testCallInfo,
185-
testPullWithLayerLimit,
186-
testExportAnnotations,
187-
testExportAnnotationsMediaTypes,
188-
testExportAttestations,
189-
testExportedImageLabels,
190-
testAttestationDefaultSubject,
191-
testSourceDateEpochLayerTimestamps,
192-
testSourceDateEpochClamp,
193-
testSourceDateEpochReset,
194-
testSourceDateEpochLocalExporter,
195-
testSourceDateEpochTarExporter,
196-
testSourceDateEpochImageExporter,
197-
testAttestationBundle,
198-
testSBOMScan,
199-
testSBOMScanSingleRef,
200-
testSBOMSupplements,
201-
testMultipleCacheExports,
202-
testMountStubsDirectory,
203-
testMountStubsTimestamp,
204-
testSourcePolicy,
205-
testImageManifestRegistryCacheImportExport,
206-
testLLBMountPerformance,
207-
testClientCustomGRPCOpts,
208-
testMultipleRecordsWithSameLayersCacheImportExport,
209-
testRegistryEmptyCacheExport,
210-
testSnapshotWithMultipleBlobs,
211-
testExportLocalNoPlatformSplit,
212-
testExportLocalNoPlatformSplitOverwrite,
213-
)
214+
testIntegration(t, allTests...)
214215
}
215216

216217
func testIntegration(t *testing.T, funcs ...func(t *testing.T, sb integration.Sandbox)) {

0 commit comments

Comments
 (0)