aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sandbox/testdata
diff options
context:
space:
mode:
Diffstat (limited to 'test/sandbox/testdata')
-rw-r--r--test/sandbox/testdata/device.go134
-rw-r--r--test/sandbox/testdata/mapuid.go124
-rw-r--r--test/sandbox/testdata/pdlike.go141
-rw-r--r--test/sandbox/testdata/simple.go140
-rw-r--r--test/sandbox/testdata/sum.go22
-rw-r--r--test/sandbox/testdata/sum_amd64.go9
-rw-r--r--test/sandbox/testdata/sum_arm64.go9
-rw-r--r--test/sandbox/testdata/testdata.go125
-rw-r--r--test/sandbox/testdata/tty.go145
9 files changed, 0 insertions, 849 deletions
diff --git a/test/sandbox/testdata/device.go b/test/sandbox/testdata/device.go
deleted file mode 100644
index 89feb819..00000000
--- a/test/sandbox/testdata/device.go
+++ /dev/null
@@ -1,134 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "os"
- "syscall"
-
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-var _ = TestCase{
- Hakurei: hst.Config{
- ID: "app.hakurei.sample.device",
- Enablements: new(hst.EWayland | hst.EPipeWire | hst.EDBus | hst.EX11),
- Identity: 4,
-
- Container: &hst.ContainerConfig{
- Hostname: "hakurei-sample-device",
-
- Filesystem: []hst.FilesystemConfigJSON{
- fcLinker,
- fcLib,
- fcTestHelper,
- },
-
- Username: "u0_a4",
- Shell: fhs.AbsUsrBin.Append("bash"),
- Home: hst.AbsPrivateTmp,
- Path: absTestHelper,
- Args: []string{"tester", "device"},
-
- Flags: hst.FDevice | hst.FShareTmpdir,
- },
- },
-
- // 0, PresetStrict
- Sum: sumSimple,
-
- Env: []string{
- "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus",
- "DISPLAY=unix:/tmp/.X11-unix/X0",
- "HOME=/.hakurei",
- "SHELL=/usr/bin/bash",
- "TERM=xterm",
- "USER=u0_a4",
- "WAYLAND_DISPLAY=wayland-0",
- "XDG_RUNTIME_DIR=/run/user/65534",
- "XDG_SESSION_CLASS=user",
- "XDG_SESSION_TYPE=wayland",
- "PULSE_SERVER=unix:/run/user/65534/pulse/native",
- },
-
- FS: &testsuite.FS{Dir: dir{
- ".hakurei": {Mode: os.ModeDir | 0755, Dir: dir{
- "test-helper": {Mode: 0755},
- }},
-
- // unstable host dev
- "dev": {Mode: os.ModeDir | 0755},
-
- "etc": {Mode: os.ModeDir | 0755, Dir: dir{
- "passwd": {Mode: 0600,
- Data: new("u0_a4:x:65534:65534:Hakurei:/.hakurei:/usr/bin/bash\n")},
- "group": {Mode: 0600,
- Data: new("hakurei:x:65534:\n")},
- }},
-
- "lib64": {Mode: os.ModeDir | 0755, Dir: dir{
- "ld-linux-x86-64.so.2": {Mode: os.ModeSymlink | 0777},
- }},
-
- "run": {Mode: os.ModeDir | 0755, Dir: dir{
- "user": {Mode: os.ModeDir | 0755, Dir: dir{
- "65534": {Mode: os.ModeDir | 0700, Dir: dir{
- "bus": {Mode: os.ModeSocket | 0775},
- "wayland-0": {Mode: os.ModeSocket | 070},
- "pulse": {Mode: os.ModeDir | 0700, Dir: dir{
- "native": {Mode: os.ModeSocket | 0777},
- }},
- }},
- }},
- }},
-
- "tmp": {Mode: os.ModeDir | 0770, Dir: dir{
- ".X11-unix": {Mode: os.ModeDir | 0755, Dir: dir{
- "X0": {Mode: os.ModeSocket | 0775},
- }},
- }},
-
- "lib": {Mode: os.ModeDir | 0755},
- "proc": {Mode: os.ModeDir | 0555},
- }},
-
- Mount: []*mountinfo.Entry{
- r("/sysroot", "/", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110003,gid=110003,inode64"),
- r("/", "/proc", "rw,nosuid,nodev,noexec,relatime", "proc", "proc", "rw"),
- r("/", "/.hakurei", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=4k,mode=755,uid=110003,gid=110003,inode64"),
-
- // host /dev in testing environment
- r("/", "/dev", "rw,nosuid", "tmpfs", "tmpfs", ignore),
- r("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,gid=100004,mode=620,ptmxmode=666"),
- r("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
- r("/kvm", "/dev/kvm", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/fuse", "/dev/fuse", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/", "/dev/shm", "rw,nosuid,nodev,noexec,relatime", "tmpfs", "shm", ignore),
- r("/null", "/dev/null", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/zero", "/dev/zero", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/full", "/dev/full", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/tty", "/dev/tty", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/random", "/dev/random", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/urandom", "/dev/urandom", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
-
- r("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110003,gid=110003,inode64"),
- r("/", "/run/user", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=16384k,mode=755,uid=110003,gid=110003,inode64"),
- r("/tmp/hakurei.0/tmpdir/4", "/tmp", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/etc/passwd", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110003,gid=110003,inode64"),
- r(ignore, "/etc/group", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110003,gid=110003,inode64"),
- r(ignore, "/run/user/65534/wayland-0", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/tmp/.X11-unix", "/tmp/.X11-unix", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/bus", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/usr/lib", "/lib", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/opt/test-helper/bin/tester", "/.hakurei/test-helper", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/pulse/native", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- },
-
- Seccomp: true,
-
- TrySocket: "/tmp/.X11-unix/X0",
- ErrnoAbstract: syscall.ECONNREFUSED,
-}.register("device")
diff --git a/test/sandbox/testdata/mapuid.go b/test/sandbox/testdata/mapuid.go
deleted file mode 100644
index 8dee7b7f..00000000
--- a/test/sandbox/testdata/mapuid.go
+++ /dev/null
@@ -1,124 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "os"
- "syscall"
-
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-var _ = TestCase{
- Hakurei: hst.Config{
- ID: "app.hakurei.sample.mapuid",
- Enablements: new(hst.EWayland | hst.EPipeWire | hst.EDBus),
- Identity: 3,
-
- Container: &hst.ContainerConfig{
- Hostname: "hakurei-sample-mapuid",
-
- Filesystem: []hst.FilesystemConfigJSON{
- fcLinker,
- fcLib,
- fcTestHelper,
- },
-
- Username: "u0_a3",
- Shell: fhs.AbsUsrBin.Append("bash"),
- Home: hst.AbsPrivateTmp,
- Path: absTestHelper,
- Args: []string{"tester", "mapuid"},
-
- Flags: hst.FMapRealUID | hst.FShareRuntime | hst.FShareTmpdir,
- },
- },
-
- // 0, PresetStrict
- Sum: sumSimple,
-
- Env: []string{
- "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus",
- "HOME=/.hakurei",
- "SHELL=/usr/bin/bash",
- "TERM=xterm",
- "USER=u0_a3",
- "WAYLAND_DISPLAY=wayland-0",
- "XDG_RUNTIME_DIR=/run/user/1000",
- "XDG_SESSION_CLASS=user",
- "XDG_SESSION_TYPE=wayland",
- "PULSE_SERVER=unix:/run/user/1000/pulse/native",
- },
-
- FS: &testsuite.FS{Dir: dir{
- ".hakurei": {Mode: os.ModeDir | 0755, Dir: dir{
- "test-helper": {Mode: 0755},
- }},
-
- // unstable host dev
- "dev": {Mode: os.ModeDir | 0755},
-
- "etc": {Mode: os.ModeDir | 0755, Dir: dir{
- "passwd": {Mode: 0600,
- Data: new("u0_a3:x:1000:100:Hakurei:/.hakurei:/usr/bin/bash\n")},
- "group": {Mode: 0600,
- Data: new("hakurei:x:100:\n")},
- }},
-
- "lib64": {Mode: os.ModeDir | 0755, Dir: dir{
- "ld-linux-x86-64.so.2": {Mode: os.ModeSymlink | 0777},
- }},
-
- "run": {Mode: os.ModeDir | 0755, Dir: dir{
- "user": {Mode: os.ModeDir | 0755, Dir: dir{
- "1000": {Mode: os.ModeDir | 0770, Dir: dir{
- "bus": {Mode: os.ModeSocket | 0775},
- "wayland-0": {Mode: os.ModeSocket | 070},
- "pulse": {Mode: os.ModeDir | 0700, Dir: dir{
- "native": {Mode: os.ModeSocket | 0777},
- }},
- }},
- }},
- }},
-
- "tmp": {Mode: os.ModeDir | 0770, Dir: dir{}},
-
- "lib": {Mode: os.ModeDir | 0755},
- "proc": {Mode: os.ModeDir | 0555},
- }},
-
- Mount: []*mountinfo.Entry{
- r("/sysroot", "/", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110002,gid=110002,inode64"),
- r("/", "/proc", "rw,nosuid,nodev,noexec,relatime", "proc", "proc", "rw"),
- r("/", "/.hakurei", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=4k,mode=755,uid=110002,gid=110002,inode64"),
- r("/", "/dev", "ro,nosuid,nodev,relatime", "tmpfs", "devtmpfs", "rw,mode=755,uid=110002,gid=110002,inode64"),
- r("/null", "/dev/null", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/zero", "/dev/zero", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/full", "/dev/full", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/random", "/dev/random", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/urandom", "/dev/urandom", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/tty", "/dev/tty", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
- r("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
- r("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110002,gid=110002,inode64"),
- r("/", "/run/user", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=16384k,mode=755,uid=110002,gid=110002,inode64"),
- r("/tmp/hakurei.0/runtime/3", "/run/user/1000", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/tmp/hakurei.0/tmpdir/3", "/tmp", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/etc/passwd", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110002,gid=110002,inode64"),
- r(ignore, "/etc/group", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110002,gid=110002,inode64"),
- r(ignore, "/run/user/1000/wayland-0", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/1000/bus", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/usr/lib", "/lib", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/opt/test-helper/bin/tester", "/.hakurei/test-helper", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/1000/pulse/native", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- },
-
- Seccomp: true,
-
- TrySocket: "/tmp/.X11-unix/X0",
- ErrnoAbstract: syscall.ECONNREFUSED,
- ErrnoPathname: syscall.ENOENT,
-}.register("mapuid")
diff --git a/test/sandbox/testdata/pdlike.go b/test/sandbox/testdata/pdlike.go
deleted file mode 100644
index 53d8062a..00000000
--- a/test/sandbox/testdata/pdlike.go
+++ /dev/null
@@ -1,141 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "os"
- "syscall"
-
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-var _ = TestCase{
- Hakurei: hst.Config{
- ID: "app.hakurei.sample.pdlike",
- Enablements: new(hst.EWayland | hst.EPipeWire | hst.EDBus),
- Identity: 5,
-
- Container: &hst.ContainerConfig{
- Hostname: "hakurei-sample-pdlike",
-
- Filesystem: []hst.FilesystemConfigJSON{
- fcLinker,
- fcLib,
- fcTestHelper,
- },
-
- Username: "u0_a5",
- Shell: fhs.AbsUsrBin.Append("bash"),
- Home: hst.AbsPrivateTmp,
- Path: absTestHelper,
- Args: []string{"tester", "pdlike"},
-
- Flags: hst.FHostNet | hst.FTty | hst.FUserns | hst.FShareRuntime | hst.FShareTmpdir,
- },
- },
-
- // 0, PresetExt | PresetDenyDevel
- Sum: SumPD,
-
- Env: []string{
- "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus",
- "HOME=/.hakurei",
- "SHELL=/usr/bin/bash",
- "TERM=xterm",
- "USER=u0_a5",
- "WAYLAND_DISPLAY=wayland-0",
- "XDG_RUNTIME_DIR=/run/user/65534",
- "XDG_SESSION_CLASS=user",
- "XDG_SESSION_TYPE=wayland",
- "PULSE_SERVER=unix:/run/user/65534/pulse/native",
- },
-
- FS: &testsuite.FS{Dir: dir{
- ".hakurei": {Mode: os.ModeDir | 0755, Dir: dir{
- "test-helper": {Mode: 0755},
- }},
-
- "dev": {Mode: os.ModeDir | 0755, Dir: dir{
- "core": {Mode: os.ModeSymlink | 0777},
- "fd": {Mode: os.ModeSymlink | 0777},
- "full": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "mqueue": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "null": {Mode: os.ModeDevice | os.ModeCharDevice | 0666, Data: new("")},
- "ptmx": {Mode: os.ModeSymlink | 0777},
- "pts": {Mode: os.ModeDir | 0755, Dir: dir{
- "ptmx": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
- "random": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "shm": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "stderr": {Mode: os.ModeSymlink | 0777},
- "stdin": {Mode: os.ModeSymlink | 0777},
- "stdout": {Mode: os.ModeSymlink | 0777},
- "tty": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "urandom": {Mode: os.ModeDevice | os.ModeCharDevice | 0444},
- "zero": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
-
- "etc": {Mode: os.ModeDir | 0755, Dir: dir{
- "passwd": {Mode: 0600,
- Data: new("u0_a5:x:65534:65534:Hakurei:/.hakurei:/usr/bin/bash\n")},
- "group": {Mode: 0600,
- Data: new("hakurei:x:65534:\n")},
- }},
-
- "lib64": {Mode: os.ModeDir | 0755, Dir: dir{
- "ld-linux-x86-64.so.2": {Mode: os.ModeSymlink | 0777},
- }},
-
- "run": {Mode: os.ModeDir | 0755, Dir: dir{
- "user": {Mode: os.ModeDir | 0755, Dir: dir{
- "65534": {Mode: os.ModeDir | 0770, Dir: dir{
- "bus": {Mode: os.ModeSocket | 0775},
- "wayland-0": {Mode: os.ModeSocket | 070},
- "pulse": {Mode: os.ModeDir | 0700, Dir: dir{
- "native": {Mode: os.ModeSocket | 0777},
- }},
- }},
- }},
- }},
-
- "tmp": {Mode: os.ModeDir | 0770, Dir: dir{}},
-
- "lib": {Mode: os.ModeDir | 0755},
- "proc": {Mode: os.ModeDir | 0555},
- }},
-
- Mount: []*mountinfo.Entry{
- r("/sysroot", "/", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110004,gid=110004,inode64"),
- r("/", "/proc", "rw,nosuid,nodev,noexec,relatime", "proc", "proc", "rw"),
- r("/", "/.hakurei", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=4k,mode=755,uid=110004,gid=110004,inode64"),
- r("/", "/dev", "ro,nosuid,nodev,relatime", "tmpfs", "devtmpfs", "rw,mode=755,uid=110004,gid=110004,inode64"),
- r("/null", "/dev/null", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/zero", "/dev/zero", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/full", "/dev/full", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/random", "/dev/random", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/urandom", "/dev/urandom", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/tty", "/dev/tty", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
- r("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
- r("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110004,gid=110004,inode64"),
- r("/", "/run/user", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=16384k,mode=755,uid=110004,gid=110004,inode64"),
- r("/tmp/hakurei.0/runtime/5", "/run/user/65534", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/tmp/hakurei.0/tmpdir/5", "/tmp", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/etc/passwd", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110004,gid=110004,inode64"),
- r(ignore, "/etc/group", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110004,gid=110004,inode64"),
- r(ignore, "/run/user/65534/wayland-0", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/bus", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/usr/lib", "/lib", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/opt/test-helper/bin/tester", "/.hakurei/test-helper", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/pulse/native", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- },
-
- Seccomp: true,
-
- TrySocket: "/tmp/.X11-unix/X0",
- ErrnoAbstract: syscall.EPERM,
- ErrnoPathname: syscall.ENOENT,
-}.register("pdlike")
diff --git a/test/sandbox/testdata/simple.go b/test/sandbox/testdata/simple.go
deleted file mode 100644
index c410e626..00000000
--- a/test/sandbox/testdata/simple.go
+++ /dev/null
@@ -1,140 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "os"
- "syscall"
-
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-var _ = TestCase{
- Hakurei: hst.Config{
- ID: "app.hakurei.sample.simple",
- Enablements: new(hst.EWayland | hst.EPipeWire | hst.EDBus),
- Identity: 1,
-
- Container: &hst.ContainerConfig{
- Hostname: "hakurei-sample-simple",
- Env: map[string]string{"HAKUREI_SAMPLE": "1"},
-
- Filesystem: []hst.FilesystemConfigJSON{
- fcLinker,
- fcLib,
- fcTestHelper,
- },
-
- Username: "u0_a1",
- Shell: fhs.AbsUsrBin.Append("bash"),
- Home: hst.AbsPrivateTmp,
- Path: absTestHelper,
- Args: []string{"tester", "simple"},
- },
- },
-
- // 0, PresetStrict
- Sum: sumSimple,
-
- Env: []string{
- "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus",
- "HAKUREI_SAMPLE=1",
- "HOME=/.hakurei",
- "SHELL=/usr/bin/bash",
- "TERM=xterm",
- "USER=u0_a1",
- "WAYLAND_DISPLAY=wayland-0",
- "XDG_RUNTIME_DIR=/run/user/65534",
- "XDG_SESSION_CLASS=user",
- "XDG_SESSION_TYPE=wayland",
- "PULSE_SERVER=unix:/run/user/65534/pulse/native",
- },
-
- FS: &testsuite.FS{Dir: dir{
- ".hakurei": {Mode: os.ModeDir | 0755, Dir: dir{
- "test-helper": {Mode: 0755},
- }},
-
- "dev": {Mode: os.ModeDir | 0755, Dir: dir{
- "core": {Mode: os.ModeSymlink | 0777},
- "fd": {Mode: os.ModeSymlink | 0777},
- "full": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "mqueue": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "null": {Mode: os.ModeDevice | os.ModeCharDevice | 0666, Data: new("")},
- "ptmx": {Mode: os.ModeSymlink | 0777},
- "pts": {Mode: os.ModeDir | 0755, Dir: dir{
- "ptmx": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
- "random": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "shm": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "stderr": {Mode: os.ModeSymlink | 0777},
- "stdin": {Mode: os.ModeSymlink | 0777},
- "stdout": {Mode: os.ModeSymlink | 0777},
- "tty": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "urandom": {Mode: os.ModeDevice | os.ModeCharDevice | 0444},
- "zero": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
-
- "etc": {Mode: os.ModeDir | 0755, Dir: dir{
- "passwd": {Mode: 0600,
- Data: new("u0_a1:x:65534:65534:Hakurei:/.hakurei:/usr/bin/bash\n")},
- "group": {Mode: 0600,
- Data: new("hakurei:x:65534:\n")},
- }},
-
- "lib64": {Mode: os.ModeDir | 0755, Dir: dir{
- "ld-linux-x86-64.so.2": {Mode: os.ModeSymlink | 0777},
- }},
-
- "run": {Mode: os.ModeDir | 0755, Dir: dir{
- "user": {Mode: os.ModeDir | 0755, Dir: dir{
- "65534": {Mode: os.ModeDir | 0700, Dir: dir{
- "bus": {Mode: os.ModeSocket | 0775},
- "wayland-0": {Mode: os.ModeSocket | 070},
- "pulse": {Mode: os.ModeDir | 0700, Dir: dir{
- "native": {Mode: os.ModeSocket | 0777},
- }},
- }},
- }},
- }},
-
- "tmp": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
-
- "lib": {Mode: os.ModeDir | 0755},
- "proc": {Mode: os.ModeDir | 0555},
- }},
-
- Mount: []*mountinfo.Entry{
- r("/sysroot", "/", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110000,gid=110000,inode64"),
- r("/", "/proc", "rw,nosuid,nodev,noexec,relatime", "proc", "proc", "rw"),
- r("/", "/.hakurei", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=4k,mode=755,uid=110000,gid=110000,inode64"),
- r("/", "/dev", "ro,nosuid,nodev,relatime", "tmpfs", "devtmpfs", "rw,mode=755,uid=110000,gid=110000,inode64"),
- r("/null", "/dev/null", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/zero", "/dev/zero", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/full", "/dev/full", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/random", "/dev/random", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/urandom", "/dev/urandom", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/tty", "/dev/tty", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
- r("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
- r("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110000,gid=110000,inode64"),
- r("/", "/run/user", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=16384k,mode=755,uid=110000,gid=110000,inode64"),
- r("/", "/tmp", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110000,gid=110000,inode64"),
- r(ignore, "/etc/passwd", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110000,gid=110000,inode64"),
- r(ignore, "/etc/group", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110000,gid=110000,inode64"),
- r(ignore, "/run/user/65534/wayland-0", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/bus", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/usr/lib", "/lib", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/opt/test-helper/bin/tester", "/.hakurei/test-helper", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/pulse/native", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- },
-
- Seccomp: true,
-
- TrySocket: "/tmp/.X11-unix/X0",
- ErrnoAbstract: syscall.ECONNREFUSED,
- ErrnoPathname: syscall.ENOENT,
-}.register("simple")
diff --git a/test/sandbox/testdata/sum.go b/test/sandbox/testdata/sum.go
deleted file mode 100644
index e4e8643a..00000000
--- a/test/sandbox/testdata/sum.go
+++ /dev/null
@@ -1,22 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "crypto/sha512"
- "encoding/base64"
- "strconv"
-)
-
-// sum decodes s as [base64.StdEncoding] and panics if it is invalid or
-// unexpectedly sized.
-func sum(s string) [sha512.Size]byte {
- p, err := base64.StdEncoding.DecodeString(s)
- if err != nil {
- panic(err)
- }
- if len(p) != sha512.Size {
- panic("unexpected checksum sized " + strconv.Itoa(len(p)))
- }
- return ([sha512.Size]byte)(p)
-}
diff --git a/test/sandbox/testdata/sum_amd64.go b/test/sandbox/testdata/sum_amd64.go
deleted file mode 100644
index bd751105..00000000
--- a/test/sandbox/testdata/sum_amd64.go
+++ /dev/null
@@ -1,9 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-var (
- SumPD = sum("xpiwgf+Vev4XptlDdFN9N/KmP2+d112nVGVCQHqeMkduvaMxK6d4XX9hhUK8+vJ8on3MLd26hSBp0ovP6MrTmg==")
- sumSimple = sum("6IApjfK9Z1HQBA/CG8DtTAD5XcDXulBsJE2LjPaGbbqO9KMylvKHtmzMwdeOlwJll/hMx97BVz4UiWD701zXNQ==")
- sumTTY = sum("C3YAdHbByeJdv2dMKf32CaFlanAGPkkydlThtTYK09oG4aPjK/gOlhxVFq2D1Lnn6b3odqk3l+J2J9JVXCWFiw==")
-)
diff --git a/test/sandbox/testdata/sum_arm64.go b/test/sandbox/testdata/sum_arm64.go
deleted file mode 100644
index 1691828f..00000000
--- a/test/sandbox/testdata/sum_arm64.go
+++ /dev/null
@@ -1,9 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-var (
- SumPD = sum("QzzpuREoLW3MgCkxn7ebgWtg1aeV7I/JQ0TdAnYU1o8CMWapG7iB+q7u3Sbj2JR04UHlppqX6TuJhMqPFJmZgA==")
- sumSimple = sum("eTGFOKPchRMUtr2W8Q1YYayyqn4Ty43gYZ0PanZwnWfwHvP9Z+GVhisC+XEeW3abxNHrT8DfxBpyPInJaKkylw==")
- sumTTY = sum("zx9NyHQ2uo7JXSaLZjpjl7sLSlrGTYVX5sxSnYsPb2Xa06krYu0p2F7unG3eEmd1ek0PhgMuikXKG86t+jTPXg==")
-)
diff --git a/test/sandbox/testdata/testdata.go b/test/sandbox/testdata/testdata.go
deleted file mode 100644
index 3418d8ae..00000000
--- a/test/sandbox/testdata/testdata.go
+++ /dev/null
@@ -1,125 +0,0 @@
-//go:build testsuite || tester
-
-// Package testdata holds sandbox inspection test cases.
-package testdata
-
-import (
- "crypto/sha512"
- "iter"
- "log"
- "strconv"
- "syscall"
-
- "hakurei.app/check"
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-// A TestCase represents a named test case that may be requested by the caller.
-type TestCase struct {
- // Configuration of the inspected container.
- Hakurei hst.Config
- // Checksum of expected seccomp filter program.
- Sum [sha512.Size]byte
-
- // Expected environment. Skipped if nil.
- Env []string `json:"env,omitempty"`
- // Expected root filesystem. Skipped if nil.
- FS *testsuite.FS `json:"fs,omitempty"`
- // Expected mountinfo records. Skipped if nil.
- Mount []*mountinfo.Entry `json:"mount,omitempty"`
- // Whether to run seccomp checks.
- Seccomp bool `json:"seccomp,omitempty"`
-
- // Name of pathname and abstract sockets to attempt.
- TrySocket string `json:"try_socket,omitempty"`
- // Errno to expect attempting to reach the abstract socket.
- ErrnoAbstract syscall.Errno `json:"errno_abstract,omitempty"`
- // Errno to expect attempting to reach the pathname socket.
- ErrnoPathname syscall.Errno `json:"errno_pathname,omitempty"`
-}
-
-// testCases hold all named test cases.
-var testCases map[string]TestCase
-
-// fc returns c wrapped in its JSON adapter.
-func fc(c hst.FilesystemConfig) hst.FilesystemConfigJSON {
- return hst.FilesystemConfigJSON{
- FilesystemConfig: c,
- }
-}
-
-// ignore is the magic string for a mountinfo field to be ignored.
-const ignore = "//ignore"
-
-type dir = map[string]*testsuite.FS
-
-// r returns the address of a [mountinfo.Entry].
-func r(
- root, target, vfsOptstr string,
- fsType, source, fsOptstr string,
-) *mountinfo.Entry {
- return &mountinfo.Entry{
- ID: -1,
- Parent: -1,
- Root: root,
- Target: target,
- VfsOptstr: vfsOptstr,
- FsType: fsType,
- Source: source,
- FsOptstr: fsOptstr,
- }
-}
-
-var (
- // fcLinker is the dynamic linker symlink.
- fcLinker = fc(&hst.FSLink{
- Target: fhs.AbsRoot.Append("lib64", "ld-linux-x86-64.so.2"),
- Linkname: "../lib/x86_64-linux-gnu/ld-linux-x86-64.so.2",
- })
- // fcLib is the dynamic library bind mount.
- fcLib = fc(&hst.FSBind{Source: fhs.AbsRoot.Append("lib")})
-
- // absTestHelper is the absolute pathname of the test helper program.
- absTestHelper = hst.AbsPrivateTmp.Append("test-helper")
- // fcTestHelper is the test helper bind mount.
- fcTestHelper = fc(&hst.FSBind{
- Target: absTestHelper,
- Source: check.MustAbs("/opt/test-helper/bin/tester"),
- })
-)
-
-// register adds a test case to testCases.
-func (c TestCase) register(name string) (_ struct{}) {
- if testCases == nil {
- testCases = make(map[string]TestCase)
- }
-
- if _, ok := testCases[name]; ok {
- panic("attempting to register " + strconv.Quote(name) + " twice")
- }
- testCases[name] = c
- return
-}
-
-// Get returns the named test case, or terminates the program if name is invalid.
-func Get(name string) TestCase {
- tc, ok := testCases[name]
- if !ok {
- log.Fatalf("invalid test case %q", name)
- }
- return tc
-}
-
-// All returns an iterator over all named test cases.
-func All() iter.Seq2[string, TestCase] {
- return func(yield func(string, TestCase) bool) {
- for name, tc := range testCases {
- if !yield(name, tc) {
- return
- }
- }
- }
-}
diff --git a/test/sandbox/testdata/tty.go b/test/sandbox/testdata/tty.go
deleted file mode 100644
index 4788f484..00000000
--- a/test/sandbox/testdata/tty.go
+++ /dev/null
@@ -1,145 +0,0 @@
-//go:build testsuite || tester
-
-package testdata
-
-import (
- "os"
-
- "hakurei.app/fhs"
- "hakurei.app/hst"
- "hakurei.app/test/internal/mountinfo"
- "hakurei.app/test/internal/testsuite"
-)
-
-var _ = TestCase{
- Hakurei: hst.Config{
- ID: "app.hakurei.sample.tty",
- Enablements: new(hst.EWayland | hst.EPipeWire | hst.EDBus | hst.EX11),
- Identity: 2,
-
- Container: &hst.ContainerConfig{
- Hostname: "hakurei-sample-tty",
-
- Filesystem: []hst.FilesystemConfigJSON{
- fcLinker,
- fcLib,
- fcTestHelper,
- },
-
- Username: "u0_a2",
- Shell: fhs.AbsUsrBin.Append("bash"),
- Home: hst.AbsPrivateTmp,
- Path: absTestHelper,
- Args: []string{"tester", "tty"},
-
- Flags: hst.FHostNet | hst.FHostAbstract |
- hst.FTty | hst.FShareRuntime,
- },
- },
-
- // 0, PresetExt | PresetDenyNS | PresetDenyDevel
- Sum: sumTTY,
-
- Env: []string{
- "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus",
- "DISPLAY=:0",
- "HOME=/.hakurei",
- "SHELL=/usr/bin/bash",
- "TERM=xterm",
- "USER=u0_a2",
- "WAYLAND_DISPLAY=wayland-0",
- "XDG_RUNTIME_DIR=/run/user/65534",
- "XDG_SESSION_CLASS=user",
- "XDG_SESSION_TYPE=wayland",
- "PULSE_SERVER=unix:/run/user/65534/pulse/native",
- },
-
- FS: &testsuite.FS{Dir: dir{
- ".hakurei": {Mode: os.ModeDir | 0755, Dir: dir{
- "test-helper": {Mode: 0755},
- }},
-
- "dev": {Mode: os.ModeDir | 0755, Dir: dir{
- "core": {Mode: os.ModeSymlink | 0777},
- "fd": {Mode: os.ModeSymlink | 0777},
- "full": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "mqueue": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "null": {Mode: os.ModeDevice | os.ModeCharDevice | 0666, Data: new("")},
- "ptmx": {Mode: os.ModeSymlink | 0777},
- "pts": {Mode: os.ModeDir | 0755, Dir: dir{
- "ptmx": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
- "random": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "shm": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{}},
- "stderr": {Mode: os.ModeSymlink | 0777},
- "stdin": {Mode: os.ModeSymlink | 0777},
- "stdout": {Mode: os.ModeSymlink | 0777},
- "tty": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- "urandom": {Mode: os.ModeDevice | os.ModeCharDevice | 0444},
- "zero": {Mode: os.ModeDevice | os.ModeCharDevice | 0666},
- }},
-
- "etc": {Mode: os.ModeDir | 0755, Dir: dir{
- "passwd": {Mode: 0600,
- Data: new("u0_a2:x:65534:65534:Hakurei:/.hakurei:/usr/bin/bash\n")},
- "group": {Mode: 0600,
- Data: new("hakurei:x:65534:\n")},
- }},
-
- "lib64": {Mode: os.ModeDir | 0755, Dir: dir{
- "ld-linux-x86-64.so.2": {Mode: os.ModeSymlink | 0777},
- }},
-
- "run": {Mode: os.ModeDir | 0755, Dir: dir{
- "user": {Mode: os.ModeDir | 0755, Dir: dir{
- "65534": {Mode: os.ModeDir | 0770, Dir: dir{
- "bus": {Mode: os.ModeSocket | 0775},
- "wayland-0": {Mode: os.ModeSocket | 070},
- "pulse": {Mode: os.ModeDir | 0700, Dir: dir{
- "native": {Mode: os.ModeSocket | 0777},
- }},
- }},
- }},
- }},
-
- "tmp": {Mode: os.ModeDir | os.ModeSticky | 0777, Dir: dir{
- ".X11-unix": {Mode: os.ModeDir | 0755, Dir: dir{
- "X0": {Mode: os.ModeSocket | 0775},
- }},
- }},
-
- "lib": {Mode: os.ModeDir | 0755},
- "proc": {Mode: os.ModeDir | 0555},
- }},
-
- Mount: []*mountinfo.Entry{
- r("/sysroot", "/", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110001,gid=110001,inode64"),
- r("/", "/proc", "rw,nosuid,nodev,noexec,relatime", "proc", "proc", "rw"),
- r("/", "/.hakurei", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=4k,mode=755,uid=110001,gid=110001,inode64"),
- r("/", "/dev", "ro,nosuid,nodev,relatime", "tmpfs", "devtmpfs", "rw,mode=755,uid=110001,gid=110001,inode64"),
- r("/null", "/dev/null", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/zero", "/dev/zero", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/full", "/dev/full", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/random", "/dev/random", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/urandom", "/dev/urandom", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/tty", "/dev/tty", "rw,nosuid,noexec,relatime", "devtmpfs", "devtmpfs", ignore),
- r("/", "/dev/pts", "rw,nosuid,noexec,relatime", "devpts", "devpts", "rw,mode=620,ptmxmode=666"),
- r("/", "/dev/mqueue", "rw,nosuid,nodev,noexec,relatime", "mqueue", "mqueue", "rw"),
- r("/", "/dev/shm", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110001,gid=110001,inode64"),
- r("/", "/run/user", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,size=16384k,mode=755,uid=110001,gid=110001,inode64"),
- r("/tmp/hakurei.0/runtime/2", "/run/user/65534", "rw,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/", "/tmp", "rw,nosuid,nodev,relatime", "tmpfs", "ephemeral", "rw,uid=110001,gid=110001,inode64"),
- r(ignore, "/etc/passwd", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110001,gid=110001,inode64"),
- r(ignore, "/etc/group", "ro,nosuid,nodev,relatime", "tmpfs", "rootfs", "rw,uid=110001,gid=110001,inode64"),
- r(ignore, "/run/user/65534/wayland-0", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/tmp/.X11-unix", "/tmp/.X11-unix", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/bus", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/usr/lib", "/lib", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r("/opt/test-helper/bin/tester", "/.hakurei/test-helper", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- r(ignore, "/run/user/65534/pulse/native", "ro,nosuid,nodev,relatime", "overlay", "overlay", ignore),
- },
-
- Seccomp: true,
-
- TrySocket: "/tmp/.X11-unix/X0",
-}.register("tty")