mirror of
https://github.com/troglobit/finit.git
synced 2026-10-01 05:22:48 +07:00
test: add support for make -j17 check massive parallel testing
This was a tough nut to crack. Spent 3-4 calendar weeks (getting blurry now) to try and figure it all out. In the end, the following changes were necessary: - Ensure setup-root.sh is guaranteed to run before any of the tests - Give all tests their unique /etc, /tmp, and /run inside the chroot. Turns out tmpfs+overlayfs can be used unprivileged inside an unshare - A static BusyBox binary with support for mount helpers so we can do the mkdir magic in skel/etc/fstab for the /etc overlay The last item turned out to be a bit of a roller coaster ride of its own. First of all, the original binary we used was from the upstream BusyBox project[1]. I was sure it couldn't be that hard to enable the CONFIG_FEATURE_MOUNT_HELPERS ... oh boy was I wrong. To make long and tedious story short; two new projects on GitHub were created for this task: 1) troglobit/misc[2] to house a mirror of https://musl.cc toolchains and 2) troglobit/busybox-builder[3] to download, patch, and build the thing using a .config from the myLinux[4] project. Patching this .config was necessary, however, since musl libc is strict POSIX and does not have any of the BSD extensions, e.g. REG_STARTEND that is in GLIBC regex(3). [1]: https://busybox.net/downloads/binaries/1.31.0-defconfig-multiarch-musl/ [2]: https://github.com/troglobit/misc/releases/tag/11-20211120 [3]: https://github.com/troglobit/busybox-builder/releases/tag/1_35_0 [4]: https://github.com/troglobit/myLinux Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
+6
-1
@@ -47,7 +47,6 @@ checkself.sh:
|
||||
|
||||
TEST_EXTENSIONS = .sh
|
||||
TESTS = checkself.sh
|
||||
TESTS += setup-root.sh
|
||||
TESTS += add-remove-dynamic-service.sh
|
||||
TESTS += add-remove-dynamic-service-sub-config.sh
|
||||
TESTS += cond-start-task.sh
|
||||
@@ -64,6 +63,12 @@ TESTS += start-stop-sysv.sh
|
||||
TESTS += start-stop-serv.sh
|
||||
TESTS += signal-service.sh
|
||||
|
||||
check-recursive: setup-chroot
|
||||
|
||||
.PHONY: setup-chroot
|
||||
setup-chroot:
|
||||
@TENV_ROOT='$(abs_builddir)/tenv-root/' srcdir=$(srcdir) top_builddir=$(top_builddir) ./setup-root.sh
|
||||
|
||||
clean-local:
|
||||
-rm -rf $(builddir)/tenv-root/
|
||||
-rm -f checkself.sh
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
# <file system> <mount point> <type> <options> <dump> <pass>
|
||||
tmpfs /tmp tmpfs mode=1777 0 0
|
||||
mkdir#-p#-m0755 /tmp/etc.u helper none 0 0
|
||||
mkdir#-p#-m0755 /tmp/etc.w helper none 0 0
|
||||
|
||||
# Each test needs a dedicated /etc for finit.conf etc.
|
||||
etc /etc overlay lowerdir=/etc,upperdir=/tmp/etc.u,workdir=/tmp/etc.w 0 0
|
||||
|
||||
Reference in New Issue
Block a user