Skip to content

Commit e38c064

Browse files
authored
Merge pull request moby#5141 from tonistiigi/testutil-mirror-fixes
testutil: optimization for mirror handling
2 parents b6e33bc + f8ef1eb commit e38c064

File tree

1 file changed

+22
-11
lines changed
  • util/testutil/integration

1 file changed

+22
-11
lines changed

util/testutil/integration/run.go

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"runtime"
1414
"sort"
1515
"strings"
16+
"sync"
1617
"testing"
1718
"time"
1819

@@ -161,10 +162,7 @@ func Run(t *testing.T, testCases []Test, opt ...TestOpt) {
161162
o(&tc)
162163
}
163164

164-
mirror, cleanup, err := runMirror(t, tc.mirroredImages)
165-
require.NoError(t, err)
166-
167-
t.Cleanup(func() { _ = cleanup() })
165+
getMirror := lazyMirrorRunnerFunc(t, tc.mirroredImages)
168166

169167
matrix := prepareValueMatrix(tc)
170168

@@ -200,7 +198,7 @@ func Run(t *testing.T, testCases []Test, opt ...TestOpt) {
200198
ctx, cancel := context.WithCancelCause(ctx)
201199
defer cancel(errors.WithStack(context.Canceled))
202200

203-
sb, closer, err := newSandbox(ctx, br, mirror, mv)
201+
sb, closer, err := newSandbox(ctx, br, getMirror(), mv)
204202
require.NoError(t, err)
205203
t.Cleanup(func() { _ = closer() })
206204
defer func() {
@@ -238,6 +236,11 @@ func copyImagesLocal(t *testing.T, host string, images map[string]string) error
238236
}
239237
localImageCache[host][to] = struct{}{}
240238

239+
// already exists check
240+
if _, _, err := docker.NewResolver(docker.ResolverOptions{}).Resolve(context.TODO(), host+"/"+to); err == nil {
241+
continue
242+
}
243+
241244
var desc ocispecs.Descriptor
242245
var provider content.Provider
243246
var err error
@@ -257,12 +260,6 @@ func copyImagesLocal(t *testing.T, host string, images map[string]string) error
257260
}
258261
}
259262

260-
// already exists check
261-
_, _, err = docker.NewResolver(docker.ResolverOptions{}).Resolve(context.TODO(), host+"/"+to)
262-
if err == nil {
263-
continue
264-
}
265-
266263
ingester, err := contentutil.IngesterFromRef(host + "/" + to)
267264
if err != nil {
268265
return err
@@ -329,6 +326,20 @@ func WriteConfig(updaters []ConfigUpdater) (string, error) {
329326
return filepath.Join(tmpdir, buildkitdConfigFile), nil
330327
}
331328

329+
func lazyMirrorRunnerFunc(t *testing.T, images map[string]string) func() string {
330+
var once sync.Once
331+
var mirror string
332+
return func() string {
333+
once.Do(func() {
334+
host, cleanup, err := runMirror(t, images)
335+
require.NoError(t, err)
336+
t.Cleanup(func() { _ = cleanup() })
337+
mirror = host
338+
})
339+
return mirror
340+
}
341+
}
342+
332343
func runMirror(t *testing.T, mirroredImages map[string]string) (host string, _ func() error, err error) {
333344
mirrorDir := os.Getenv("BUILDKIT_REGISTRY_MIRROR_DIR")
334345

0 commit comments

Comments
 (0)