diff options
Diffstat (limited to 'nixos/tests/avahi.nix')
-rw-r--r-- | nixos/tests/avahi.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/nixos/tests/avahi.nix b/nixos/tests/avahi.nix new file mode 100644 index 000000000000..d95361dcd83d --- /dev/null +++ b/nixos/tests/avahi.nix @@ -0,0 +1,55 @@ +{ pkgs, ... }: + +with pkgs; + +{ + nodes = { + one = + { config, pkgs, ... }: { + services.avahi.enable = true; + services.avahi.nssmdns = true; + }; + + two = + { config, pkgs, ... }: { + services.avahi.enable = true; + services.avahi.nssmdns = true; + }; + }; + + # Test whether `avahi-daemon' and `libnss-mdns' work as expected. + testScript = + '' startAll; + + # mDNS. + $one->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->waitForUnit("network.target"); + $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"); + ''; +} |