diff options
author | Christian Kauhaus <kc@flyingcircus.io> | 2019-11-29 12:08:34 +0100 |
---|---|---|
committer | Christian Kauhaus <kc@flyingcircus.io> | 2019-11-29 12:08:34 +0100 |
commit | 918c2ca01aabb31ec2d6c033a14039d0adbe87de (patch) | |
tree | 57eb2a5620c252337c2391cad28d9ef699596d9c /nixos/tests/resolv.nix | |
parent | 724133984f066ee7ad1592f08ae886a718eb31c6 (diff) | |
download | nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar.gz nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar.bz2 nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar.lz nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar.xz nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.tar.zst nixpkgs-918c2ca01aabb31ec2d6c033a14039d0adbe87de.zip |
Remove networking.hostConf option
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
Diffstat (limited to 'nixos/tests/resolv.nix')
-rw-r--r-- | nixos/tests/resolv.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixos/tests/resolv.nix b/nixos/tests/resolv.nix new file mode 100644 index 00000000000..37004bec558 --- /dev/null +++ b/nixos/tests/resolv.nix @@ -0,0 +1,77 @@ +# 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 + ''; +}) |