at 25.11-pre 2.5 kB view raw
1{ 2 pkgs, 3 # bool: whether to use networkd in the tests 4 networkd ? false, 5 ... 6}: 7 8# Test whether `avahi-daemon' and `libnss-mdns' work as expected. 9{ 10 name = "avahi"; 11 meta.maintainers = [ ]; 12 13 nodes = 14 let 15 cfg = 16 { ... }: 17 { 18 services.avahi = { 19 enable = true; 20 nssmdns4 = true; 21 publish.addresses = true; 22 publish.domain = true; 23 publish.enable = true; 24 publish.userServices = true; 25 publish.workstation = true; 26 extraServiceFiles.ssh = "${pkgs.avahi}/etc/avahi/services/ssh.service"; 27 }; 28 } 29 // pkgs.lib.optionalAttrs networkd { 30 networking = { 31 useNetworkd = true; 32 useDHCP = false; 33 }; 34 }; 35 in 36 { 37 one = cfg; 38 two = cfg; 39 }; 40 41 testScript = '' 42 start_all() 43 44 # mDNS. 45 one.wait_for_unit("network.target") 46 two.wait_for_unit("network.target") 47 48 one.succeed("avahi-resolve-host-name one.local | tee out >&2") 49 one.succeed('test "`cut -f1 < out`" = one.local') 50 one.succeed("avahi-resolve-host-name two.local | tee out >&2") 51 one.succeed('test "`cut -f1 < out`" = two.local') 52 53 two.succeed("avahi-resolve-host-name one.local | tee out >&2") 54 two.succeed('test "`cut -f1 < out`" = one.local') 55 two.succeed("avahi-resolve-host-name two.local | tee out >&2") 56 two.succeed('test "`cut -f1 < out`" = two.local') 57 58 # Basic DNS-SD. 59 one.succeed("avahi-browse -r -t _workstation._tcp | tee out >&2") 60 one.succeed("test `wc -l < out` -gt 0") 61 two.succeed("avahi-browse -r -t _workstation._tcp | tee out >&2") 62 two.succeed("test `wc -l < out` -gt 0") 63 64 # More DNS-SD. 65 one.execute('avahi-publish -s "This is a test" _test._tcp 123 one=1 >&2 &') 66 one.sleep(5) 67 two.succeed("avahi-browse -r -t _test._tcp | tee out >&2") 68 two.succeed("test `wc -l < out` -gt 0") 69 70 # NSS-mDNS. 71 one.succeed("getent hosts one.local >&2") 72 one.succeed("getent hosts two.local >&2") 73 two.succeed("getent hosts one.local >&2") 74 two.succeed("getent hosts two.local >&2") 75 76 # extra service definitions 77 one.succeed("avahi-browse -r -t _ssh._tcp | tee out >&2") 78 one.succeed("test `wc -l < out` -gt 0") 79 two.succeed("avahi-browse -r -t _ssh._tcp | tee out >&2") 80 two.succeed("test `wc -l < out` -gt 0") 81 82 one.log(one.execute("systemd-analyze security avahi-daemon.service | grep -v ")[1]) 83 ''; 84}