2021-05-02 10:17:26 +02:00
|
|
|
import os
|
|
|
|
|
|
|
|
import infra.basetest
|
|
|
|
|
|
|
|
|
|
|
|
class TestS6Rc(infra.basetest.BRTest):
|
|
|
|
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
|
|
|
"""
|
|
|
|
BR2_PACKAGE_S6_RC=y
|
|
|
|
BR2_TARGET_ROOTFS_CPIO=y
|
|
|
|
# BR2_TARGET_ROOTFS_TAR is not set
|
|
|
|
"""
|
|
|
|
|
|
|
|
def test_run(self):
|
|
|
|
img = os.path.join(self.builddir, "images", "rootfs.cpio")
|
|
|
|
self.emulator.boot(arch="armv5",
|
|
|
|
kernel="builtin",
|
|
|
|
options=["-initrd", img])
|
|
|
|
self.emulator.login()
|
|
|
|
|
|
|
|
_, exit_code = self.emulator.run("s6-svscan -h")
|
|
|
|
self.assertEqual(exit_code, 100)
|
|
|
|
|
|
|
|
# Set up two service directories with a dependency
|
2021-06-26 15:32:38 +02:00
|
|
|
self.assertRunOk("mkdir -p source/testsv1")
|
|
|
|
self.assertRunOk("mkdir -p source/testsv2")
|
|
|
|
self.assertRunOk("echo oneshot > source/testsv1/type")
|
|
|
|
self.assertRunOk("echo oneshot > source/testsv2/type")
|
|
|
|
self.assertRunOk("echo 'echo foo' > source/testsv1/up")
|
|
|
|
self.assertRunOk("echo 'echo bar' > source/testsv2/up")
|
|
|
|
self.assertRunOk("echo testsv1 > source/testsv2/dependencies")
|
|
|
|
self.assertRunOk("chmod +x source/testsv1/up")
|
|
|
|
self.assertRunOk("chmod +x source/testsv2/up")
|
2021-05-02 10:17:26 +02:00
|
|
|
|
|
|
|
# Compile the service database
|
2021-06-26 15:32:38 +02:00
|
|
|
self.assertRunOk("s6-rc-compile compiled source")
|
2021-05-02 10:17:26 +02:00
|
|
|
|
|
|
|
# Inspect dependencies
|
|
|
|
cmd = "s6-rc-db -c compiled -d dependencies testsv1"
|
|
|
|
output, exit_code = self.emulator.run(cmd)
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
|
|
self.assertEqual(output[0], "testsv2")
|
|
|
|
cmd = "s6-rc-db -c compiled dependencies testsv2"
|
|
|
|
output, exit_code = self.emulator.run(cmd)
|
|
|
|
self.assertEqual(exit_code, 0)
|
|
|
|
self.assertEqual(output[0], "testsv1")
|