summaryrefslogtreecommitdiffstats
path: root/test/simulation/108-peer
blob: 906de170d0c7ec7ab25185d364093c42d1de2c0a (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
#!/usr/bin/env bash

. ./test.common

test_start "NTP peers"

# Allow and drop packets to the server in 1000 second intervals, so only one
# client has access to it and the other is forced to switch to the peer.
base_delay=$(cat <<-EOF | tr -d '\n'
  (+ 1e-4
     (* -1
        (equal 0.1 from 2)
        (equal 0.1 to 1)
        (equal 0.1 (min (% time 2000) 1000) 1000))
     (* -1
        (equal 0.1 from 3)
        (equal 0.1 to 1)
	(equal 0.1 (max (% time 2000) 1000) 1000)))
EOF
)

clients=2
peers=2
max_sync_time=1000
client_server_options="minpoll 6 maxpoll 6"
client_peer_options="minpoll 6 maxpoll 6"

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

base_delay="(+ 1e-4 (* -1 (equal 0.1 from 3) (equal 0.1 to 1)))"
client_peer_options=""

while read lminpoll lmaxpoll rminpoll rmaxpoll max_sync_time; do
	client_lpeer_options="minpoll $lminpoll maxpoll $lmaxpoll"
	client_rpeer_options="minpoll $rminpoll maxpoll $rmaxpoll"
	limit=$[$max_sync_time * 10]

	run_test || test_fail
	check_chronyd_exit || test_fail
	check_sync || test_fail
done <<-EOF
	3 6 3 6 400
	3 3 6 6 450
	6 6 3 3 450
	3 6 6 6 450
	6 6 3 6 450
	-2 -2 2 2 220
	2 2 -2 -2 220
EOF

test_pass