Merge pull request #72834 from mweinelt/pr/tests/migrate-python
nixos/tests: migrate my tests to python
This commit is contained in:
commit
e73c93d8e6
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
import ./make-test.nix ({ pkgs, lib, ...} : {
|
import ./make-test-python.nix ({ pkgs, lib, ...} : {
|
||||||
name = "babeld";
|
name = "babeld";
|
||||||
meta = with pkgs.stdenv.lib.maintainers; {
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
maintainers = [ hexa ];
|
maintainers = [ hexa ];
|
||||||
|
@ -21,7 +21,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
localRouter = { pkgs, lib, ... }:
|
local_router = { pkgs, lib, ... }:
|
||||||
{
|
{
|
||||||
virtualisation.vlans = [ 10 20 ];
|
virtualisation.vlans = [ 10 20 ];
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ import ./make-test.nix ({ pkgs, lib, ...} : {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
remoteRouter = { pkgs, lib, ... }:
|
remote_router = { pkgs, lib, ... }:
|
||||||
{
|
{
|
||||||
virtualisation.vlans = [ 20 30 ];
|
virtualisation.vlans = [ 20 30 ];
|
||||||
|
|
||||||
|
@ -124,25 +124,25 @@ import ./make-test.nix ({ pkgs, lib, ...} : {
|
||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
''
|
''
|
||||||
startAll;
|
start_all()
|
||||||
|
|
||||||
$client->waitForUnit("network-online.target");
|
client.wait_for_unit("network-online.target")
|
||||||
$localRouter->waitForUnit("network-online.target");
|
local_router.wait_for_unit("network-online.target")
|
||||||
$remoteRouter->waitForUnit("network-online.target");
|
remote_router.wait_for_unit("network-online.target")
|
||||||
|
|
||||||
$localRouter->waitForUnit("babeld.service");
|
local_router.wait_for_unit("babeld.service")
|
||||||
$remoteRouter->waitForUnit("babeld.service");
|
remote_router.wait_for_unit("babeld.service")
|
||||||
|
|
||||||
$localRouter->waitUntilSucceeds("ip route get 192.168.30.1");
|
local_router.wait_until_succeeds("ip route get 192.168.30.1")
|
||||||
$localRouter->waitUntilSucceeds("ip route get 2001:db8:30::1");
|
local_router.wait_until_succeeds("ip route get 2001:db8:30::1")
|
||||||
|
|
||||||
$remoteRouter->waitUntilSucceeds("ip route get 192.168.10.1");
|
remote_router.wait_until_succeeds("ip route get 192.168.10.1")
|
||||||
$remoteRouter->waitUntilSucceeds("ip route get 2001:db8:10::1");
|
remote_router.wait_until_succeeds("ip route get 2001:db8:10::1")
|
||||||
|
|
||||||
$client->succeed("ping -c1 192.168.30.1");
|
client.succeed("ping -c1 192.168.30.1")
|
||||||
$client->succeed("ping -c1 2001:db8:30::1");
|
client.succeed("ping -c1 2001:db8:30::1")
|
||||||
|
|
||||||
$remoteRouter->succeed("ping -c1 192.168.10.2");
|
remote_router.succeed("ping -c1 192.168.10.2")
|
||||||
$remoteRouter->succeed("ping -c1 2001:db8:10::2");
|
remote_router.succeed("ping -c1 2001:db8:10::2")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import ./make-test.nix ({ pkgs, lib, ...} :
|
import ./make-test-python.nix ({ pkgs, lib, ...} :
|
||||||
let
|
let
|
||||||
common = {
|
common = {
|
||||||
networking.firewall.enable = false;
|
networking.firewall.enable = false;
|
||||||
|
@ -30,6 +30,10 @@ let
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
name = "knot";
|
name = "knot";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ hexa ];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
nodes = {
|
nodes = {
|
||||||
master = { lib, ... }: {
|
master = { lib, ... }: {
|
||||||
|
@ -161,37 +165,35 @@ in {
|
||||||
slave4 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv4.addresses).address;
|
slave4 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv4.addresses).address;
|
||||||
slave6 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv6.addresses).address;
|
slave6 = (lib.head nodes.slave.config.networking.interfaces.eth1.ipv6.addresses).address;
|
||||||
in ''
|
in ''
|
||||||
startAll;
|
import re
|
||||||
|
|
||||||
$client->waitForUnit("network.target");
|
start_all()
|
||||||
$master->waitForUnit("knot.service");
|
|
||||||
$slave->waitForUnit("knot.service");
|
|
||||||
|
|
||||||
sub assertResponse {
|
client.wait_for_unit("network.target")
|
||||||
my ($knot, $query_type, $query, $expected) = @_;
|
master.wait_for_unit("knot.service")
|
||||||
my $out = $client->succeed("khost -t $query_type $query $knot");
|
slave.wait_for_unit("knot.service")
|
||||||
$client->log("$knot replies with: $out");
|
|
||||||
chomp $out;
|
|
||||||
die "DNS query for $query ($query_type) against $knot gave '$out' instead of '$expected'"
|
|
||||||
if ($out !~ $expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ("${master4}", "${master6}", "${slave4}", "${slave6}") {
|
|
||||||
subtest $_, sub {
|
|
||||||
assertResponse($_, "SOA", "example.com", qr/start of authority.*?noc\.example\.com/);
|
|
||||||
assertResponse($_, "A", "example.com", qr/has no [^ ]+ record/);
|
|
||||||
assertResponse($_, "AAAA", "example.com", qr/has no [^ ]+ record/);
|
|
||||||
|
|
||||||
assertResponse($_, "A", "www.example.com", qr/address 192.0.2.1$/);
|
def test(host, query_type, query, pattern):
|
||||||
assertResponse($_, "AAAA", "www.example.com", qr/address 2001:db8::1$/);
|
out = client.succeed(f"khost -t {query_type} {query} {host}").strip()
|
||||||
|
client.log(f"{host} replied with: {out}")
|
||||||
|
assert re.search(pattern, out), f'Did not match "{pattern}"'
|
||||||
|
|
||||||
assertResponse($_, "NS", "sub.example.com", qr/nameserver is ns\d\.example\.com.$/);
|
|
||||||
assertResponse($_, "A", "sub.example.com", qr/address 192.0.2.2$/);
|
|
||||||
assertResponse($_, "AAAA", "sub.example.com", qr/address 2001:db8::2$/);
|
|
||||||
|
|
||||||
assertResponse($_, "RRSIG", "www.example.com", qr/RR set signature is/);
|
for host in ("${master4}", "${master6}", "${slave4}", "${slave6}"):
|
||||||
assertResponse($_, "DNSKEY", "example.com", qr/DNSSEC key is/);
|
with subtest(f"Interrogate {host}"):
|
||||||
};
|
test(host, "SOA", "example.com", r"start of authority.*noc\.example\.com\.")
|
||||||
}
|
test(host, "A", "example.com", r"has no [^ ]+ record")
|
||||||
|
test(host, "AAAA", "example.com", r"has no [^ ]+ record")
|
||||||
|
|
||||||
|
test(host, "A", "www.example.com", r"address 192.0.2.1$")
|
||||||
|
test(host, "AAAA", "www.example.com", r"address 2001:db8::1$")
|
||||||
|
|
||||||
|
test(host, "NS", "sub.example.com", r"nameserver is ns\d\.example\.com.$")
|
||||||
|
test(host, "A", "sub.example.com", r"address 192.0.2.2$")
|
||||||
|
test(host, "AAAA", "sub.example.com", r"address 2001:db8::2$")
|
||||||
|
|
||||||
|
test(host, "RRSIG", "www.example.com", r"RR set signature is")
|
||||||
|
test(host, "DNSKEY", "example.com", r"DNSSEC key is")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue