#!/usr/bin/env bash . ./test.common test_start "SHM refclock" check_config_h 'FEAT_REFCLOCK 1' || test_skip check_config_h 'FEAT_PHC 1' || test_skip check_config_h 'FEAT_CMDMON 1' || test_skip servers=0 limit=1000 refclock_jitter=$jitter min_sync_time=45 max_sync_time=70 chronyc_start=70 chronyc_conf="tracking" for refclock in "SHM 0" "PHC /dev/ptp0"; do client_conf="refclock $refclock stratum 3 delay 1e-3 refid GPS logdir tmp log refclocks" run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_sync || test_fail check_chronyc_output "^Reference ID.*47505300 \(GPS\) Stratum.*: 4 .* Root delay : 0.001000000 seconds .* Update interval : 16\.. seconds .*$" || test_fail check_file_messages "20.* GPS.*[0-9] N " 997 1001 refclocks.log || test_fail check_file_messages "20.* GPS.*- N " 61 63 refclocks.log || test_fail rm -f tmp/refclocks.log done if check_config_h 'FEAT_PPS 1'; then refclock_offset=0.35 refclock_jitter=0.05 client_conf=" refclock SHM 0 refid NMEA noselect refclock PPS /dev/pps0 lock NMEA logdir tmp log refclocks" run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_sync || test_fail check_chronyc_output "^Reference ID.*50505331 \(PPS1\) Stratum.*: 1 .* Root delay : 0\.000000001 seconds .*$" || test_fail check_file_messages "20.* PPS1.*[0-9] N " 620 740 refclocks.log || test_fail check_file_messages "20.* PPS1.*- N " 60 63 refclocks.log || test_fail rm -f tmp/refclocks.log client_conf=" refclock SHM 0 noselect refclock PPS /dev/pps0 local logdir tmp log refclocks" run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_sync || test_fail check_chronyc_output "^Reference ID.*50505331 \(PPS1\) Stratum.*: 10 .* Root delay : 0\.000000001 seconds .*$" || test_fail check_file_messages "20.* PPS1.*[0-9] N " 997 1001 refclocks.log || test_fail check_file_messages "20.* PPS1.*- N " 60 63 refclocks.log || test_fail rm -f tmp/refclocks.log min_sync_time=100 max_sync_time=220 chronyc_start=220 client_conf=" refclock SHM 0 refid NMEA offset 0.35 delay 0.1 refclock PPS /dev/pps0 logdir tmp log refclocks" run_test || test_fail check_chronyd_exit || test_fail check_source_selection || test_fail check_sync || test_fail check_chronyc_output "^Reference ID.*50505331 \(PPS1\) Stratum.*: 1 .* Root delay : 0\.000000001 seconds .*$" || test_fail check_file_messages "20.* PPS1.*[0-9] N " 800 940 refclocks.log || test_fail check_file_messages "20.* PPS1.*- N " 50 63 refclocks.log || test_fail rm -f tmp/refclocks.log fi test_pass