#!/bin/bash
#
-# Copyright (C) - 2018 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
+# Copyright (C) 2018 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
#
-# This library is free software; you can redistribute it and/or modify it under
-# the terms of the GNU Lesser General Public License as published by the Free
-# Software Foundation; version 2.1 of the License.
-#
-# This library is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
-# details.
-#
-# You should have received a copy of the GNU Lesser General Public License
-# along with this library; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+# SPDX-License-Identifier: LGPL-2.1-only
TEST_DESC="Change working directory of process"
DIR=$(readlink -f "$TESTDIR")
-NUM_TESTS=27
+NUM_TESTS=35
source $TESTDIR/utils/utils.sh
-
#MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS
local pid
local cwd
- working_dir=$(mktemp -d)
+ working_dir=$(realpath "$(mktemp -d)")
diag "Test lttng-relayd normal mode change working directory"
local cwd
local pid
- working_dir=$(mktemp -d)
+ working_dir=$(realpath "$(mktemp -d)")
diag "Test lttng-relayd daemon mode change working directory"
local cwd
local pid
- working_dir=$(mktemp -d)
+ working_dir=$(realpath "$(mktemp -d)")
diag "Test lttng-relayd background mode change working directory"
local cwd
local pid
- working_dir=$(mktemp -d)
+ working_dir=$(realpath "$(mktemp -d)")
diag "Test lttng-relayd change working directory on non writable directory"
local output_dest
local pid
- working_dir="$(mktemp -d)"
+ working_dir=$(realpath "$(mktemp -d)")
working_dir_imaginary="${working_dir}/imaginary_directory"
output_dest=$(mktemp)
rm -rf "$working_dir"
}
+function test_relayd_env()
+{
+ local working_dir
+ local cwd
+ local pid
+
+ working_dir=$(mktemp -d)
+ working_dir=$(realpath "$(mktemp -d)")
+
+ diag "Test lttng-relayd change working directory from env. variable"
+
+ export LTTNG_RELAYD_WORKING_DIRECTORY=${working_dir}
+ start_lttng_relayd_opt 1 "-b" ""
+
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
+
+ cwd=$(readlink "/proc/$pid/cwd")
+
+ is "$cwd" "$working_dir" "Working directory changed"
+
+ stop_lttng_relayd
+ rm -rf "$working_dir"
+ unset LTTNG_RELAYD_WORKING_DIRECTORY
+}
+
+function test_relayd_cmdline_overwrite_env()
+{
+ local working_dir_env
+ local working_dir_cmdline
+ local cwd
+ local pid
+
+ working_dir_env=$(realpath "$(mktemp -d)")
+ working_dir_cmdline=$(realpath "$(mktemp -d)")
+
+ diag "Test lttng-relayd change working directory command line overwrite env variable"
+
+ export LTTNG_RELAYD_WORKING_DIRECTORY=${working_dir_env}
+ start_lttng_relayd_opt 1 "-b" "--working-dir ${working_dir_cmdline}"
+
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
+
+ cwd=$(readlink "/proc/$pid/cwd")
+
+ is "$cwd" "$working_dir_cmdline" "Working directory is the one from command line"
+
+ stop_lttng_relayd
+ rm -rf "$working_dir_env" "$working_dir_cmdline"
+ unset LTTNG_RELAYD_WORKING_DIRECTORY
+}
+
TESTS=(
test_relayd
test_relayd_daemon
test_relayd_background_no_working_dir
test_relayd_debug_permission
test_relayd_failure
+ test_relayd_env
+ test_relayd_cmdline_overwrite_env
)
for fct_test in "${TESTS[@]}";