Browse Source

Add igr test for "before" handling

Davin McCall 10 months ago
parent
commit
c313f327e8

+ 2 - 0
src/igr-tests/Makefile

@@ -12,3 +12,5 @@ clean:
 	rm -f check-basic/output.txt check-lint/output.txt check-cycle/output.txt no-command-error/dinit-run.log
 	rm -rf reload1/sd
 	rm -rf reload2/sd
+	rm -rf pseudo-cycle/output/*
+	rm -rf before-after/output/*

+ 46 - 0
src/igr-tests/before-after/run-test.sh

@@ -0,0 +1,46 @@
+#!/bin/sh
+
+set -eu
+
+DINIT_EXEC=${DINIT_EXEC:-../../dinit}
+DINITCTL_EXEC=${DINITCTL_EXE:-../../dinitctl}
+
+cd "$(dirname "$0")"
+
+# Tests around before/after link functionality.
+
+mkdir -p output
+rm -rf output/*
+
+"$DINIT_EXEC" -q -d sd1 -u -p socket  &
+
+# Give some time for startup
+sleep 0.2
+
+# start parent; should start service2 and then service1 (due to before= in service2).
+"$DINITCTL_EXEC" --quiet -p socket start parent
+
+if [ "$(cat output/script-output)" != "$(printf "two\none\n")" ]; then
+    "$DINITCTL_EXEC" --quiet -p socket shutdown
+    return 1
+fi
+
+rm output/script-output
+
+# unloading and reloading service1 should not lose the before= relationship
+"$DINITCTL_EXEC" --quiet -p socket stop parent
+"$DINITCTL_EXEC" --quiet -p socket unload parent
+"$DINITCTL_EXEC" --quiet -p socket unload service1
+
+"$DINITCTL_EXEC" --quiet -p socket reload service1
+"$DINITCTL_EXEC" --quiet -p socket start parent
+
+if [ "$(cat output/script-output)" != "$(printf "two\none\n")" ]; then
+    "$DINITCTL_EXEC" --quiet -p socket shutdown
+    return 1
+fi
+
+rm output/script-output
+
+"$DINITCTL_EXEC" --quiet -p socket shutdown
+# Success.

+ 6 - 0
src/igr-tests/before-after/scripts/service.sh

@@ -0,0 +1,6 @@
+#!/bin/sh
+
+set -eu
+
+sleep "$2"
+echo "$1" >> output/script-output

+ 2 - 0
src/igr-tests/before-after/sd1/boot

@@ -0,0 +1,2 @@
+type = internal
+before = service1

+ 3 - 0
src/igr-tests/before-after/sd1/parent

@@ -0,0 +1,3 @@
+type = internal
+depends-on = service1
+depends-on = service2

+ 3 - 0
src/igr-tests/before-after/sd1/service1

@@ -0,0 +1,3 @@
+type = scripted
+command = scripts/service.sh one 0.5
+#before = service2

+ 2 - 0
src/igr-tests/before-after/sd1/service2

@@ -0,0 +1,2 @@
+type = scripted
+command = scripts/service.sh two 0.2

+ 2 - 0
src/igr-tests/before-after/sd2/boot

@@ -0,0 +1,2 @@
+type = internal
+after = service1

+ 1 - 0
src/igr-tests/before-after/sd2/service1

@@ -0,0 +1 @@
+type = internal

+ 2 - 1
src/igr-tests/igr-runner.cc

@@ -14,7 +14,8 @@ int main(int argc, char **argv)
 {
     const char * const test_dirs[] = { "basic", "environ", "environ2", "ps-environ", "chain-to", "force-stop",
             "restart", "check-basic", "check-cycle", "check-cycle2", "check-lint", "reload1", "reload2",
-            "no-command-error", "add-rm-dep", "var-subst", "svc-start-fail", "dep-not-found", "pseudo-cycle" };
+            "no-command-error", "add-rm-dep", "var-subst", "svc-start-fail", "dep-not-found", "pseudo-cycle",
+            "before-after"};
     constexpr int num_tests = sizeof(test_dirs) / sizeof(test_dirs[0]);
 
     int passed = 0;