1import ./make-test-python.nix ({ lib, ... }:
2{
3 name = "ntpd-rs";
4
5 meta = {
6 maintainers = with lib.maintainers; [ fpletz ];
7 };
8
9 nodes = {
10 client = {
11 services.ntpd-rs = {
12 enable = true;
13 metrics.enable = true;
14 useNetworkingTimeServers = false;
15 settings = {
16 source = [
17 {
18 mode = "server";
19 address = "server";
20 }
21 ];
22 synchronization = {
23 minimum-agreeing-sources = 1;
24 };
25 };
26 };
27 };
28 server = {
29 networking.firewall.allowedUDPPorts = [ 123 ];
30 services.ntpd-rs = {
31 enable = true;
32 metrics.enable = true;
33 settings = {
34 server = [
35 { listen = "[::]:123"; }
36 ];
37 };
38 };
39 };
40 };
41
42 testScript = { nodes, ... }: ''
43 start_all()
44
45 for machine in (server, client):
46 machine.wait_for_unit('multi-user.target')
47 machine.succeed('systemctl is-active ntpd-rs.service')
48 machine.succeed('systemctl is-active ntpd-rs-metrics.service')
49 machine.succeed('curl http://localhost:9975/metrics | grep ntp_uptime_seconds')
50 '';
51})