chrony/test/simulation
Miroslav Lichvar 14b8df3702 clientlog: separate NTP timestamps from IP addresses
Instead of keeping one pair of RX and TX timestamp for each address, add
a separate RX->TX map using an ordered circular buffer. Save the RX
timestamps as 64-bit integers and search them with a combined linear
interpolation and binary algorithm.

This enables the server to support multiple interleaved clients sharing
the same IP address (e.g. NAT) and it will allow other improvements to
be implemented later. A drawback is that a single broken client sending
interleaved requests at a high rate (without spoofing the source
address) can now prevent clients on other addresses from getting
interleaved responses.

The total number of saved timestamps does not change. It's still
determined by the clientloglimit directive. A new option may be added
later if needed. The whole buffer is allocated at once, but only on
first use to not waste memory on client-only configurations.
2021-10-14 16:42:20 +02:00
..
001-defaults test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
002-largenetwork test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
003-largefreqoffset test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
004-largetimeoffset test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
005-externalstep test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
006-largejitter test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
007-largewander test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
008-ntpera test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
009-sourceselection test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
010-multrecv test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
011-asymjitter test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
012-daemonts test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
013-nameserv test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
101-poll test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
102-iburst test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
103-initstepslew test: extend 103-initstepslew test 2021-04-07 16:55:38 +02:00
104-driftfile test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
105-ntpauth test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
106-refclock test: extend 106-refclock test 2021-04-22 10:20:31 +02:00
107-allowdeny test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
108-peer test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
109-makestep test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
110-chronyc client: replace allow/deny parser 2021-09-23 15:50:05 +02:00
111-knownclient test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
112-port test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
113-leapsecond test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
114-presend test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
115-cmdmontime test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
116-minsources test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
117-fallbackdrift test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
118-maxdelay test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
119-smoothtime test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
120-selectoptions test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
121-orphan test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
122-xleave clientlog: separate NTP timestamps from IP addresses 2021-10-14 16:42:20 +02:00
123-mindelay test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
124-tai test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
125-packetloss test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
126-burst test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
127-filter test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
128-nocontrol test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
129-reload test: extend 129-reload test 2021-04-22 10:20:31 +02:00
130-quit test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
131-maxchange test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
132-logchange test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
133-hwtimestamp test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
134-log test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
135-ratelimit test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
136-broadcast test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
137-pool test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
138-syncloop test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
139-nts test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
140-noclientlog test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
141-copy ntp: add copy option 2021-04-15 15:17:13 +02:00
142-ptpport test: add 142-ptpport test 2021-08-19 14:51:42 +02:00
143-manual test: add 143-manual test 2021-09-23 14:48:59 +02:00
201-freqaccumulation test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
202-prefer test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
README test: don't download files in tests 2016-02-05 15:20:40 +01:00
run test: use env shebang in all bash scripts 2021-03-04 12:36:36 +01:00
test.common test: enable chronyc to use Unix domain socket 2021-09-23 14:48:59 +02:00

This is a collection of simulation tests using the clknetsim simulator
(supported on Linux only).

https://github.com/mlichvar/clknetsim

The CLKNETSIM_PATH environment variable should point to the directory where
clknetsim was downloaded and compiled. If the variable is not set, the tests
will look for clknetsim in ./clknetsim in the current directory.

The tests are written in bash and they can be run directly. The ./run script
runs all tests.