From c7cc870e07722a234c620f87edbed55354fb3009 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Tue, 22 May 2018 13:48:07 -0400 Subject: [PATCH] Backport: Introduce LTTNG_RELAYD_WORKING_DIRECTORY environment variable LTTNG_RELAYD_WORKING_DIRECTORY is equivalent to the --working-directory command line options. Note: when using --working-directory, the command line option always overwrite the environment configuration, LTTNG_RELAYD_WORKING_DIRECTORY in this case. Signed-off-by: Jonathan Rajotte --- src/bin/lttng-relayd/main.c | 18 +++++++- src/common/defaults.h | 2 + .../test_relayd_workding_directory | 41 ++++++++++++++++++- 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 7f0b413bc..c171dfdfe 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -374,6 +374,16 @@ end: return ret; } +static void parse_env_options(void) +{ + char *value = NULL; + + value = lttng_secure_getenv(DEFAULT_LTTNG_RELAYD_WORKING_DIRECTORY_ENV); + if (value) { + opt_working_directory = value; + } +} + static int set_options(int argc, char **argv) { int c, ret = 0, option_index = 0, retval = 0; @@ -3156,7 +3166,13 @@ int main(int argc, char **argv) int ret = 0, retval = 0; void *status; - /* Parse arguments */ + /* Parse environment variables */ + parse_env_options(); + + /* + * Parse arguments. + * Command line arguments overwrite environment. + */ progname = argv[0]; if (set_options(argc, argv)) { retval = -1; diff --git a/src/common/defaults.h b/src/common/defaults.h index d88d7b1a6..efe7f3058 100644 --- a/src/common/defaults.h +++ b/src/common/defaults.h @@ -323,6 +323,8 @@ #define DEFAULT_LTTNG_RELAYD_TCP_KEEP_ALIVE_PROBE_INTERVAL_ENV "LTTNG_RELAYD_TCP_KEEP_ALIVE_PROBE_INTERVAL" #define DEFAULT_LTTNG_RELAYD_TCP_KEEP_ALIVE_ABORT_THRESHOLD_ENV "LTTNG_RELAYD_TCP_KEEP_ALIVE_ABORT_THRESHOLD" +#define DEFAULT_LTTNG_RELAYD_WORKING_DIRECTORY_ENV "LTTNG_RELAYD_WORKING_DIRECTORY" + /* * Returns the default subbuf size. * diff --git a/tests/regression/tools/working-directory/test_relayd_workding_directory b/tests/regression/tools/working-directory/test_relayd_workding_directory index 2422ea8c0..bf486893f 100755 --- a/tests/regression/tools/working-directory/test_relayd_workding_directory +++ b/tests/regression/tools/working-directory/test_relayd_workding_directory @@ -22,11 +22,10 @@ TESTDIR=$CURDIR/../../../ DIR=$(readlink -f $TESTDIR) -NUM_TESTS=22 +NUM_TESTS=28 source $TESTDIR/utils/utils.sh - #MUST set TESTDIR before calling those functions plan_tests $NUM_TESTS @@ -181,6 +180,42 @@ function test_relayd_failure() 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 @@ -189,6 +224,8 @@ TESTS=( 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[@]}; -- 2.34.1