mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 08:25:20 +09:00
timer: add unit tests for DeferReactivation
Create a unit test for systemd timer DeferReactivation config option. The test works by creating a timer which fires every 5 seconds and starts an unit which runs for 5 seconds. With DeferReactivation=true, the timer must fire every 5+5 seconds, instead of the 5 it fires normally. As we need at least two timer runs to check if the delta is correct, the test duration on success will be at least 20 seconds. To be safe, the test script waits 35 seconds: this is enough to get at least three runs but low enough to avoid clogging the CI.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
[Unit]
|
||||
Description=Testing systemd timers
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=sh -c 'date +%%s >>/tmp/realtime-test.log ; sleep 5'
|
||||
@@ -0,0 +1,10 @@
|
||||
[Unit]
|
||||
Description=Testing systemd timers
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*:*:0/5
|
||||
AccuracySec=1us
|
||||
DeferReactivation=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -7,3 +7,5 @@ integration_tests += [
|
||||
'vm' : true,
|
||||
},
|
||||
]
|
||||
|
||||
testdata_subdirs += [meson.current_source_dir() / 'TEST-74-AUX-UTILS.units']
|
||||
|
||||
23
test/units/TEST-74-AUX-UTILS.defer_reactivation.sh
Executable file
23
test/units/TEST-74-AUX-UTILS.defer_reactivation.sh
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
systemctl start realtime-test.timer
|
||||
|
||||
sleep 35
|
||||
mindelta=10
|
||||
|
||||
last=
|
||||
while read -r time; do
|
||||
if [ -n "$last" ]; then
|
||||
delta=$((time - last))
|
||||
if [ "$delta" -lt $mindelta ]; then
|
||||
echo "Timer fired too early: $delta < $mindelta" >/failed
|
||||
break
|
||||
fi
|
||||
fi
|
||||
last=$time
|
||||
done </tmp/realtime-test.log
|
||||
|
||||
test ! -s /failed
|
||||
Reference in New Issue
Block a user