]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
test: improve 113-leapsecond and 124-tai tests
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 7 Feb 2024 14:48:43 +0000 (15:48 +0100)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 8 Feb 2024 14:54:24 +0000 (15:54 +0100)
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
test/simulation/124-tai

index 394440b763197e69ac31efeeae2e333918327cbd..63da734db84a8851364967bfa4603ae8cd459c98 100755 (executable)
@@ -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
index 97064f7c8b2d999ac2cffa4c8283d84ec9087090..0192e10f4f09b6dfc0367008ce450b74f288ec96 100755 (executable)
@@ -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"