at 17.09-beta 2.0 kB view raw
1# Test whether `avahi-daemon' and `libnss-mdns' work as expected. 2import ./make-test.nix ({ pkgs, ... } : { 3 name = "avahi"; 4 meta = with pkgs.stdenv.lib.maintainers; { 5 maintainers = [ eelco chaoflow ]; 6 }; 7 8 nodes = let 9 cfg = { config, pkgs, ... }: { 10 services.avahi = { 11 enable = true; 12 nssmdns = true; 13 publish.addresses = true; 14 publish.domain = true; 15 publish.enable = true; 16 publish.userServices = true; 17 publish.workstation = true; 18 }; 19 }; 20 in { 21 one = cfg; 22 two = cfg; 23 }; 24 25 testScript = 26 '' startAll; 27 28 # mDNS. 29 $one->waitForUnit("network.target"); 30 $two->waitForUnit("network.target"); 31 32 $one->succeed("avahi-resolve-host-name one.local | tee out >&2"); 33 $one->succeed("test \"`cut -f1 < out`\" = one.local"); 34 $one->succeed("avahi-resolve-host-name two.local | tee out >&2"); 35 $one->succeed("test \"`cut -f1 < out`\" = two.local"); 36 37 $two->succeed("avahi-resolve-host-name one.local | tee out >&2"); 38 $two->succeed("test \"`cut -f1 < out`\" = one.local"); 39 $two->succeed("avahi-resolve-host-name two.local | tee out >&2"); 40 $two->succeed("test \"`cut -f1 < out`\" = two.local"); 41 42 # Basic DNS-SD. 43 $one->succeed("avahi-browse -r -t _workstation._tcp | tee out >&2"); 44 $one->succeed("test `wc -l < out` -gt 0"); 45 $two->succeed("avahi-browse -r -t _workstation._tcp | tee out >&2"); 46 $two->succeed("test `wc -l < out` -gt 0"); 47 48 # More DNS-SD. 49 $one->execute("avahi-publish -s \"This is a test\" _test._tcp 123 one=1 &"); 50 $one->sleep(5); 51 $two->succeed("avahi-browse -r -t _test._tcp | tee out >&2"); 52 $two->succeed("test `wc -l < out` -gt 0"); 53 54 # NSS-mDNS. 55 $one->succeed("getent hosts one.local >&2"); 56 $one->succeed("getent hosts two.local >&2"); 57 $two->succeed("getent hosts one.local >&2"); 58 $two->succeed("getent hosts two.local >&2"); 59 ''; 60})