mirror of
https://github.com/CISOfy/lynis.git
synced 2025-07-24 22:34:33 +02:00
Add timing measurement of individual tests and report them
This commit is contained in:
parent
7506fd4af8
commit
c31c6a5a9e
@ -86,6 +86,7 @@ unset LANG
|
|||||||
CONTAINER_TYPE=""
|
CONTAINER_TYPE=""
|
||||||
CREATE_REPORT_FILE=1
|
CREATE_REPORT_FILE=1
|
||||||
CSUMBINARY=""
|
CSUMBINARY=""
|
||||||
|
CURRENT_TS=0
|
||||||
CUSTOM_URL_APPEND=""
|
CUSTOM_URL_APPEND=""
|
||||||
CUSTOM_URL_PREPEND=""
|
CUSTOM_URL_PREPEND=""
|
||||||
CUSTOM_URL_PROTOCOL=""
|
CUSTOM_URL_PROTOCOL=""
|
||||||
@ -216,6 +217,8 @@ unset LANG
|
|||||||
PLUGIN_PHASE=0
|
PLUGIN_PHASE=0
|
||||||
POSTFIXBINARY=""
|
POSTFIXBINARY=""
|
||||||
POSTGRES_RUNNING=0
|
POSTGRES_RUNNING=0
|
||||||
|
PREVIOUS_TEST="No test ID"
|
||||||
|
PREVIOUS_TS=0
|
||||||
PRIVILEGED=0
|
PRIVILEGED=0
|
||||||
PROFILES=""
|
PROFILES=""
|
||||||
PROFILEVALUE=""
|
PROFILEVALUE=""
|
||||||
|
@ -2187,6 +2187,19 @@
|
|||||||
# Returns : SKIPTEST (0 or 1)
|
# Returns : SKIPTEST (0 or 1)
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
GetTimestamp() {
|
||||||
|
ts=0
|
||||||
|
case "${OS}" in
|
||||||
|
"Linux")
|
||||||
|
ts=$(date "+%s%N")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ts=$(date "+%s")
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo $ts
|
||||||
|
}
|
||||||
|
|
||||||
Register() {
|
Register() {
|
||||||
# Do not insert a log break, if previous test was not logged
|
# Do not insert a log break, if previous test was not logged
|
||||||
if [ ${SKIPLOGTEST} -eq 0 ]; then LogTextBreak; fi
|
if [ ${SKIPLOGTEST} -eq 0 ]; then LogTextBreak; fi
|
||||||
@ -2254,6 +2267,35 @@
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Measure timing
|
||||||
|
CURRENT_TS=$(GetTimestamp)
|
||||||
|
if [ ${PREVIOUS_TS} -gt 0 ]; then
|
||||||
|
SLOW_TEST=0
|
||||||
|
TIME_THRESHOLD=10 # seconds
|
||||||
|
|
||||||
|
# Calculate timing and determine if we use seconds or nanoseconds (more precise)
|
||||||
|
TIME_DIFF=$((${CURRENT_TS} - ${PREVIOUS_TS}))
|
||||||
|
if [ ${CURRENT_TS} -gt 1000000000000000000 ]; then
|
||||||
|
TIME_DIFF_FORMAT="nanoseconds"
|
||||||
|
TIME_THRESHOLD=$((${TIME_THRESHOLD} * 1000000000))
|
||||||
|
if [ ${TIME_DIFF} -gt ${TIME_THRESHOLD} ]; then
|
||||||
|
SLOW_TEST=1
|
||||||
|
# Convert back to seconds for readability
|
||||||
|
TIME_DIFF_FORMAT="seconds"
|
||||||
|
TIME_DIFF=$(echo ${TIME_DIFF} | ${AWKBINARY} '{printf "%f",$1/1000000000}')
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
TIME_DIFF_FORMAT="seconds"
|
||||||
|
if [ ${TIME_DIFF} -gt ${TIME_THRESHOLD} ]; then
|
||||||
|
SLOW_TEST=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ ${SLOW_TEST} -eq 1 ]; then
|
||||||
|
DisplayWarning "Test ${PREVIOUS_TEST} had a long execution: ${TIME_DIFF} ${TIME_DIFF_FORMAT}"
|
||||||
|
Report "slow_test[]=${PREVIOUS_TEST},${TIME_DIFF}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Skip test if it's configured in profile (old style)
|
# Skip test if it's configured in profile (old style)
|
||||||
if [ ${SKIPTEST} -eq 0 ]; then
|
if [ ${SKIPTEST} -eq 0 ]; then
|
||||||
FIND=$(echo "${TEST_SKIP_ALWAYS}" | grep "${TEST_NO}" | tr '[:lower:]' '[:upper:]')
|
FIND=$(echo "${TEST_SKIP_ALWAYS}" | grep "${TEST_NO}" | tr '[:lower:]' '[:upper:]')
|
||||||
@ -2326,6 +2368,10 @@
|
|||||||
TESTS_SKIPPED="${TEST_NO}|${TESTS_SKIPPED}"
|
TESTS_SKIPPED="${TEST_NO}|${TESTS_SKIPPED}"
|
||||||
fi
|
fi
|
||||||
unset SKIPREASON
|
unset SKIPREASON
|
||||||
|
|
||||||
|
# Save timestamp for next time the Register function is called
|
||||||
|
PREVIOUS_TEST="${TEST_NO}"
|
||||||
|
PREVIOUS_TS="${CURRENT_TS}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user