client: add inline remote cache tests

Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
docker-19.03
Tonis Tiigi 2019-01-18 14:49:08 -08:00
parent 7d41912f36
commit 5434a42a6a
1 changed files with 74 additions and 0 deletions

View File

@ -82,6 +82,7 @@ func TestClientIntegration(t *testing.T) {
testSSHMount, testSSHMount,
testStdinClosed, testStdinClosed,
testHostnameLookup, testHostnameLookup,
testBasicInlineCacheImportExport,
}, },
integration.WithMirroredImages(integration.OfficialImages("busybox:latest", "alpine:latest")), integration.WithMirroredImages(integration.OfficialImages("busybox:latest", "alpine:latest")),
) )
@ -1252,6 +1253,79 @@ func testBasicLocalCacheImportExport(t *testing.T, sb integration.Sandbox) {
testBasicCacheImportExport(t, sb, o) testBasicCacheImportExport(t, sb, o)
} }
func testBasicInlineCacheImportExport(t *testing.T, sb integration.Sandbox) {
requiresLinux(t)
registry, err := sb.NewRegistry()
if errors.Cause(err) == integration.ErrorRequirements {
t.Skip(err.Error())
}
require.NoError(t, err)
c, err := New(context.TODO(), sb.Address())
require.NoError(t, err)
defer c.Close()
busybox := llb.Image("busybox:latest")
st := llb.Scratch()
run := func(cmd string) {
st = busybox.Run(llb.Shlex(cmd), llb.Dir("/wd")).AddMount("/wd", st)
}
run(`sh -c "echo -n foobar > const"`)
run(`sh -c "cat /dev/urandom | head -c 100 | sha256sum > unique"`)
def, err := st.Marshal()
require.NoError(t, err)
target := registry + "/buildkit/testexportinline:latest"
resp, err := c.Solve(context.TODO(), def, SolveOpt{
Exporter: ExporterImage,
ExporterAttrs: map[string]string{
"name": target,
"push": "true",
},
CacheExports: []CacheOptionsEntry{
{
Type: "inline",
},
},
}, nil)
require.NoError(t, err)
dgst, ok := resp.ExporterResponse["containerimage.digest"]
require.Equal(t, ok, true)
err = c.Prune(context.TODO(), nil, PruneAll)
require.NoError(t, err)
checkAllRemoved(t, c, sb)
resp, err = c.Solve(context.TODO(), def, SolveOpt{
Exporter: ExporterImage,
CacheExports: []CacheOptionsEntry{
{
Type: "inline",
},
},
CacheImports: []CacheOptionsEntry{
{
Type: "registry",
Attrs: map[string]string{
"ref": target,
},
},
},
}, nil)
require.NoError(t, err)
dgst2, ok := resp.ExporterResponse["containerimage.digest"]
require.Equal(t, ok, true)
require.Equal(t, dgst, dgst2)
}
func testCachedMounts(t *testing.T, sb integration.Sandbox) { func testCachedMounts(t *testing.T, sb integration.Sandbox) {
requiresLinux(t) requiresLinux(t)
c, err := New(context.TODO(), sb.Address()) c, err := New(context.TODO(), sb.Address())