summaryrefslogtreecommitdiffstats
path: root/test/simulation/106-refclock
blob: f09f170a5be1a5cd82d299a521f5ed02d6bd480b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/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

export CLKNETSIM_PHC_DELAY=1e-6
export CLKNETSIM_PHC_JITTER=1e-7

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" "PHC /dev/ptp0:nocrossts"; 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

	if echo "$refclock" | grep -q 'PHC.*nocrossts'; then
		check_file_messages "20.* GPS.*[0-9] N " 650 750 refclocks.log || test_fail
	else
		check_file_messages "20.* GPS.*[0-9] N " 997 1001 refclocks.log || test_fail
	fi
	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

refclock_offset="(+ 0.399 (sum 1e-3))"
refclock_jitter=1e-6
servers=1
freq_offset="(* 1e-4 (sine 1000))"
base_delay="(* -1.0 (equal 0.1 (min time 5000) 5000))"
client_server_options="minpoll 4 maxpoll 4 filter 5 minsamples 64"
client_conf="
refclock PHC /dev/ptp0 local poll 2
logdir tmp
log refclocks tracking"
chronyc_conf=""
limit=10000
max_sync_time=5000
time_max_limit=1e-3
time_rms_limit=5e-4
freq_max_limit=2e-5
freq_rms_limit=5e-6

run_test || test_fail
check_chronyd_exit || test_fail
check_sync || test_fail

check_file_messages "20.* PHC0 .* [0-9] ? " 9999 10001 refclocks.log || test_fail
check_file_messages "20.* PHC0 .* - ? " 2499 2501 refclocks.log || test_fail
check_file_messages "20.* PHC0 " 0 0 tracking.log || test_fail
rm -f tmp/refclocks.log tmp/tracking.log

test_pass