918c2ca01a
This PR is part of the networking.* namespace cleanup. We feel that networking.hostConf is rarely used and provides little value compared to using environment.etc."host.conf" directly. Provide sensible default: multi on
78 lines
1.9 KiB
Nix
78 lines
1.9 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 = let
|
|
getaddrinfo_py = pkgs.writeScript "getaddrinfo.py" ''
|
|
import socket
|
|
import sys
|
|
|
|
result = set()
|
|
for gai in socket.getaddrinfo(sys.argv[1], 0):
|
|
result.add(gai[4][0])
|
|
|
|
print(' '.join(sorted(list(result))))
|
|
'';
|
|
|
|
getaddrinfo = "${pkgs.python3.interpreter} ${getaddrinfo_py}";
|
|
|
|
in
|
|
''
|
|
def compare(test, should, is_):
|
|
should = should.strip()
|
|
is_ = is_.strip()
|
|
resolv.log("{}: expected '{}', actual '{}'".format(test, should, is_))
|
|
if should == is_:
|
|
resolv.log("* OK")
|
|
return True
|
|
else:
|
|
resolv.log("* FAILED")
|
|
return False
|
|
|
|
|
|
start_all()
|
|
resolv.wait_for_unit("nscd")
|
|
res = []
|
|
|
|
out = resolv.succeed(
|
|
"${getaddrinfo} host-ipv4.example.net"
|
|
)
|
|
res.append(compare("resolve IPv4", "192.0.2.1 192.0.2.2", out))
|
|
|
|
out = resolv.succeed(
|
|
"${getaddrinfo} host-ipv6.example.net"
|
|
)
|
|
res.append(compare("resolve IPv6", "2001:db8::2:1 2001:db8::2:2", out))
|
|
|
|
out = resolv.succeed(
|
|
"${getaddrinfo} host-dual.example.net"
|
|
)
|
|
res.append(
|
|
compare(
|
|
"resolve dual stack", "192.0.2.1 192.0.2.2 2001:db8::2:1 2001:db8::2:2", out
|
|
)
|
|
)
|
|
|
|
assert all(res) is True
|
|
'';
|
|
})
|