vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / avahi.nix
blob4ae2f919f2f7d17c5b0eff285f893b9210ae8ae6
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:
8 # Test whether `avahi-daemon' and `libnss-mdns' work as expected.
9 import ./make-test-python.nix {
10   name = "avahi";
11   meta = with pkgs.lib.maintainers; {
12     maintainers = [ ];
13   };
15   nodes = let
16     cfg = { ... }: {
17       services.avahi = {
18         enable = true;
19         nssmdns4 = 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   };
38   testScript = ''
39     start_all()
41     # mDNS.
42     one.wait_for_unit("network.target")
43     two.wait_for_unit("network.target")
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')
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')
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")
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")
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")
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