From 6c32a8c4c18e02194826892ece727177d46e9d23 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Tue, 17 Oct 2023 01:20:58 +0200 Subject: [PATCH] test: docker host-gateway Signed-off-by: CrazyMax --- Dockerfile | 2 +- tests/build.go | 17 +++++++++++++++++ tests/inspect.go | 9 +++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 54010c96e3c..4743e87233a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ ARG GO_VERSION=1.20.8 ARG XX_VERSION=1.2.1 -ARG DOCKER_VERSION=24.0.2 +ARG DOCKER_VERSION=24.0.6 ARG GOTESTSUM_VERSION=v1.9.0 ARG REGISTRY_VERSION=2.8.0 ARG BUILDKIT_VERSION=v0.11.6 diff --git a/tests/build.go b/tests/build.go index 0ad3cacd0b9..88796b15f80 100644 --- a/tests/build.go +++ b/tests/build.go @@ -47,6 +47,7 @@ var buildTests = []func(t *testing.T, sb integration.Sandbox){ testBuildCacheExportNotSupported, testBuildOCIExportNotSupported, testBuildMultiPlatformNotSupported, + testDockerHostGateway, } func testBuild(t *testing.T, sb integration.Sandbox) { @@ -415,3 +416,19 @@ func testBuildMultiPlatformNotSupported(t *testing.T, sb integration.Sandbox) { require.Error(t, err, string(out)) require.Contains(t, string(out), "Multi-platform build is not supported") } + +func testDockerHostGateway(t *testing.T, sb integration.Sandbox) { + dockerfile := []byte(` +FROM busybox +RUN ping -c 1 buildx.host-gateway-ip.local +`) + dir := tmpdir(t, fstest.CreateFile("Dockerfile", dockerfile, 0600)) + cmd := buildxCmd(sb, withArgs("build", "--add-host=buildx.host-gateway-ip.local:host-gateway", "--output=type=cacheonly", dir)) + out, err := cmd.CombinedOutput() + if !isDockerWorker(sb) { + require.Error(t, err, string(out)) + require.Contains(t, string(out), "host-gateway is not supported") + } else { + require.NoError(t, err, string(out)) + } +} diff --git a/tests/inspect.go b/tests/inspect.go index 9bfb5e4d072..c7c4df096be 100644 --- a/tests/inspect.go +++ b/tests/inspect.go @@ -25,6 +25,7 @@ func testInspect(t *testing.T, sb integration.Sandbox) { var name string var driver string + var hostGatewayIP string for _, line := range strings.Split(out, "\n") { if v, ok := strings.CutPrefix(line, "Name:"); ok && name == "" { name = strings.TrimSpace(v) @@ -32,9 +33,17 @@ func testInspect(t *testing.T, sb integration.Sandbox) { if v, ok := strings.CutPrefix(line, "Driver:"); ok && driver == "" { driver = strings.TrimSpace(v) } + if v, ok := strings.CutPrefix(line, " org.mobyproject.buildkit.worker.moby.host-gateway-ip:"); ok { + hostGatewayIP = strings.TrimSpace(v) + } } require.Equal(t, sb.Address(), name) sbDriver, _, _ := strings.Cut(sb.Name(), "+") require.Equal(t, sbDriver, driver) + if isDockerWorker(sb) { + require.NotEmpty(t, hostGatewayIP, "host-gateway-ip worker label should be set with docker driver") + } else { + require.Empty(t, hostGatewayIP, "host-gateway-ip worker label should not be set with non-docker driver") + } }