When an NTP source is specified with the offset option, the corrected offset may get outside of the supported NTP interval (by default -50..86 years around the build date). If the source passed the source selection, the offset would be rejected only later in the adjustment of the local clock. Check the offset validity as part of the NTP test A to make the source unselectable and make it visible in the measurements log and ntpdata report.
49 lines
1.5 KiB
Bash
Executable file
49 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
. ./test.common
|
|
test_start "NTP eras"
|
|
|
|
if check_config_h 'HAVE_LONG_TIME_T 1'; then
|
|
ntp_start=$(awk "BEGIN {print $(grep NTP_ERA_SPLIT ../../config.h | tr -dc '0-9*+-')}")
|
|
else
|
|
ntp_start="-2147483648"
|
|
fi
|
|
|
|
# Set the starting test date to 500 seconds before the second NTP era.
|
|
# This should work with 32-bit time_t and also with 64-bit time_t if the
|
|
# configured NTP interval covers the test interval.
|
|
export CLKNETSIM_START_DATE=$(date -d 'Feb 7 06:19:56 UTC 2036' +'%s')
|
|
|
|
if awk "BEGIN {exit !($ntp_start <= $CLKNETSIM_START_DATE && \
|
|
$CLKNETSIM_START_DATE + $limit < $ntp_start + 2^32)}"; then
|
|
run_test || test_fail
|
|
check_chronyd_exit || test_fail
|
|
check_source_selection || test_fail
|
|
check_packet_interval || test_fail
|
|
check_sync || test_fail
|
|
fi
|
|
|
|
# The following tests need 64-bit time_t and ntp_start not before 1970
|
|
check_config_h 'HAVE_LONG_TIME_T 1' || test_skip
|
|
echo "$ntp_start" | grep -q '-' && test_skip
|
|
|
|
for time_offset in -1e-1 1e-1; do
|
|
for start_offset in 0 "2^32 - $limit"; do
|
|
export CLKNETSIM_START_DATE=$(awk "BEGIN {printf \"%.0f\", $ntp_start + $start_offset}")
|
|
run_test || test_fail
|
|
check_chronyd_exit || test_fail
|
|
check_source_selection || test_fail
|
|
check_packet_interval || test_fail
|
|
check_sync || test_fail
|
|
done
|
|
|
|
for start_offset in -$limit "2^32"; do
|
|
export CLKNETSIM_START_DATE=$(awk "BEGIN {printf \"%.0f\", $ntp_start + $start_offset}")
|
|
run_test || test_fail
|
|
check_chronyd_exit || test_fail
|
|
check_packet_interval || test_fail
|
|
check_sync && test_fail
|
|
done
|
|
done
|
|
|
|
test_pass
|