depot/third_party/nixpkgs/nixos/tests/resolv.nix
Default email 8ac5e011d6 Project import generated by Copybara.
GitOrigin-RevId: 2c3273caa153ee8eb5786bc8141b85b859e7efd7
2020-04-24 19:36:52 -04:00

46 lines
1.3 KiB
Nix

# Test whether DNS resolving returns multiple records and all address families.
import ./make-test-python.nix ({ pkgs, ... } : {
name = "resolv";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ ckauhaus ];
};
nodes.resolv = { ... }: {
networking.extraHosts = ''
# IPv4 only
192.0.2.1 host-ipv4.example.net
192.0.2.2 host-ipv4.example.net
# IP6 only
2001:db8::2:1 host-ipv6.example.net
2001:db8::2:2 host-ipv6.example.net
# dual stack
192.0.2.1 host-dual.example.net
192.0.2.2 host-dual.example.net
2001:db8::2:1 host-dual.example.net
2001:db8::2:2 host-dual.example.net
'';
};
testScript = ''
def addrs_in(hostname, addrs):
res = resolv.succeed("getent ahosts {}".format(hostname))
for addr in addrs:
assert addr in res, "Expected output '{}' not found in\n{}".format(addr, res)
start_all()
resolv.wait_for_unit("nscd")
ipv4 = ["192.0.2.1", "192.0.2.2"]
ipv6 = ["2001:db8::2:1", "2001:db8::2:2"]
with subtest("IPv4 resolves"):
addrs_in("host-ipv4.example.net", ipv4)
with subtest("IPv6 resolves"):
addrs_in("host-ipv6.example.net", ipv6)
with subtest("Dual stack resolves"):
addrs_in("host-dual.example.net", ipv4 + ipv6)
'';
})