@@ -105,6 +105,7 @@ cd "$(dirname $0)"
105105
106106port=" $(( 10000 + (RANDOM % 10000 )) )"
107107tmpdir=$( mktemp -d /tmp/node_exporter_e2e_test.XXXXXX)
108+ unix_socket=" ${tmpdir} /node_exporter.socket"
108109
109110skip_re=" ^(go_|node_exporter_build_info|node_scrape_collector_duration_seconds|process_|node_textfile_mtime_seconds|node_time_(zone|seconds)|node_network_(receive|transmit)_(bytes|packets)_total)"
110111
@@ -127,8 +128,8 @@ case "${arch}" in
127128 ;;
128129esac
129130
130- extra_flags=" " ; keep=0; update=0; verbose=0
131- while getopts ' e:hkuv ' opt
131+ extra_flags=" " ; keep=0; update=0; verbose=0; socket=0
132+ while getopts ' e:hkuvs ' opt
132133do
133134 case " $opt " in
134135 e)
140141 u)
141142 update=1
142143 ;;
144+ s)
145+ socket=1
146+ ;;
143147 v)
144148 verbose=1
145149 set -x
146150 ;;
147151 * )
148- echo " Usage: $0 [-k] [-u] [-v]"
152+ echo " Usage: $0 [-k] [-u] [-v] [-s] "
149153 echo " -k: keep temporary files and leave node_exporter running"
150154 echo " -u: update fixture_metrics"
151155 echo " -v: verbose output"
156+ echo " -s: use unix socket"
152157 exit 1
153158 ;;
154159 esac
@@ -260,6 +265,13 @@ echo "IGNORED FLAGS============"
260265echo " ${ignored_flags: 1} " | tr ' ' ' \n' | sort | uniq
261266echo " ========================="
262267
268+ if [ ${socket} -ne 0 ]; then
269+ touch " ${unix_socket} "
270+ connection_params=" --web.socket-path=${unix_socket} "
271+ else
272+ connection_params=" --web.listen-address=127.0.0.1:${port} "
273+ fi
274+
263275./node_exporter \
264276 --path.rootfs=" collector/fixtures" \
265277 --path.procfs=" collector/fixtures/proc" \
@@ -268,7 +280,7 @@ echo "========================="
268280 $( for c in ${supported_enabled_collectors} ; do echo --collector.${c} ; done) \
269281 $( for c in ${supported_disabled_collectors} ; do echo --no-collector.${c} ; done) \
270282 ${filtered_collector_flags} \
271- --web.listen-address " 127.0.0.1: ${port} " \
283+ ${connection_params} \
272284 --log.level=" debug" > " ${tmpdir} /node_exporter.log" 2>&1 &
273285
274286echo $! > " ${tmpdir} /node_exporter.pid"
302314 # This silences the "Killed" message
303315 set +e
304316 wait " $( cat ${tmpdir} /node_exporter.pid) " > /dev/null 2>&1
317+ rc=0
318+ if [ ${socket} -ne 0 ]; then
319+ if ls -l " ${unix_socket} " & > /dev/null; then
320+ echo " Node exporter didn't remove the socket file after it exiting"
321+ rc=1
322+ fi
323+ fi
305324 rm -rf " ${tmpdir} "
325+ if [ $rc -ne 0 ]; then
326+ exit $rc
327+ fi
306328 fi
307329}
308330
@@ -323,7 +345,13 @@ get() {
323345
324346sleep 1
325347
326- get " 127.0.0.1:${port} /metrics" | grep --text -E -v " ${skip_re} " > " ${generated_metrics} "
348+ (
349+ if [ ${socket} -ne 0 ]; then
350+ curl -s -X GET --unix-socket " ${unix_socket} " http://localhost/metrics
351+ else
352+ get " 127.0.0.1:${port} /metrics"
353+ fi
354+ ) | grep --text -E -v " ${skip_re} " > " ${generated_metrics} "
327355
328356# The following ignore-list is only applicable to the VMs used to run E2E tests on platforms for which containerized environments are not available.
329357# However, owing to this, there are some non-deterministic metrics that end up generating samples, unlike their containerized counterparts, for e.g., node_network_receive_bytes_total.
0 commit comments