diff options
Diffstat (limited to 'nixpkgs/nixos/tests/avahi.nix')
-rw-r--r-- | nixpkgs/nixos/tests/avahi.nix | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/nixpkgs/nixos/tests/avahi.nix b/nixpkgs/nixos/tests/avahi.nix new file mode 100644 index 00000000000..ae4f54d5266 --- /dev/null +++ b/nixpkgs/nixos/tests/avahi.nix @@ -0,0 +1,67 @@ +# Test whether `avahi-daemon' and `libnss-mdns' work as expected. +import ./make-test.nix ({ pkgs, ... } : { + name = "avahi"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ eelco ]; + }; + + nodes = let + cfg = { ... }: { + services.avahi = { + enable = true; + nssmdns = true; + publish.addresses = true; + publish.domain = true; + publish.enable = true; + publish.userServices = true; + publish.workstation = true; + extraServiceFiles.ssh = "${pkgs.avahi}/etc/avahi/services/ssh.service"; + }; + }; + in { + one = cfg; + two = cfg; + }; + + testScript = + '' startAll; + + # mDNS. + $one->waitForUnit("network.target"); + $two->waitForUnit("network.target"); + + $one->succeed("avahi-resolve-host-name one.local | tee out >&2"); + $one->succeed("test \"`cut -f1 < out`\" = one.local"); + $one->succeed("avahi-resolve-host-name two.local | tee out >&2"); + $one->succeed("test \"`cut -f1 < out`\" = two.local"); + + $two->succeed("avahi-resolve-host-name one.local | tee out >&2"); + $two->succeed("test \"`cut -f1 < out`\" = one.local"); + $two->succeed("avahi-resolve-host-name two.local | tee out >&2"); + $two->succeed("test \"`cut -f1 < out`\" = two.local"); + + # Basic DNS-SD. + $one->succeed("avahi-browse -r -t _workstation._tcp | tee out >&2"); + $one->succeed("test `wc -l < out` -gt 0"); + $two->succeed("avahi-browse -r -t _workstation._tcp | tee out >&2"); + $two->succeed("test `wc -l < out` -gt 0"); + + # More DNS-SD. + $one->execute("avahi-publish -s \"This is a test\" _test._tcp 123 one=1 &"); + $one->sleep(5); + $two->succeed("avahi-browse -r -t _test._tcp | tee out >&2"); + $two->succeed("test `wc -l < out` -gt 0"); + + # NSS-mDNS. + $one->succeed("getent hosts one.local >&2"); + $one->succeed("getent hosts two.local >&2"); + $two->succeed("getent hosts one.local >&2"); + $two->succeed("getent hosts two.local >&2"); + + # extra service definitions + $one->succeed("avahi-browse -r -t _ssh._tcp | tee out >&2"); + $one->succeed("test `wc -l < out` -gt 0"); + $two->succeed("avahi-browse -r -t _ssh._tcp | tee out >&2"); + $two->succeed("test `wc -l < out` -gt 0"); + ''; +}) |