testing: Add wrapper around service command
authorTobias Brunner <tobias@strongswan.org>
Fri, 26 May 2017 14:24:35 +0000 (16:24 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 26 May 2017 14:28:16 +0000 (16:28 +0200)
When charon is started via service command LEAK_DETECTIVE_LOG is not set
because the command strips the environment.  Since we only want the
variable to be set during the automated test runs we can't just set it
in /etc/default/charon.  Instead, we do so in this wrapper when charon is
started and remove the variable again when it is stopped.

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

diff --git a/testing/hosts/default/usr/local/bin/service b/testing/hosts/default/usr/local/bin/service
new file mode 100755 (executable)
index 0000000..c5db4f6
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+#
+# LEAK_DETECTIVE_LOG is set for automated runs, however, `service` strips
+# the environment. This wrapper is used to set the variable for the charon
+# init script.
+
+ORIG=/usr/sbin/service
+CONF=/etc/default/charon
+
+if [[ "$1" != "charon" ]]; then
+       $ORIG "$@"
+fi
+
+if [[ "$2" == "start" && -n $LEAK_DETECTIVE_LOG ]]; then
+       echo "export LEAK_DETECTIVE_LOG=$LEAK_DETECTIVE_LOG" >> $CONF
+fi
+
+$ORIG "$@"
+
+if [[ "$2" == "stop" ]]; then
+       sed -i '/LEAK_DETECTIVE_LOG/d' $CONF 2>/dev/null
+fi