TEST_DESC="Change working directory of process"
-CURDIR=$(dirname $0)/
+CURDIR=$(dirname "$0")/
TESTDIR=$CURDIR/../../../
-DIR=$(readlink -f $TESTDIR)
+DIR=$(readlink -f "$TESTDIR")
-NUM_TESTS=28
+NUM_TESTS=35
source $TESTDIR/utils/utils.sh
print_test_banner "$TEST_DESC"
function test_relayd()
{
- local working_dir=$(mktemp -d)
- local test_dir=$(readlink -f $TESTDIR)
local relayd_bin_path="$DIR/../src/bin/lttng-relayd/$RELAYD_BIN"
+ local working_dir
+ local pid
+ local cwd
+
+ working_dir=$(mktemp -d)
diag "Test lttng-relayd normal mode change working directory"
# --sig-parent option but lttng-relayd does not have this feature yet.
# Fall back on using polling of the value and unblock when the value is
# the one we expect. In case of a failure the test will hang.
- $relayd_bin_path --working-directory $working_dir > /dev/null 2>&1 &
- RELAYD_PIDS=$!
+ $relayd_bin_path --working-directory "$working_dir" > /dev/null 2>&1 &
+ pid=$!
while true; do
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
- test "${working_dir}" = "${cwd}"
- if [ $? -eq 0 ]; then
+ cwd=$(readlink "/proc/${pid}/cwd")
+ if test "$working_dir" = "$cwd"; then
# Working dir for process is valid
break
fi
pass "Working directory changed"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
}
function test_relayd_daemon()
{
- local working_dir=$(mktemp -d)
+ local working_dir
+ local cwd
+ local pid
+
+ working_dir=$(mktemp -d)
diag "Test lttng-relayd daemon mode change working directory"
start_lttng_relayd_opt 1 "-d" "--working-directory $working_dir"
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
+
+ cwd=$(readlink "/proc/${pid}/cwd")
- is "x${cwd}" "x${working_dir}" "Working directory changed"
+ is "$cwd" "$working_dir" "Working directory changed"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
}
function test_relayd_daemon_no_working_dir()
{
local expected_working_dir="/"
+ local cwd
+ local pid
diag "Test lttng-relayd daemon mode change working directory"
start_lttng_relayd_opt 1 "-d" ""
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}"
+ cwd=$(readlink "/proc/${pid}/cwd")
+
+ is "$cwd" "$expected_working_dir" "Working directory is $expected_working_dir"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
}
function test_relayd_background()
{
- local working_dir=$(mktemp -d)
+ local working_dir
+ local cwd
+ local pid
+
+ working_dir=$(mktemp -d)
diag "Test lttng-relayd background mode change working directory"
start_lttng_relayd_opt 1 "-b" "--working-directory $working_dir"
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- is "x${cwd}" "x${working_dir}" "Working directory changed"
+ cwd=$(readlink "/proc/${pid}/cwd")
+
+ is "$cwd" "$working_dir" "Working directory changed"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
}
function test_relayd_background_no_working_dir()
{
local expected_working_dir="/"
+ local cwd
+ local pid
+
diag "Test lttng-relayd background working directory"
start_lttng_relayd_opt 1 "-b" ""
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}"
+ cwd=$(readlink "/proc/${pid}/cwd")
+
+ is "$cwd" "$expected_working_dir" "Working directory is $expected_working_dir"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
}
function test_relayd_debug_permission()
{
- local working_dir=$(mktemp -d)
- local output_pattern='Working directory is not writable'
- ERROR_OUTPUT_DEST=$(mktemp -u)
+ local output_pattern='Working directory \".*\" is not writable'
+ local working_dir
+ local cwd
+ local pid
+
+ working_dir=$(mktemp -d)
diag "Test lttng-relayd change working directory on non writable directory"
# Removing write access to working dir
- okx chmod -w ${working_dir}
+ okx chmod -w "$working_dir"
+ # Redirect the error output to a temporary file
+ ERROR_OUTPUT_DEST=$(mktemp)
start_lttng_relayd_opt 1 "-b" "-v --working-dir $working_dir"
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
- is "x${cwd}" "x${working_dir}" "Workind directory changed"
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- local output_content="$(cat ${ERROR_OUTPUT_DEST})"
- like "x${output_content}" "$output_pattern" "Warning about missing write permission is present"
+ cwd=$(readlink "/proc/${pid}/cwd")
+ is "$cwd" "$working_dir" "Working directory changed"
+
+ grep -q "$output_pattern" "$ERROR_OUTPUT_DEST"
+ ok $? "Warning about missing write permission is present"
stop_lttng_relayd
- rm -rf ${working_dir} ${ERROR_OUTPUT_DEST}
+ rm "$ERROR_OUTPUT_DEST"
+ rm -rf "$working_dir" "$ERROR_OUTPUT_DEST"
ERROR_OUTPUT_DEST=/dev/null
}
function test_relayd_failure()
{
- local working_dir="$(mktemp -d)"
- local working_dir_imaginary="${working_dir}/imaginary_directory"
- local output_dest=$(mktemp -u)
- local output_pattern='Error: Changing working directory'
- local test_dir=$(readlink -f $TESTDIR)
+ local output_pattern='Failed to change working directory to'
local relayd_bin_path="$DIR/../src/bin/lttng-relayd/$RELAYD_BIN"
+ local working_dir
+ local working_dir_imaginary
+ local output_dest
+ local pid
+
+ working_dir="$(mktemp -d)"
+ working_dir_imaginary="${working_dir}/imaginary_directory"
+ output_dest=$(mktemp)
+
diag "Test lttng-relayd normal mode change non-existing directory"
- $relayd_bin_path -b --working-directory $working_dir_imaginary > $output_dest 2>&1
+ $relayd_bin_path -b --working-directory "$working_dir_imaginary" > "$output_dest" 2>&1
test $? -eq "1"
ok $? "Expect failure to start lttng-relayd for non-existent working directory"
- RELAYD_PIDS=$(pgrep $RELAYD_MATCH)
- if [ -z "${RELAYD_PIDS}" ]; then
+ pid=$(pgrep "$RELAYD_MATCH")
+ if [ -z "$pid" ]; then
pass "No lttng-relayd present"
else
fail "No lttng-relayd present"
stop_lttng_relayd_notap
fi
- local output_content="$(cat ${output_dest})"
- like "x${output_content}" "$output_pattern" "Error about invalid directory"
+ grep -q "$output_pattern" "$output_dest"
+ ok $? "Found error message: invalid directory"
- rm -rf ${working_dir} ${output_dest}
+ rm "$output_dest"
+ rm -rf "$working_dir"
}
function test_relayd_env()
{
- local working_dir=$(mktemp -d)
+ local working_dir
+ local cwd
+ local pid
+
+ working_dir=$(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" ""
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- is "x${cwd}" "x${working_dir}" "Working directory changed"
+ cwd=$(readlink "/proc/$pid/cwd")
+
+ is "$cwd" "$working_dir" "Working directory changed"
stop_lttng_relayd
- rm -rf ${working_dir}
+ rm -rf "$working_dir"
unset LTTNG_RELAYD_WORKING_DIRECTORY
}
function test_relayd_cmdline_overwrite_env()
{
- local working_dir_env=$(mktemp -d)
- local working_dir_cmdline=$(mktemp -d)
+ local working_dir_env
+ local working_dir_cmdline
+ local cwd
+ local pid
+
+ working_dir_env=$(mktemp -d)
+ working_dir_cmdline=$(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}"
- local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd)
+ pid=$(pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
- is "x${cwd}" "x${working_dir_cmdline}" "Working directory is the one from command line"
+ 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}
+ rm -rf "$working_dir_env" "$working_dir_cmdline"
unset LTTNG_RELAYD_WORKING_DIRECTORY
}
+
TESTS=(
test_relayd
test_relayd_daemon
test_relayd_cmdline_overwrite_env
)
-for fct_test in ${TESTS[@]};
+for fct_test in "${TESTS[@]}";
do
- ${fct_test}
- if [ $? -ne 0 ]; then
+ if ! ${fct_test}; then
break;
fi
done