return ret;
}
+static int parse_env_options(void)
+{
+ int ret = 0;
+ char *value = NULL;
+
+ value = lttng_secure_getenv(DEFAULT_LTTNG_RELAYD_WORKING_DIRECTORY_ENV);
+ if (value) {
+ opt_working_directory = strdup(value);
+ if (!opt_working_directory) {
+ ERR("Failed to allocate working directory string (\"%s\")",
+ value);
+ ret = -1;
+ }
+ }
+ return ret;
+}
+
static int set_options(int argc, char **argv)
{
int c, ret = 0, option_index = 0, retval = 0;
int ret = 0, retval = 0;
void *status;
- /* Parse arguments */
+ /* Parse environment variables */
+ ret = parse_env_options();
+ if (ret) {
+ retval = -1;
+ goto exit_options;
+ }
+
+ /*
+ * Parse arguments.
+ * Command line arguments overwrite environment.
+ */
progname = argv[0];
if (set_options(argc, argv)) {
retval = -1;
#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"
+
/*
* Name of the intermediate directory used to rename the trace chunk of a
* session's first rotation.
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
rm -rf "$working_dir"
}
+function test_relayd_env()
+{
+ 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" ""
+
+ 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=$(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}"
+
+ 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[@]}";