From: Jonathan Rajotte Date: Tue, 26 May 2020 18:01:43 +0000 (-0400) Subject: BACKPORT FIX: wrong file name X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=commitdiff_plain;h=e87eb4ae417db699831291279538d16bdd10c08a BACKPORT FIX: wrong file name Signed-off-by: Jonathan Rajotte Change-Id: I268d34671679b9c38b3571406d9da0a4766ed615 --- diff --git a/tests/regression/Makefile.am b/tests/regression/Makefile.am index 1be72094a..73be0b249 100644 --- a/tests/regression/Makefile.am +++ b/tests/regression/Makefile.am @@ -24,7 +24,7 @@ TESTS = tools/filtering/test_invalid_filter \ tools/crash/test_crash \ tools/regen-metadata/test_ust \ tools/regen-statedump/test_ust \ - tools/working-directory/test_relayd_workding_directory \ + tools/working-directory/test_relayd_working_directory \ tools/relayd-grouping/test_ust \ tools/relayd-grouping/test_kernel diff --git a/tests/regression/tools/working-directory/Makefile.am b/tests/regression/tools/working-directory/Makefile.am index 069e70049..3f6631ff5 100644 --- a/tests/regression/tools/working-directory/Makefile.am +++ b/tests/regression/tools/working-directory/Makefile.am @@ -1,5 +1,5 @@ -noinst_SCRIPTS = test_relayd_workding_directory -EXTRA_DIST = test_relayd_workding_directory +noinst_SCRIPTS = test_relayd_working_directory +EXTRA_DIST = test_relayd_working_directory all-local: @if [ x"$(srcdir)" != x"$(builddir)" ]; then \ diff --git a/tests/regression/tools/working-directory/test_relayd_workding_directory b/tests/regression/tools/working-directory/test_relayd_workding_directory deleted file mode 100755 index bf486893f..000000000 --- a/tests/regression/tools/working-directory/test_relayd_workding_directory +++ /dev/null @@ -1,237 +0,0 @@ -#!/bin/bash -# -# Copyright (C) - 2018 Jonathan Rajotte -# -# 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 - -TEST_DESC="Change working directory of process" - -CURDIR=$(dirname $0)/ -TESTDIR=$CURDIR/../../../ - -DIR=$(readlink -f $TESTDIR) - -NUM_TESTS=28 - -source $TESTDIR/utils/utils.sh - -#MUST set TESTDIR before calling those functions -plan_tests $NUM_TESTS - -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" - - diag "Test lttng-relayd normal mode change working directory" - - # There is no rendez-vous mechanism that can guarantee the good timing - # to check if the workdir directory was changed. - # In the case of lttng-sessiond this would be achieved using the - # --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=$! - - while true; do - local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) - test "${working_dir}" = "${cwd}" - if [ $? -eq 0 ]; then - # Working dir for process is valid - break - fi - sleep 0.1 - done - - # If we are here the test passed - pass "Working directory changed" - - stop_lttng_relayd - rm -rf ${working_dir} -} - -function test_relayd_daemon() -{ - local 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) - - is "x${cwd}" "x${working_dir}" "Working directory changed" - - stop_lttng_relayd - rm -rf ${working_dir} -} - -function test_relayd_daemon_no_working_dir() -{ - local expected_working_dir="/" - - diag "Test lttng-relayd daemon mode change working directory" - - start_lttng_relayd_opt 1 "-d" "" - - local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) - - is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}" - - stop_lttng_relayd - rm -rf ${working_dir} -} - -function test_relayd_background() -{ - local 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) - - is "x${cwd}" "x${working_dir}" "Working directory changed" - - stop_lttng_relayd - rm -rf ${working_dir} -} - -function test_relayd_background_no_working_dir() -{ - local expected_working_dir="/" - diag "Test lttng-relayd background working directory" - - start_lttng_relayd_opt 1 "-b" "" - - local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) - - is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}" - - stop_lttng_relayd - 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) - - diag "Test lttng-relayd change working directory on non writable directory" - - # Removing write access to working dir - okx chmod -w ${working_dir} - - 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" - - local output_content="$(cat ${ERROR_OUTPUT_DEST})" - like "x${output_content}" "$output_pattern" "Warning about missing write permission is present" - - stop_lttng_relayd - 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 relayd_bin_path="$DIR/../src/bin/lttng-relayd/$RELAYD_BIN" - - diag "Test lttng-relayd normal mode change non-existing directory" - - $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 - 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" - - rm -rf ${working_dir} ${output_dest} -} - -function test_relayd_env() -{ - local 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) - - is "x${cwd}" "x${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=$(mktemp -d) - local 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) - - is "x${cwd}" "x${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_daemon_no_working_dir - test_relayd_background - 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[@]}; -do - ${fct_test} - if [ $? -ne 0 ]; then - break; - fi -done diff --git a/tests/regression/tools/working-directory/test_relayd_working_directory b/tests/regression/tools/working-directory/test_relayd_working_directory new file mode 100755 index 000000000..bf486893f --- /dev/null +++ b/tests/regression/tools/working-directory/test_relayd_working_directory @@ -0,0 +1,237 @@ +#!/bin/bash +# +# Copyright (C) - 2018 Jonathan Rajotte +# +# 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 + +TEST_DESC="Change working directory of process" + +CURDIR=$(dirname $0)/ +TESTDIR=$CURDIR/../../../ + +DIR=$(readlink -f $TESTDIR) + +NUM_TESTS=28 + +source $TESTDIR/utils/utils.sh + +#MUST set TESTDIR before calling those functions +plan_tests $NUM_TESTS + +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" + + diag "Test lttng-relayd normal mode change working directory" + + # There is no rendez-vous mechanism that can guarantee the good timing + # to check if the workdir directory was changed. + # In the case of lttng-sessiond this would be achieved using the + # --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=$! + + while true; do + local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) + test "${working_dir}" = "${cwd}" + if [ $? -eq 0 ]; then + # Working dir for process is valid + break + fi + sleep 0.1 + done + + # If we are here the test passed + pass "Working directory changed" + + stop_lttng_relayd + rm -rf ${working_dir} +} + +function test_relayd_daemon() +{ + local 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) + + is "x${cwd}" "x${working_dir}" "Working directory changed" + + stop_lttng_relayd + rm -rf ${working_dir} +} + +function test_relayd_daemon_no_working_dir() +{ + local expected_working_dir="/" + + diag "Test lttng-relayd daemon mode change working directory" + + start_lttng_relayd_opt 1 "-d" "" + + local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) + + is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}" + + stop_lttng_relayd + rm -rf ${working_dir} +} + +function test_relayd_background() +{ + local 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) + + is "x${cwd}" "x${working_dir}" "Working directory changed" + + stop_lttng_relayd + rm -rf ${working_dir} +} + +function test_relayd_background_no_working_dir() +{ + local expected_working_dir="/" + diag "Test lttng-relayd background working directory" + + start_lttng_relayd_opt 1 "-b" "" + + local cwd=$(readlink /proc/${RELAYD_PIDS}/cwd) + + is "x${cwd}" "x${expected_working_dir}" "Working directory is ${expected_working_dir}" + + stop_lttng_relayd + 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) + + diag "Test lttng-relayd change working directory on non writable directory" + + # Removing write access to working dir + okx chmod -w ${working_dir} + + 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" + + local output_content="$(cat ${ERROR_OUTPUT_DEST})" + like "x${output_content}" "$output_pattern" "Warning about missing write permission is present" + + stop_lttng_relayd + 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 relayd_bin_path="$DIR/../src/bin/lttng-relayd/$RELAYD_BIN" + + diag "Test lttng-relayd normal mode change non-existing directory" + + $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 + 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" + + rm -rf ${working_dir} ${output_dest} +} + +function test_relayd_env() +{ + local 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) + + is "x${cwd}" "x${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=$(mktemp -d) + local 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) + + is "x${cwd}" "x${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_daemon_no_working_dir + test_relayd_background + 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[@]}; +do + ${fct_test} + if [ $? -ne 0 ]; then + break; + fi +done