2
1

test_s6.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import os
  2. import textwrap
  3. import infra.basetest
  4. class TestS6(infra.basetest.BRTest):
  5. config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
  6. """
  7. BR2_PACKAGE_S6=y
  8. BR2_TARGET_ROOTFS_CPIO=y
  9. # BR2_TARGET_ROOTFS_TAR is not set
  10. """
  11. def test_run(self):
  12. img = os.path.join(self.builddir, "images", "rootfs.cpio")
  13. self.emulator.boot(arch="armv5",
  14. kernel="builtin",
  15. options=["-initrd", img])
  16. self.emulator.login()
  17. _, exit_code = self.emulator.run("s6-svscan -h")
  18. self.assertEqual(exit_code, 100)
  19. script = \
  20. """
  21. #!/bin/execlineb -P
  22. s6-ipcserver-socketbinder /tmp/socket
  23. s6-ipcserverd
  24. cat
  25. """
  26. script = textwrap.dedent(script)
  27. # Set up scanning and service directories
  28. self.emulator.run("mkdir -p source/testsv")
  29. self.emulator.run("cat > source/testsv/run <<EOF" + script + "EOF")
  30. self.emulator.run("chmod +x source/testsv/run")
  31. _, exit_code = self.emulator.run("s6-svok source/testsv")
  32. self.assertEqual(exit_code, 1)
  33. # Run a scan and start all services
  34. self.emulator.run("s6-svscan source &")
  35. self.emulator.run("sleep 2")
  36. _, exit_code = self.emulator.run("s6-svok source/testsv")
  37. self.assertEqual(exit_code, 0)
  38. # Test a running service
  39. cmd = "echo foobar | s6-ipcclient /tmp/socket s6-ioconnect -67"
  40. output, exit_code = self.emulator.run(cmd)
  41. self.assertEqual(exit_code, 0)
  42. self.assertEqual(output[0], "foobar")
  43. # Terminate all services
  44. _, exit_code = self.emulator.run("s6-svscanctl -t source")
  45. self.assertEqual(exit_code, 0)
  46. self.emulator.run("sleep 2")
  47. _, exit_code = self.emulator.run("s6-svok source/testsv")
  48. self.assertEqual(exit_code, 1)