| #!/usr/bin/env bash |
| |
| . ./test.common |
| |
| test_start "chronyc" |
| |
| check_config_h 'FEAT_REFCLOCK 1' || test_skip |
| check_config_h 'FEAT_CMDMON 1' || test_skip |
| |
| refclock_jitter=$jitter |
| client_server_conf=" |
| server node1.net1.clk |
| server 192.168.123.2" |
| client_conf=" |
| refclock SHM 0 noselect |
| smoothtime 400 0.001 leaponly" |
| cmdmon_unix=0 |
| |
| chronyc_conf="activity |
| tracking |
| sourcename 192.168.123.1 |
| sourcename 192.168.123.2 |
| sources |
| sourcestats |
| manual list |
| smoothing |
| waitsync |
| rtcdata" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^200 OK |
| 2 sources online |
| 0 sources offline |
| 0 sources doing burst \(return to online\) |
| 0 sources doing burst \(return to offline\) |
| 0 sources with unknown address |
| Reference ID : C0A87B01 \(192\.168\.123\.1\) |
| Stratum : 2 |
| Ref time \(UTC\) : Fri Jan 01 00:1.:.. 2010 |
| System time : 0\.0000..... seconds (slow|fast) of NTP time |
| Last offset : [+-]0\.000...... seconds |
| RMS offset : 0\.000...... seconds |
| Frequency : (99|100)\.... ppm fast |
| Residual freq : [+-][0-9]\.... ppm |
| Skew : [0-9]\.... ppm |
| Root delay : 0\.000...... seconds |
| Root dispersion : 0\.000...... seconds |
| Update interval : [0-9]+\.. seconds |
| Leap status : Normal |
| node1\.net1\.clk |
| 192\.168\.123\.2 |
| MS Name/IP address Stratum Poll Reach LastRx Last sample |
| =============================================================================== |
| #\? SHM0 0 4 377 [0-9]+ [0-9 +-]+[un]s\[[0-9 +-]+[un]s\] \+/-[ 0-9]+[un]s |
| \^\* 192\.168\.123\.1 1 [67] 377 [0-9]+ [0-9 +-]+[un]s\[[0-9 +-]+[un]s\] \+/-[ 0-9]+[un]s |
| \^\? 192\.168\.123\.2 0 [0-9]+ 0 - \+0ns\[ \+0ns\] \+/- 0ns |
| Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev |
| ============================================================================== |
| SHM0 [0-9 ]+ [0-9 ]+ [0-9 ]+ [ +-][01]\.... [0-9 ]+\.... [0-9 +-]+[un]s [0-9 ]+[un]s |
| 192\.168\.123\.1 [0-9 ]+ [0-9 ]+ [0-9 ]+ [ +-][01]\.... [0-9 ]+\.... [0-9 +-]+[un]s [0-9 ]+[un]s |
| 192\.168\.123\.2 0 0 0 \+0\.000 2000\.000 \+0ns 4000ms |
| 210 n_samples = 0 |
| # Date Time\(UTC\) Slewed Original Residual |
| ======================================================= |
| Active : Yes \(leap second only\) |
| Offset : \+0\.000000000 seconds |
| Frequency : \+0\.000000 ppm |
| Wander : \+0\.000000 ppm per second |
| Last update : [0-9]+\.. seconds ago |
| Remaining time : 0\.0 seconds |
| try: 1, refid: C0A87B01, correction: 0\.000......, skew: .\.... |
| 513 RTC driver not running$" \ |
| || test_fail |
| |
| chronyc_conf="tracking" |
| dns=1 |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^Reference ID : C0A87B01 \(node1\.net1\.clk\)" \ |
| || test_fail |
| |
| chronyc_options="-c" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^C0A87B01,192\.168\.123\.1,2,12623049..\..........,-?0\.0000.....,-?0\.000......,0\.000......,(99|100)\....,-?[0-9]\....,[0-9]\....,0\.000......,0\.000......,[0-9]+\..,Normal$" \ |
| || test_fail |
| |
| chronyc_options="" |
| server_strata=0 |
| chronyc_start=0.5 |
| client_server_conf="" |
| client_conf="" |
| server_conf="server 192.168.123.1" |
| limit=1 |
| |
| for chronyc_conf in \ |
| "accheck 1.2.3.4" \ |
| "add peer 10.0.0.0 minpoll 2 maxpoll 6" \ |
| "add server 10.0.0.0 minpoll 6 maxpoll 10 iburst burst key 1 certset 2 maxdelay 1e-3 maxdelayratio 10.0 maxdelaydevratio 10.0 mindelay 1e-4 asymmetry 0.5 offset 1e-5 minsamples 6 maxsamples 6 filter 3 offline auto_offline prefer noselect trust require xleave polltarget 20 port 123 presend 7 minstratum 3 version 4 nts ntsport 4460 copy extfield F323" \ |
| "add server node1.net1.clk" \ |
| "allow 1.2.3.4" \ |
| "allow 1.2" \ |
| "allow 3.4.5" \ |
| "allow 6.7.8/22" \ |
| "allow 6.7.8.9/22" \ |
| "allow 0/0" \ |
| "allow" \ |
| "allow all 10/24" \ |
| "authdata" \ |
| "burst 5/10" \ |
| "burst 3/5 255.255.255.0/1.2.3.0" \ |
| "burst 1/2 1.2.3.0/24" \ |
| "clients" \ |
| "clients -k" \ |
| "clients -p 100" \ |
| "clients -r" \ |
| "cmdaccheck 1.2.3.4" \ |
| "cmdallow 1.2.3.4" \ |
| "cmdallow all 1.2.3.0/24" \ |
| "cmddeny 1.2.3.4" \ |
| "cmddeny all 1.2.3.0/24" \ |
| "cyclelogs" \ |
| "delete 10.0.0.0" \ |
| "delete ID#0000000001" \ |
| "deny 1.2.3.4" \ |
| "deny all 1.2.3.0/24" \ |
| "dfreq 1.0e-3" \ |
| "doffset -1.0" \ |
| "dump" \ |
| "local stratum 5 distance 1.0 orphan" \ |
| "local off" \ |
| "makestep 10.0 3" \ |
| "makestep" \ |
| "manual delete 0" \ |
| "manual off" \ |
| "manual on" \ |
| "manual reset" \ |
| "maxdelay 1.2.3.4 1e-2" \ |
| "maxdelaydevratio 1.2.3.4 5.0" \ |
| "maxdelayratio 1.2.3.4 3.0" \ |
| "maxpoll 1.2.3.4 5" \ |
| "maxupdateskew 1.2.3.4 10.0" \ |
| "minpoll 1.2.3.4 3" \ |
| "minstratum 1.2.3.4 1" \ |
| "minstratum ID#0000000001 1" \ |
| "ntpdata 1.2.3.4" \ |
| "offline" \ |
| "offline 255.255.255.0/1.2.3.0" \ |
| "offline 1.2.3.0/24" \ |
| "online" \ |
| "online 1.2.3.0/24" \ |
| "onoffline" \ |
| "polltarget 1.2.3.4 10" \ |
| "refresh" \ |
| "rekey" \ |
| "reload sources" \ |
| "reselect" \ |
| "reselectdist 1e-3" \ |
| "reset sources" \ |
| "selectdata" \ |
| "settime 16:30" \ |
| "settime 16:30:05" \ |
| "settime Nov 21, 2015 16:30:05" \ |
| "serverstats" \ |
| "shutdown" \ |
| "smoothtime reset" \ |
| "smoothtime activate" \ |
| "trimrtc" \ |
| "writertc" |
| do |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| check_chronyc_output "501 Not authorised$" || test_fail |
| done |
| |
| cmdmon_unix=1 |
| |
| chronyc_conf=" |
| authdata |
| clients -k -p 2 |
| clients -r |
| clients |
| ntpdata |
| selectdata |
| serverstats" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen |
| ========================================================================= |
| node1\.net1\.clk - 0 0 0 - 0 0 0 0 |
| Hostname NTP Drop Int IntL Last NTS-KE Drop Int Last |
| =============================================================================== |
| Hostname NTP Drop Int IntL Last Cmd Drop Int Last |
| =============================================================================== |
| node1\.net1\.clk 1 0 - - 0 0 0 - - |
| Hostname NTP Drop Int IntL Last Cmd Drop Int Last |
| =============================================================================== |
| node1\.net1\.clk 0 0 - - 0 0 0 - - |
| |
| Remote address : 192\.168\.123\.1 \(C0A87B01\) |
| Remote port : 123 |
| Local address : 192\.168\.123\.1 \(C0A87B01\) |
| Leap status : Normal |
| Version : 4 |
| Mode : Server |
| Stratum : 1 |
| Poll interval : 6 \(64 seconds\) |
| Precision : -23 \(0\.000000119 seconds\) |
| Root delay : 0\.000000 seconds |
| Root dispersion : 0\.000000 seconds |
| Reference ID : 7F7F0101 \(\) |
| Reference time : Thu Dec 31 23:59:5[89] 2009 |
| Offset : [-+]0\.000...... seconds |
| Peer delay : 0\.00....... seconds |
| Peer dispersion : 0\.00000.... seconds |
| Response time : 0\.000000... seconds |
| Jitter asymmetry: \+0\.00 |
| NTP tests : 111 111 1110 |
| Interleaved : No |
| Authenticated : No |
| TX timestamping : Kernel |
| RX timestamping : Kernel |
| Total TX : 1 |
| Total RX : 1 |
| Total valid RX : 1 |
| S Name/IP Address Auth COpts EOpts Last Score Interval Leap |
| ======================================================================= |
| M node1\.net1\.clk N ----- ----- 0 1\.0 \+0ns \+0ns N |
| NTP packets received : 1 |
| NTP packets dropped : 0 |
| Command packets received : 12 |
| Command packets dropped : 0 |
| Client log records dropped : 0 |
| NTS-KE connections accepted: 0 |
| NTS-KE connections dropped : 0 |
| Authenticated NTP packets : 0 |
| Interleaved NTP packets : 0 |
| NTP timestamps held : 0 |
| NTP timestamp span : 0$" || test_fail |
| |
| chronyc_conf=" |
| deny all |
| cmdallow all |
| allow 1.2.3.4 |
| allow 1.2.3.0/28 |
| deny 1.2.3.0/27 |
| allow 1.2.4.5 |
| deny all 1.2.4.0/27 |
| cmddeny 5.6.7.8 |
| cmdallow all 5.6.7.0/28 |
| accheck 1.2.3.4 |
| accheck 1.2.3.5 |
| accheck 1.2.4.5 |
| cmdaccheck 5.6.7.8" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 208 Access allowed |
| 209 Access denied |
| 209 Access denied |
| 208 Access allowed$" || test_fail |
| |
| if check_config_h 'FEAT_IPV6 1'; then |
| chronyc_conf=" |
| deny all |
| cmdallow all |
| allow 2001:db8::1 |
| allow 2001:db8::/64 |
| deny 2001:db8::/63 |
| allow 2001:db8:1::1 |
| deny all 2001:db8:1::/63 |
| cmddeny 2001:db9::1 |
| cmdallow all 2001:db9::/64 |
| accheck 2001:db8::1 |
| accheck 2001:db8::2 |
| accheck 2001:db8:1::1 |
| cmdaccheck 2001:db9::1" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 208 Access allowed |
| 209 Access denied |
| 209 Access denied |
| 208 Access allowed$" || test_fail |
| fi |
| |
| chronyc_conf=" |
| delete 192.168.123.1 |
| add server node1.net1.clk minpoll 6 maxpoll 10 iburst |
| offline 192.168.123.1 |
| burst 1/1 192.168.123.1 |
| online 192.168.123.1 |
| maxdelay 192.168.123.1 1e-2 |
| maxdelaydevratio 192.168.123.1 5.0 |
| maxdelayratio 192.168.123.1 3.0 |
| maxpoll 192.168.123.1 5 |
| maxupdateskew 192.168.123.1 10.0 |
| minpoll 192.168.123.1 3 |
| minstratum 192.168.123.1 1 |
| polltarget 192.168.123.1 10 |
| delete 192.168.123.1" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK$" || test_fail |
| |
| chronyc_conf=" |
| cyclelogs |
| dump |
| dfreq 1.0e-3 |
| doffset -0.01 |
| local stratum 5 distance 1.0 orphan |
| local off |
| makestep 10.0 3 |
| makestep |
| manual on |
| settime now |
| manual delete 0 |
| manual reset |
| manual off |
| onoffline |
| refresh |
| rekey |
| reload sources |
| reselect |
| reselectdist 1e-3 |
| reset sources |
| shutdown" |
| |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| |
| check_chronyc_output "^200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| Clock was .\... seconds fast. Frequency change = 0.00ppm, new frequency = 0.00ppm |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK |
| 200 OK$" || test_fail |
| |
| server_conf=" |
| server 192.168.123.1 |
| noclientlog" |
| |
| commands=( |
| "add server nosuchnode.net1.clk" "^Invalid host/IP address$" |
| "allow nosuchnode.net1.clk" "^Could not read address$" |
| "allow 192.168.123.0/2 4" "^Could not read address$" |
| "allow 192.168.123.0/2e" "^Could not read address$" |
| "allow 192.168.12e" "^Could not read address$" |
| "allow 192.168123" "^Could not read address$" |
| "allow 192.168.123.2/33" "^507 Bad subnet$" |
| "clients" "Hostname.*519 Client logging is not active in the daemon$" |
| "delete 192.168.123.2" "^503 No such source$" |
| "minpoll 192.168.123.2 5" "^503 No such source$" |
| "ntpdata 192.168.123.2" "^503 No such source$" |
| "settime now" "^505 Facility not enabled in daemon$" |
| "smoothing" "^505 Facility not enabled in daemon$" |
| "smoothtime activate" "^505 Facility not enabled in daemon$" |
| "smoothtime reset" "^505 Facility not enabled in daemon$" |
| "sourcename 192.168.123.2" "^503 No such source$" |
| "trimrtc" "^513 RTC driver not running$" |
| "writertc" "^513 RTC driver not running$" |
| ) |
| |
| for i in $(seq 0 $[${#commands[*]} / 2]); do |
| chronyc_conf=${commands[$[i * 2]]} |
| run_test || test_fail |
| check_chronyd_exit || test_fail |
| check_chronyc_output "${commands[$[i * 2 + 1]]}" || test_fail |
| done |
| |
| cmdmon_unix=0 |
| server_conf="server 192.168.123.1" |
| |
| chronyc_conf="dns -n |
| dns +n |
| dns -4 |
| dns -6 |
| dns -46 |
| timeout 200 |
| retries 1 |
| keygen |
| keygen 10 MD5 128 |
| keygen 11 MD5 40 |
| help |
| quit |
| nosuchcommand" |
| |
| run_test || test_fail |
| |
| check_chronyc_output "^1 (MD5|SHA1) HEX:........................................ |
| 10 MD5 HEX:................................ |
| 11 MD5 HEX:.................... |
| System clock:.*this help |
| *$" || test_fail |
| |
| chronyc_conf="keygen 10 NOSUCHTYPE 128 |
| help" |
| run_test || test_fail |
| check_chronyc_output "^Unknown hash function or cipher NOSUCHTYPE\$" || test_fail |
| |
| if check_config_h 'FEAT_SECHASH 1'; then |
| for hash in MD5 SHA1 SHA256 SHA384 SHA512; do |
| chronyc_conf="keygen 5 $hash" |
| run_test || test_fail |
| check_chronyc_output "^5 $hash HEX:........................................\$" || test_fail |
| done |
| fi |
| |
| if check_config_h 'HAVE_CMAC 1'; then |
| chronyc_conf="keygen 6 AES128 |
| keygen 7 AES256" |
| run_test || test_fail |
| check_chronyc_output "^6 AES128 HEX:................................ |
| 7 AES256 HEX:................................................................\$" || test_fail |
| fi |
| |
| # Pass every fourth request |
| base_delay=$(cat <<-EOF | tr -d '\n' |
| (+ 1e-4 |
| (* -1 |
| (equal 0.1 from 2) |
| (equal 0.1 (min (% (sum 1) 4) 1) 1))) |
| EOF |
| ) |
| limit=15 |
| |
| chronyc_conf="sources" |
| run_test || test_fail |
| check_chronyc_output "^506 Cannot talk to daemon$" || test_fail |
| |
| chronyc_conf="retries 3 |
| sources" |
| run_test || test_fail |
| check_chronyc_output "^MS.*0ns$" || test_fail |
| |
| test_pass |