at 25.11-pre 2.1 kB view raw
1import ./make-test-python.nix ( 2 { lib, ... }: 3 { 4 name = "ntpd-rs"; 5 6 meta = { 7 maintainers = with lib.maintainers; [ fpletz ]; 8 }; 9 10 nodes = { 11 client = { 12 services.ntpd-rs = { 13 enable = true; 14 metrics.enable = false; 15 useNetworkingTimeServers = false; 16 settings = { 17 source = [ 18 { 19 mode = "server"; 20 address = "server"; 21 } 22 ]; 23 synchronization = { 24 minimum-agreeing-sources = 1; 25 }; 26 }; 27 }; 28 }; 29 server = { 30 networking.firewall = { 31 allowedTCPPorts = [ 32 9975 33 ]; 34 allowedUDPPorts = [ 35 123 36 ]; 37 }; 38 39 services.ntpd-rs = { 40 enable = true; 41 metrics.enable = true; 42 settings = { 43 observability = { 44 metrics-exporter-listen = "[::]:9975"; 45 }; 46 server = [ 47 { listen = "[::]:123"; } 48 ]; 49 }; 50 }; 51 }; 52 }; 53 54 testScript = 55 { nodes, ... }: 56 '' 57 start_all() 58 59 for machine in (server, client): 60 machine.wait_for_unit('multi-user.target') 61 machine.succeed('systemctl is-active ntpd-rs.service') 62 63 client.fail('systemctl is-active ntpd-rs-metrics.service') 64 server.succeed('systemctl is-active ntpd-rs-metrics.service') 65 66 server.wait_for_open_port(9975) 67 client.succeed('curl http://server:9975/metrics | grep ntp_uptime_seconds') 68 server.fail('curl --fail --connect-timeout 2 http://client:9975/metrics | grep ntp_uptime_seconds') 69 70 client.succeed("ntp-ctl status | grep server:123") 71 server.succeed("ntp-ctl status | grep '\[::\]:123'") 72 73 client.succeed("grep '^mode = \"server\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')") 74 server.succeed("grep '^mode = \"pool\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')") 75 ''; 76 } 77)