From 6cf9fe2f16fa49963e47e84f4a6dd9069735062e Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Wed, 7 Feb 2024 15:48:43 +0100 Subject: [PATCH] test: improve 113-leapsecond and 124-tai tests Use leapseclist instead of leapsectz and test also negative leap seconds. Add a test for leapsectz when the date command indicates right/UTC is available on the system and mktime() works as expected. Check TAI offset in the server's log. --- test/simulation/113-leapsecond | 88 +++++++++++++++++++++++----------- test/simulation/124-tai | 12 ++++- 2 files changed, 70 insertions(+), 30 deletions(-) diff --git a/test/simulation/113-leapsecond b/test/simulation/113-leapsecond index 394440b7..63da734d 100755 --- a/test/simulation/113-leapsecond +++ b/test/simulation/113-leapsecond @@ -8,54 +8,86 @@ check_config_h 'FEAT_REFCLOCK 1' || test_skip export CLKNETSIM_START_DATE=$(TZ=UTC date -d 'Dec 30 2008 0:00:00' +'%s') -leap=$[2 * 24 * 3600] limit=$[4 * 24 * 3600] client_start=$[2 * 3600] -server_conf="refclock SHM 0 dpoll 10 poll 10 -leapsectz right/UTC" refclock_jitter=1e-9 -refclock_offset="(* -1.0 (equal 0.1 (max (sum 1.0) $leap) $leap))" -for leapmode in system step slew; do - client_conf="leapsecmode $leapmode" - if [ $leapmode = slew ]; then - max_sync_time=$[$leap + 12] - else - max_sync_time=$[$leap] - fi +for dir in "+1" "-1"; do + leap=$[2 * 24 * 3600 + 1 + $dir] + server_conf="refclock SHM 0 dpoll 10 poll 10 + leapseclist tmp/leap.list" + refclock_offset="(* $dir (equal 0.1 (max (sum 1.0) $leap) $leap))" + + cat > tmp/leap.list <<-EOF + #$ 3676924800 + #@ 3928521600 + 3345062400 33 # 1 Jan 2006 + 3439756800 $[33 - $dir] # 1 Jan 2009 $( + [ "$dir" = "+1" ] && echo -e "\n3471292800 33\n3502828800 34") + 3550089600 35 # 1 Jul 2012 + EOF + + for leapmode in system step slew; do + client_conf="leapsecmode $leapmode" + if [ $leapmode = slew ]; then + max_sync_time=$[2 * 24 * 3600 + 13] + else + max_sync_time=$[2 * 24 * 3600 + 1] + fi + min_sync_time=$[$max_sync_time - 2] + + run_test || test_fail + check_chronyd_exit || test_fail + check_source_selection || test_fail + check_packet_interval || test_fail + check_sync || test_fail + check_file_messages "System clock TAI offset set to" 1 1 log.1 || test_fail + check_file_messages "System clock TAI offset set to 33" 1 1 log.1 || test_fail + done + + client_server_options="trust" + client_conf="refclock SHM 0 dpoll 10 poll 10 delay 1e-3" + min_sync_time=$[$leap - 2] + max_sync_time=$[$leap] run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_packet_interval || test_fail check_sync || test_fail -done -client_server_options="trust" -client_conf="refclock SHM 0 dpoll 10 poll 10 delay 1e-3" + client_server_options="" + client_conf="leapsecmode system" + min_sync_time=230000 + max_sync_time=240000 -run_test || test_fail -check_chronyd_exit || test_fail -check_source_selection || test_fail -check_packet_interval || test_fail -check_sync || test_fail + for smoothmode in "" "leaponly"; do + server_conf="refclock SHM 0 dpoll 10 poll 10 + leapseclist tmp/leap.list + leapsecmode slew + smoothtime 400 0.001 $smoothmode" -client_server_options="" -client_conf="leapsecmode system" -min_sync_time=230000 -max_sync_time=240000 + run_test || test_fail + check_chronyd_exit || test_fail + check_source_selection || test_fail + check_packet_interval || test_fail + check_sync || test_fail + done +done -for smoothmode in "" "leaponly"; do +if TZ=right/UTC date -d 'Dec 31 2008 23:59:60' 2> /dev/null | grep :60; then server_conf="refclock SHM 0 dpoll 10 poll 10 - leapsectz right/UTC - leapsecmode slew - smoothtime 400 0.001 $smoothmode" + leapsectz right/UTC" + refclock_offset="(* -1 (equal 0.1 (max (sum 1.0) $leap) $leap))" + client_conf="leapsecmode system" + min_sync_time=$[$leap - 2] + max_sync_time=$[$leap] run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_packet_interval || test_fail check_sync || test_fail -done +fi test_pass diff --git a/test/simulation/124-tai b/test/simulation/124-tai index 97064f7c..0192e10f 100755 --- a/test/simulation/124-tai +++ b/test/simulation/124-tai @@ -18,10 +18,18 @@ servers=0 refclock_offset="(+ -34 (equal 0.1 (max (sum 1.0) $leap) $leap))" client_conf=" refclock SHM 0 dpoll 0 poll 0 tai -leapsectz right/UTC +leapseclist tmp/leap.list leapsecmode ignore maxchange 1e-3 1 0" +cat > tmp/leap.list <<-EOF + #$ 3676924800 + #@ 3928521600 + 3345062400 33 # 1 Jan 2006 + 3439756800 34 # 1 Jan 2009 + 3550089600 35 # 1 Jul 2012 +EOF + run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail @@ -33,7 +41,7 @@ time_offset=-1000 refclock_offset="(+ -34)" client_conf=" refclock SHM 0 dpoll 0 poll 0 tai -leapsectz right/UTC +leapseclist tmp/leap.list makestep 1 1 maxchange 1e-3 1 0"