Skip to content

Commit 2025f01

Browse files
committed
add integration test for registry mirrors
Signed-off-by: Alex Suraci <[email protected]>
1 parent 26e3153 commit 2025f01

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

task_test.go

+63-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,18 @@ package task_test
22

33
import (
44
"encoding/json"
5+
"fmt"
56
"io/ioutil"
7+
"net/http/httptest"
8+
"net/url"
69
"os"
710
"path/filepath"
811
"testing"
912

13+
"github.com/google/go-containerregistry/pkg/name"
14+
"github.com/google/go-containerregistry/pkg/registry"
15+
"github.com/google/go-containerregistry/pkg/v1/random"
16+
"github.com/google/go-containerregistry/pkg/v1/remote"
1017
"github.com/google/go-containerregistry/pkg/v1/tarball"
1118
"github.com/stretchr/testify/require"
1219
"github.com/stretchr/testify/suite"
@@ -24,7 +31,7 @@ type TaskSuite struct {
2431

2532
func (s *TaskSuite) SetupSuite() {
2633
var err error
27-
s.buildkitd, err = task.SpawnBuildkitd(s.req, nil)
34+
s.buildkitd, err = task.SpawnBuildkitd(task.Request{}, nil)
2835
s.NoError(err)
2936
}
3037

@@ -164,6 +171,61 @@ func (s *TaskSuite) TestUnpackRootfs() {
164171
s.Equal(meta.Env, []string{"PATH=/darkness", "BA=nana"})
165172
}
166173

174+
func (s *TaskSuite) TestRegistryMirrors() {
175+
mirror := httptest.NewServer(registry.New())
176+
defer mirror.Close()
177+
178+
image, err := random.Image(1024, 2)
179+
s.NoError(err)
180+
181+
mirrorURL, err := url.Parse(mirror.URL)
182+
s.NoError(err)
183+
184+
mirrorRef, err := name.NewTag(fmt.Sprintf("%s/library/mirrored-image:some-tag", mirrorURL.Host))
185+
s.NoError(err)
186+
187+
err = remote.Write(mirrorRef, image)
188+
s.NoError(err)
189+
190+
s.req.Config.ContextDir = "testdata/mirror"
191+
s.req.Config.RegistryMirrors = []string{mirrorURL.Host}
192+
193+
rootDir, err := ioutil.TempDir("", "mirrored-buildkitd")
194+
s.NoError(err)
195+
196+
defer os.RemoveAll(rootDir)
197+
198+
mirroredBuildkitd, err := task.SpawnBuildkitd(s.req, &task.BuildkitdOpts{
199+
RootDir: rootDir,
200+
})
201+
s.NoError(err)
202+
203+
defer mirroredBuildkitd.Cleanup()
204+
205+
_, err = task.Build(mirroredBuildkitd, s.outputsDir, s.req)
206+
s.NoError(err)
207+
208+
builtImage, err := tarball.ImageFromPath(s.imagePath("image.tar"), nil)
209+
s.NoError(err)
210+
211+
layers, err := image.Layers()
212+
s.NoError(err)
213+
214+
builtLayers, err := builtImage.Layers()
215+
s.NoError(err)
216+
s.Len(layers, len(layers))
217+
218+
for i := 0; i < len(layers); i++ {
219+
digest, err := layers[i].Digest()
220+
s.NoError(err)
221+
222+
builtDigest, err := builtLayers[i].Digest()
223+
s.NoError(err)
224+
225+
s.Equal(digest, builtDigest)
226+
}
227+
}
228+
167229
func (s *TaskSuite) build() (task.Response, error) {
168230
return task.Build(s.buildkitd, s.outputsDir, s.req)
169231
}

testdata/mirror/Dockerfile

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FROM mirrored-image:some-tag

0 commit comments

Comments
 (0)