blob: 7293e52af0b4ad771636df10dfd843814404b8c9 [file] [log] [blame]
Daniel Wagner58b83172019-07-22 20:39:04 +02001#!/bin/sh -e
2# shellcheck disable=SC1090
3# shellcheck disable=SC2154
4# sigwaittest starts two threads or, optionally, forks two processes that
5# are synchronized via signals and measures the latency between sending
6# a signal and returning from sigwait()
7
8TEST_DIR=$(dirname "$(realpath "$0")")
9OUTPUT="${TEST_DIR}/output"
10LOGFILE="${OUTPUT}/sigwaittest.log"
11RESULT_FILE="${OUTPUT}/result.txt"
12DURATION="5m"
13MAX_LATENCY="100"
Daniel Wagner2d8a3232019-07-31 17:11:26 +020014BACKGROUND_CMD=""
Daniel Wagner58b83172019-07-22 20:39:04 +020015
16usage() {
Daniel Wagner2d8a3232019-07-31 17:11:26 +020017 echo "Usage: $0 [-D duration] [-m latency] [-w background_cmd]" 1>&2
Daniel Wagner58b83172019-07-22 20:39:04 +020018 exit 1
19}
20
Daniel Wagner2d8a3232019-07-31 17:11:26 +020021while getopts ":D:m:w:" opt; do
Daniel Wagner58b83172019-07-22 20:39:04 +020022 case "${opt}" in
23 D) DURATION="${OPTARG}" ;;
24 m) MAX_LATENCY="${OPTARG}" ;;
Daniel Wagner2d8a3232019-07-31 17:11:26 +020025 w) BACKGROUND_CMD="${OPTARG}" ;;
Daniel Wagner58b83172019-07-22 20:39:04 +020026 *) usage ;;
27 esac
28done
29
30. "${TEST_DIR}/../../lib/sh-test-lib"
31
32! check_root && error_msg "Please run this script as root."
33create_out_dir "${OUTPUT}"
34
35# Run sigwaittest.
36if ! binary=$(command -v sigwaittest); then
37 detect_abi
38 # shellcheck disable=SC2154
39 binary="./bin/${abi}/sigwaittest"
40fi
41
Daniel Wagner2d8a3232019-07-31 17:11:26 +020042background_process_start bgcmd --cmd "${BACKGROUND_CMD}"
43
Daniel Wagner58b83172019-07-22 20:39:04 +020044"${binary}" -t -a -p 98 -D "${DURATION}" | tee "${LOGFILE}"
45
Daniel Wagner2d8a3232019-07-31 17:11:26 +020046background_process_stop bgcmd
47
Daniel Wagner58b83172019-07-22 20:39:04 +020048# Parse test log.
49../../lib/parse_rt_tests_results.py sigwaittest "${LOGFILE}" "${MAX_LATENCY}" \
50 | tee -a "${RESULT_FILE}"