diff --git a/nixos/modules/services/networking/ntp/ntpd-rs.nix b/nixos/modules/services/networking/ntp/ntpd-rs.nix index 557bf05fbc42..14287ded9abf 100644 --- a/nixos/modules/services/networking/ntp/ntpd-rs.nix +++ b/nixos/modules/services/networking/ntp/ntpd-rs.nix @@ -63,7 +63,7 @@ in }; source = lib.mkIf cfg.useNetworkingTimeServers ( map (ts: { - mode = "server"; + mode = if lib.strings.hasInfix "pool" ts then "pool" else "server"; address = ts; }) config.networking.timeServers ); diff --git a/nixos/tests/ntpd-rs.nix b/nixos/tests/ntpd-rs.nix index 2907c7558324..9459a9f4ac51 100644 --- a/nixos/tests/ntpd-rs.nix +++ b/nixos/tests/ntpd-rs.nix @@ -11,7 +11,7 @@ import ./make-test-python.nix ( client = { services.ntpd-rs = { enable = true; - metrics.enable = true; + metrics.enable = false; useNetworkingTimeServers = false; settings = { source = [ @@ -27,11 +27,22 @@ import ./make-test-python.nix ( }; }; server = { - networking.firewall.allowedUDPPorts = [ 123 ]; + networking.firewall = { + allowedTCPPorts = [ + 9975 + ]; + allowedUDPPorts = [ + 123 + ]; + }; + services.ntpd-rs = { enable = true; metrics.enable = true; settings = { + observability = { + metrics-exporter-listen = "[::]:9975"; + }; server = [ { listen = "[::]:123"; } ]; @@ -48,8 +59,19 @@ import ./make-test-python.nix ( for machine in (server, client): machine.wait_for_unit('multi-user.target') machine.succeed('systemctl is-active ntpd-rs.service') - machine.succeed('systemctl is-active ntpd-rs-metrics.service') - machine.succeed('curl http://localhost:9975/metrics | grep ntp_uptime_seconds') + + client.fail('systemctl is-active ntpd-rs-metrics.service') + server.succeed('systemctl is-active ntpd-rs-metrics.service') + + server.wait_for_open_port(9975) + client.succeed('curl http://server:9975/metrics | grep ntp_uptime_seconds') + server.fail('curl --fail --connect-timeout 2 http://client:9975/metrics | grep ntp_uptime_seconds') + + client.succeed("ntp-ctl status | grep server:123") + server.succeed("ntp-ctl status | grep '\[::\]:123'") + + client.succeed("grep '^mode = \"server\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')") + server.succeed("grep '^mode = \"pool\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')") ''; } )