Skip to content

Commit

Permalink
bake: shm-size support
Browse files Browse the repository at this point in the history
Signed-off-by: CrazyMax <[email protected]>
  • Loading branch information
crazy-max committed Feb 5, 2024
1 parent 56b7bbf commit d5e52bd
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 1 deletion.
14 changes: 14 additions & 0 deletions bake/bake.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/docker/buildx/util/platformutil"
"github.com/docker/buildx/util/progress"
"github.com/docker/cli/cli/config"
dockeropts "github.com/docker/cli/opts"
hcl "github.com/hashicorp/hcl/v2"
"github.com/moby/buildkit/client"
"github.com/moby/buildkit/client/llb"
Expand Down Expand Up @@ -699,6 +700,7 @@ type Target struct {
NoCache *bool `json:"no-cache,omitempty" hcl:"no-cache,optional" cty:"no-cache"`
NetworkMode *string `json:"-" hcl:"-" cty:"-"`
NoCacheFilter []string `json:"no-cache-filter,omitempty" hcl:"no-cache-filter,optional" cty:"no-cache-filter"`
ShmSize *string `json:"shm-size,omitempty" hcl:"shm-size,optional"`
// IMPORTANT: if you add more fields here, do not forget to update newOverrides and docs/bake-reference.md.

// linked is a private field to mark a target used as a linked one
Expand Down Expand Up @@ -809,6 +811,9 @@ func (t *Target) Merge(t2 *Target) {
if t2.NoCacheFilter != nil { // merge
t.NoCacheFilter = append(t.NoCacheFilter, t2.NoCacheFilter...)
}
if t2.ShmSize != nil { // no merge
t.ShmSize = t2.ShmSize
}
t.Inherits = append(t.Inherits, t2.Inherits...)
}

Expand Down Expand Up @@ -873,6 +878,8 @@ func (t *Target) AddOverrides(overrides map[string]Override) error {
t.NoCache = &noCache
case "no-cache-filter":
t.NoCacheFilter = o.ArrValue
case "shm-size":
t.ShmSize = &value
case "pull":
pull, err := strconv.ParseBool(value)
if err != nil {
Expand Down Expand Up @@ -1233,6 +1240,12 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
if t.NetworkMode != nil {
networkMode = *t.NetworkMode
}
shmSize := new(dockeropts.MemBytes)
if t.ShmSize != nil {
if err := shmSize.Set(*t.ShmSize); err != nil {
return nil, errors.Errorf("invalid value %s for membytes key shm-size", *t.ShmSize)
}
}

bo := &build.Options{
Inputs: bi,
Expand All @@ -1244,6 +1257,7 @@ func toBuildOpt(t *Target, inp *Input) (*build.Options, error) {
Pull: pull,
NetworkMode: networkMode,
Linked: t.linked,
ShmSize: *shmSize,
}

platforms, err := platformutil.Parse(t.Platforms)
Expand Down
8 changes: 8 additions & 0 deletions bake/bake_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ target "webDEP" {
VAR_BOTH = "webDEP"
}
no-cache = true
shm-size = "128m"
}
target "webapp" {
Expand All @@ -45,6 +46,7 @@ target "webapp" {
require.Equal(t, ".", *m["webapp"].Context)
require.Equal(t, ptrstr("webDEP"), m["webapp"].Args["VAR_INHERITED"])
require.Equal(t, true, *m["webapp"].NoCache)
require.Equal(t, "128m", *m["webapp"].ShmSize)
require.Nil(t, m["webapp"].Pull)

require.Equal(t, 1, len(g))
Expand Down Expand Up @@ -129,6 +131,12 @@ target "webapp" {
require.Equal(t, []string{"webapp"}, g["default"].Targets)
})

t.Run("ShmSizeOverride", func(t *testing.T) {
m, _, err := ReadTargets(ctx, []File{fp}, []string{"webapp"}, []string{"webapp.shm-size=256m"}, nil)
require.NoError(t, err)
require.Equal(t, "256m", *m["webapp"].ShmSize)
})

t.Run("PullOverride", func(t *testing.T) {
t.Parallel()
m, g, err := ReadTargets(ctx, []File{fp}, []string{"webapp"}, []string{"webapp.pull=false"}, nil)
Expand Down
9 changes: 9 additions & 0 deletions bake/compose.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"github.com/compose-spec/compose-go/v2/dotenv"
"github.com/compose-spec/compose-go/v2/loader"
composetypes "github.com/compose-spec/compose-go/v2/types"
dockeropts "github.com/docker/cli/opts"
"github.com/pkg/errors"
"gopkg.in/yaml.v3"
)
Expand Down Expand Up @@ -86,6 +87,13 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
}
}

var shmSize *string
if s.Build.ShmSize > 0 {
shmSizeBytes := dockeropts.MemBytes(s.Build.ShmSize)
shmSizeStr := shmSizeBytes.String()
shmSize = &shmSizeStr
}

var secrets []string
for _, bs := range s.Build.Secrets {
secret, err := composeToBuildkitSecret(bs, cfg.Secrets[bs.Source])
Expand Down Expand Up @@ -122,6 +130,7 @@ func ParseCompose(cfgs []composetypes.ConfigFile, envs map[string]string) (*Conf
CacheTo: s.Build.CacheTo,
NetworkMode: &s.Build.Network,
Secrets: secrets,
ShmSize: shmSize,
}
if err = t.composeExtTarget(s.Build.Extensions); err != nil {
return nil, err
Expand Down
2 changes: 2 additions & 0 deletions bake/compose_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ services:
args:
CT_ECR: foo
CT_TAG: bar
shm_size: 128m
x-bake:
secret:
- id=mysecret,src=/local/secret
Expand Down Expand Up @@ -332,6 +333,7 @@ services:
require.Equal(t, []string{"linux/arm64"}, c.Targets[1].Platforms)
require.Equal(t, []string{"type=docker"}, c.Targets[1].Outputs)
require.Equal(t, newBool(true), c.Targets[1].NoCache)
require.Equal(t, ptrstr("128MiB"), c.Targets[1].ShmSize)
}

func TestComposeExtDedup(t *testing.T) {
Expand Down
17 changes: 16 additions & 1 deletion docs/bake-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ target "webapp" {
The following table shows the complete list of attributes that you can assign to a target:

| Name | Type | Description |
| ----------------------------------------------- | ------- | -------------------------------------------------------------------- |
|-------------------------------------------------|---------|----------------------------------------------------------------------|
| [`args`](#targetargs) | Map | Build arguments |
| [`annotations`](#targetannotations) | List | Exporter annotations |
| [`attest`](#targetattest) | List | Build attestations |
Expand All @@ -233,6 +233,7 @@ The following table shows the complete list of attributes that you can assign to
| [`platforms`](#targetplatforms) | List | Target platforms |
| [`pull`](#targetpull) | Boolean | Always pull images |
| [`secret`](#targetsecret) | List | Secrets to expose to the build |
| [`shm-size`](#targetshm-size) | List | Size of `/dev/shm` |
| [`ssh`](#targetssh) | List | SSH agent sockets or keys to expose to the build |
| [`tags`](#targettags) | List | Image names and tags |
| [`target`](#targettarget) | String | Target build stage |
Expand Down Expand Up @@ -832,6 +833,20 @@ RUN --mount=type=secret,id=KUBECONFIG \
KUBECONFIG=$(cat /run/secrets/KUBECONFIG) helm upgrade --install
```

### `target.shm-size`

The format is `<number><unit>`. `number` must be greater than `0`. Unit is
optional and can be `b` (bytes), `k` (kilobytes), `m` (megabytes), or `g`
(gigabytes). If you omit the unit, the system uses bytes.

This is the same as the `--shm-size` flag for `docker build`.

```hcl
target "default" {
shm-size = "128m"
}
```

### `target.ssh`

Defines SSH agent sockets or keys to expose to the build.
Expand Down
33 changes: 33 additions & 0 deletions tests/bake.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ var bakeTests = []func(t *testing.T, sb integration.Sandbox){
testBakeRemoteDockerfileCwd,
testBakeRemoteLocalContextRemoteDockerfile,
testBakeEmpty,
testBakeShmSize,
}

func testBakeLocal(t *testing.T, sb integration.Sandbox) {
Expand Down Expand Up @@ -520,3 +521,35 @@ func testBakeEmpty(t *testing.T, sb integration.Sandbox) {
require.Error(t, err, out)
require.Contains(t, out, "couldn't find a bake definition")
}

func testBakeShmSize(t *testing.T, sb integration.Sandbox) {
dockerfile := []byte(`
FROM busybox AS build
RUN sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize
FROM scratch
COPY --from=build /out/shmsize /
`)
bakefile := []byte(`
target "default" {
shm-size = "128m"
}
`)
dir := tmpdir(
t,
fstest.CreateFile("docker-bake.hcl", bakefile, 0600),
fstest.CreateFile("Dockerfile", dockerfile, 0600),
)

dirDest := t.TempDir()

out, err := bakeCmd(
sb,
withDir(dir),
withArgs("--set", "*.output=type=local,dest="+dirDest),
)
require.NoError(t, err, out)

Check failure on line 550 in tests/bake.go

View workflow job for this annotation

GitHub Actions / test-integration (docker, ./tests)

Failed: tests/TestIntegration/TestBakeShmSize/worker=docker

=== RUN TestIntegration/TestBakeShmSize/worker=docker === PAUSE TestIntegration/TestBakeShmSize/worker=docker === CONT TestIntegration/TestBakeShmSize/worker=docker bake.go:550: Error Trace: /src/tests/bake.go:550 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:93 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:207 Error: Received unexpected error: exit status 1 Test: TestIntegration/TestBakeShmSize/worker=docker Messages: Dockerfile:3 -------------------- 1 | 2 | FROM busybox AS build 3 | >>> RUN sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize 4 | FROM scratch 5 | COPY --from=build /out/shmsize / -------------------- ERROR: failed to solve: process "/bin/sh -c sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize" did not complete successfully: exit code: 2 sandbox.go:128: stdout: /usr/bin/dockerd sandbox.go:128: stderr: /usr/bin/dockerd sandbox.go:131: > startCmd 2024-02-05 12:26:48.828375378 +0000 UTC m=+33.964568344 /usr/bin/dockerd --data-root /tmp/integration3784221346/d3oaaainx6edx/root --exec-root /tmp/dxr/d3oaaainx6edx --pidfile /tmp/integration3784221346/d3oaaainx6edx/docker.pid --containerd-namespace d3oaaainx6edx --containerd-plugins-namespace d3oaaainx6edxp --host unix:///tmp/docker-integration/d3oaaainx6edx.sock --config-file /tmp/integration3784221346/daemon.json --userland-proxy=false --tls=false --debug sandbox.go:131: time="2024-02-05T12:26:48.855502670Z" level=info msg="Starting up" sandbox.go:131: time="2024-02-05T12:26:48.856436759Z" level=warning msg="could not change group /tmp/docker-integration/d3oaaainx6edx.sock to docker: group docker not found" sandbox.go:131: time="2024-02-05T12:26:48.856547987Z" level=debug msg="Listener created for HTTP on unix (/tmp/docker-integration/d3oaaainx6edx.sock)" sandbox.go:131: time="2024-02-05T12:26:48.856569908Z" level=info msg="containerd not running, starting managed containerd" sandbox.go:131: time="2024-02-05T12:26:48.857145151Z" level=info msg="started new containerd process" address=/tmp/dxr/d3oaaainx6edx/containerd/containerd.sock module=libcontainerd pid=6871 sandbox.go:131: time="2024-02-05T12:26:48.857497150Z" level=debug msg="created containerd monitoring client" address=/tmp/dxr/d3oaaainx6edx/containerd/containerd.sock module=libcontainerd sandbox.go:131: time="2024-02-05T12:26:48.857723447Z" level=debug msg="2024/02/05 12:26:48 WARNING: [core] [Channel #1 SubChannel #2] grpc: addrConn.createTransport failed to connect to {Addr: \"/tmp/dxr/d3oaaainx6edx/containerd/containerd.sock\", ServerName: \"localhost\", Attributes: {\"<%!p(networktype.keyType=grpc.internal.transport.networktype)>\": \"unix\" }, }. Err: connection error: desc = \"transport: Error while dialing: dial unix /tmp/dxr/d3oaaainx6edx/containerd/containerd.sock: connect: no such file or directory\"" library=grpc sandbox.go:131: time="2024-02-05T12:26:48.868803274Z" level=info msg="starting containerd" revision=71909c1814c544ac47ab91d2e8b84718e517bb99 version=v1.7.12 sandbox.go:131: time="2024-02-05T12:26:48.881873431Z" level=info msg="loading plugin \"io.containerd.event.v1.exchange\"..." type=io.containerd.event.v1 sandbox.go:131: time="2024-02-05T12:26:48.881901143Z" level=info msg="loading plugin \"io.containerd.internal.v1.opt\"..." type=io.containerd.internal.v1 sandbox.go:131: time="2024-02-05T12:26:48.881937000Z" level=info msg="loading plugin \"io.containerd.warning.v1.deprecations\"..." type=io.containerd.warning.v1 sandbox.go:131: time="2024-02-05T12:26:48.881957318Z" level=info msg="loading plugin \"io.containerd.snapshotter.v1.blockfile\"..." type=io.containerd.snapshotter.v1 sandbox.go:131: time="2024-02-05T

Check failure on line 550 in tests/bake.go

View workflow job for this annotation

GitHub Actions / test-integration (docker\+containerd, ./tests)

Failed: tests/TestIntegration/TestBakeShmSize/worker=docker+containerd

=== RUN TestIntegration/TestBakeShmSize/worker=docker+containerd === PAUSE TestIntegration/TestBakeShmSize/worker=docker+containerd === CONT TestIntegration/TestBakeShmSize/worker=docker+containerd bake.go:550: Error Trace: /src/tests/bake.go:550 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:93 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:207 Error: Received unexpected error: exit status 1 Test: TestIntegration/TestBakeShmSize/worker=docker+containerd Messages: Dockerfile:3 -------------------- 1 | 2 | FROM busybox AS build 3 | >>> RUN sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize 4 | FROM scratch 5 | COPY --from=build /out/shmsize / -------------------- ERROR: failed to solve: process "/bin/sh -c sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize" did not complete successfully: exit code: 2 sandbox.go:128: stdout: /usr/bin/dockerd sandbox.go:128: stderr: /usr/bin/dockerd sandbox.go:131: > startCmd 2024-02-05 12:27:33.425908214 +0000 UTC m=+83.748020096 /usr/bin/dockerd --data-root /tmp/integration1214154400/dysa56ws2kv61/root --exec-root /tmp/dxr/dysa56ws2kv61 --pidfile /tmp/integration1214154400/dysa56ws2kv61/docker.pid --containerd-namespace dysa56ws2kv61 --containerd-plugins-namespace dysa56ws2kv61p --host unix:///tmp/docker-integration/dysa56ws2kv61.sock --config-file /tmp/integration1214154400/daemon.json --userland-proxy=false --tls=false --debug sandbox.go:131: time="2024-02-05T12:27:33.454018293Z" level=info msg="Starting up" sandbox.go:131: time="2024-02-05T12:27:33.455073127Z" level=warning msg="could not change group /tmp/docker-integration/dysa56ws2kv61.sock to docker: group docker not found" sandbox.go:131: time="2024-02-05T12:27:33.455193211Z" level=debug msg="Listener created for HTTP on unix (/tmp/docker-integration/dysa56ws2kv61.sock)" sandbox.go:131: time="2024-02-05T12:27:33.455213478Z" level=info msg="containerd not running, starting managed containerd" sandbox.go:131: time="2024-02-05T12:27:33.455813034Z" level=info msg="started new containerd process" address=/tmp/dxr/dysa56ws2kv61/containerd/containerd.sock module=libcontainerd pid=11276 sandbox.go:131: time="2024-02-05T12:27:33.456154011Z" level=debug msg="created containerd monitoring client" address=/tmp/dxr/dysa56ws2kv61/containerd/containerd.sock module=libcontainerd sandbox.go:131: time="2024-02-05T12:27:33.456344780Z" level=debug msg="2024/02/05 12:27:33 WARNING: [core] [Channel #1 SubChannel #2] grpc: addrConn.createTransport failed to connect to {Addr: \"/tmp/dxr/dysa56ws2kv61/containerd/containerd.sock\", ServerName: \"localhost\", Attributes: {\"<%!p(networktype.keyType=grpc.internal.transport.networktype)>\": \"unix\" }, }. Err: connection error: desc = \"transport: Error while dialing: dial unix /tmp/dxr/dysa56ws2kv61/containerd/containerd.sock: connect: no such file or directory\"" library=grpc sandbox.go:131: time="2024-02-05T12:27:33.467772679Z" level=info msg="starting containerd" revision=71909c1814c544ac47ab91d2e8b84718e517bb99 version=v1.7.12 sandbox.go:131: time="2024-02-05T12:27:33.480489095Z" level=info msg="loading plugin \"io.containerd.event.v1.exchange\"..." type=io.containerd.event.v1 sandbox.go:131: time="2024-02-05T12:27:33.480517779Z" level=info msg="loading plugin \"io.containerd.internal.v1.opt\"..." type=io.containerd.internal.v1 sandbox.go:131: time="2024-02-05T12:27:33.480553947Z" level=info msg="loading plugin \"io.containerd.warning.v1.deprecations\"..." type=io.containerd.warning.v1 sandbox.go:131: time="2024-02-05T12:27:33.480578072Z" level=info msg="loading plugin \"io.containerd.snapshotter.v1.blockfile\"..." type=io.containerd.snapsho

Check failure on line 550 in tests/bake.go

View workflow job for this annotation

GitHub Actions / test-integration (docker-container, ./tests)

Failed: tests/TestIntegration/TestBakeShmSize/worker=docker-container

=== RUN TestIntegration/TestBakeShmSize/worker=docker-container === PAUSE TestIntegration/TestBakeShmSize/worker=docker-container === CONT TestIntegration/TestBakeShmSize/worker=docker-container bake.go:550: Error Trace: /src/tests/bake.go:550 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:93 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:207 Error: Received unexpected error: exit status 1 Test: TestIntegration/TestBakeShmSize/worker=docker-container Messages: Dockerfile:3 -------------------- 1 | 2 | FROM busybox AS build 3 | >>> RUN sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize 4 | FROM scratch 5 | COPY --from=build /out/shmsize / -------------------- ERROR: failed to solve: process "/bin/sh -c sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize" did not complete successfully: exit code: 2 --- FAIL: TestIntegration/TestBakeShmSize/worker=docker-container (1.89s)

Check failure on line 550 in tests/bake.go

View workflow job for this annotation

GitHub Actions / test-integration (remote, ./tests)

Failed: tests/TestIntegration/TestBakeShmSize/worker=remote

=== RUN TestIntegration/TestBakeShmSize/worker=remote === PAUSE TestIntegration/TestBakeShmSize/worker=remote === CONT TestIntegration/TestBakeShmSize/worker=remote bake.go:550: Error Trace: /src/tests/bake.go:550 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:93 /src/vendor/github.com/moby/buildkit/util/testutil/integration/run.go:207 Error: Received unexpected error: exit status 1 Test: TestIntegration/TestBakeShmSize/worker=remote Messages: Dockerfile:3 -------------------- 1 | 2 | FROM busybox AS build 3 | >>> RUN sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize 4 | FROM scratch 5 | COPY --from=build /out/shmsize / -------------------- ERROR: failed to solve: process "/bin/sh -c sh -c 'mount | grep /dev/shm > /out/shmsize && cat /out/shmsize" did not complete successfully: exit code: 2 sandbox.go:128: stdout: /usr/bin/buildkitd --oci-worker=true --containerd-worker=false --oci-worker-gc=false --oci-worker-labels=org.mobyproject.buildkit.worker.sandbox=true --config=/tmp/bktest_config897462734/buildkitd.toml --root /tmp/bktest_buildkitd79942672 --addr unix:///tmp/bktest_buildkitd79942672/buildkitd.sock --debug sandbox.go:128: stderr: /usr/bin/buildkitd --oci-worker=true --containerd-worker=false --oci-worker-gc=false --oci-worker-labels=org.mobyproject.buildkit.worker.sandbox=true --config=/tmp/bktest_config897462734/buildkitd.toml --root /tmp/bktest_buildkitd79942672 --addr unix:///tmp/bktest_buildkitd79942672/buildkitd.sock --debug sandbox.go:131: > StartCmd 2024-02-05 12:26:30.022480248 +0000 UTC m=+7.801127134 /usr/bin/buildkitd --oci-worker=true --containerd-worker=false --oci-worker-gc=false --oci-worker-labels=org.mobyproject.buildkit.worker.sandbox=true --config=/tmp/bktest_config897462734/buildkitd.toml --root /tmp/bktest_buildkitd79942672 --addr unix:///tmp/bktest_buildkitd79942672/buildkitd.sock --debug sandbox.go:131: time="2024-02-05T12:26:30Z" level=info msg="auto snapshotter: using overlayfs" sandbox.go:131: time="2024-02-05T12:26:30Z" level=warning msg="using host network as the default" sandbox.go:131: time="2024-02-05T12:26:30Z" level=info msg="found worker \"k4n4m4veque1ih6xbg022osqd\", labels=map[org.mobyproject.buildkit.worker.executor:oci org.mobyproject.buildkit.worker.hostname:8ed71aea709a org.mobyproject.buildkit.worker.network:host org.mobyproject.buildkit.worker.oci.process-mode:sandbox org.mobyproject.buildkit.worker.sandbox:true org.mobyproject.buildkit.worker.selinux.enabled:false org.mobyproject.buildkit.worker.snapshotter:overlayfs], platforms=[linux/amd64 linux/amd64/v2 linux/amd64/v3 linux/arm64 linux/riscv64 linux/ppc64le linux/s390x linux/386 linux/mips64le linux/mips64 linux/arm/v7 linux/arm/v6]" sandbox.go:131: time="2024-02-05T12:26:30Z" level=info msg="found 1 workers, default=\"k4n4m4veque1ih6xbg022osqd\"" sandbox.go:131: time="2024-02-05T12:26:30Z" level=warning msg="currently, only the default worker can be used." sandbox.go:131: time="2024-02-05T12:26:30Z" level=info msg="running server on /tmp/bktest_buildkitd79942672/buildkitd.sock" sandbox.go:131: time="2024-02-05T12:26:30Z" level=debug msg="session started" spanID=94ea93c2316b016f traceID=967e0b201d984ea031863038a1549006 sandbox.go:131: time="2024-02-05T12:26:30Z" level=debug msg="session finished: <nil>" spanID=94ea93c2316b016f traceID=967e0b201d984ea031863038a1549006 sandbox.go:131: time="2024-02-05T12:26:30Z" level=debug msg="session started" spanID=7f9c31cca22944f0 traceID=967e0b201d984ea031863038a1549006 sandbox.go:131: time="2024-02-05T12:26:30Z" level=debug msg="session finished: <nil>" spanID=7f9c31cca22944f0 traceID=967e0b201d984ea031863038a1549006 sandbox.go:131: time="2024-02-05T12:26

dt, err := os.ReadFile(filepath.Join(dirDest, "shmsize"))
require.NoError(t, err)
require.Contains(t, string(dt), `size=131072k`)
}

0 comments on commit d5e52bd

Please sign in to comment.