testing: Add wrapper for systemctl to collect leaks from charon-systemd
authorTobias Brunner <tobias@strongswan.org>
Thu, 28 Jun 2018 14:29:22 +0000 (16:29 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 28 Jun 2018 14:45:54 +0000 (16:45 +0200)
Similar to the wrapper around `service` added with 71d59af58aea, this
sets the variable only when running the automated tests.

testing/hosts/default/usr/local/bin/systemctl [new file with mode: 0755]

diff --git a/testing/hosts/default/usr/local/bin/systemctl b/testing/hosts/default/usr/local/bin/systemctl
new file mode 100755 (executable)
index 0000000..bbe2bc9
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# LEAK_DETECTIVE_LOG is set for automated runs, however, this is not passed
+# to a process started via systemctl. This wrapper is used to set the variable
+# for the strongswan-swanctl.service unit.
+
+ORIG=/bin/systemctl
+CONF=/lib/systemd/system/strongswan-swanctl.service
+
+if [[ "$2" != "strongswan-swanctl" ]]; then
+       $ORIG "$@"
+fi
+
+if [[ "$1" == "start" && -n $LEAK_DETECTIVE_LOG ]]; then
+       sed -i "s:Type=:Environment=LEAK_DETECTIVE_LOG=$LEAK_DETECTIVE_LOG\nType=:" $CONF 2>/dev/null
+fi
+
+$ORIG "$@"
+
+if [[ "$1" == "stop" ]]; then
+       sed -i '/LEAK_DETECTIVE_LOG/d' $CONF 2>/dev/null
+fi