#!/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"
start_lttng_relayd_opt 1 "-d" "--working-directory $working_dir"
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/${pid}/cwd")
start_lttng_relayd_opt 1 "-d" ""
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/${pid}/cwd")
start_lttng_relayd_opt 1 "-b" "--working-directory $working_dir"
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/${pid}/cwd")
start_lttng_relayd_opt 1 "-b" ""
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/${pid}/cwd")
function test_relayd_debug_permission()
{
- local output_pattern='Working directory \".*\" is not writable'
- local working_dir
- local cwd
- local pid
-
- working_dir=$(realpath "$(mktemp -d)")
+ local is_user
diag "Test lttng-relayd change working directory on non writable directory"
- # Removing write access to working dir
- okx chmod -w "$working_dir"
+ if [ "$(id -u)" == "0" ]; then
+ is_user=0
+ else
+ is_user=1
+ fi
+
+ skip $is_user "Skipping permission debug output test; operation can't fail as root" 6 ||
+ {
+ local output_pattern='Working directory \".*\" is not writable'
+ local working_dir
+ local cwd
+ local pid
- # Redirect the error output to a temporary file
- ERROR_OUTPUT_DEST=$(mktemp)
- start_lttng_relayd_opt 1 "-b" "-v --working-dir $working_dir"
+ working_dir=$(realpath "$(mktemp -d)")
- pid=$(pgrep "$RELAYD_MATCH")
- ok $? "Found lttng-relayd"
+ # Removing write access to working dir
+ okx chmod -w "$working_dir"
- cwd=$(readlink "/proc/${pid}/cwd")
- is "$cwd" "$working_dir" "Working directory changed"
+ # Redirect the error output to a temporary file
- grep -q "$output_pattern" "$ERROR_OUTPUT_DEST"
- ok $? "Warning about missing write permission is present"
+ ERROR_OUTPUT_DEST=$(mktemp)
+ start_lttng_relayd_opt 1 "-b" "-v --working-dir $working_dir"
- stop_lttng_relayd
- rm "$ERROR_OUTPUT_DEST"
- rm -rf "$working_dir" "$ERROR_OUTPUT_DEST"
- ERROR_OUTPUT_DEST=/dev/null
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
+ ok $? "Found lttng-relayd"
+
+ 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 "$ERROR_OUTPUT_DEST"
+ rm -rf "$working_dir" "$ERROR_OUTPUT_DEST"
+ ERROR_OUTPUT_DEST=/dev/null
+ }
}
function test_relayd_failure()
test $? -eq "1"
ok $? "Expect failure to start lttng-relayd for non-existent working directory"
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
if [ -z "$pid" ]; then
pass "No lttng-relayd present"
else
export LTTNG_RELAYD_WORKING_DIRECTORY=${working_dir}
start_lttng_relayd_opt 1 "-b" ""
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/$pid/cwd")
export LTTNG_RELAYD_WORKING_DIRECTORY=${working_dir_env}
start_lttng_relayd_opt 1 "-b" "--working-dir ${working_dir_cmdline}"
- pid=$(pgrep "$RELAYD_MATCH")
+ pid=$(lttng_pgrep "$RELAYD_MATCH")
ok $? "Found lttng-relayd"
cwd=$(readlink "/proc/$pid/cwd")