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