diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2021-06-16 19:58:58 +0200 |
---|---|---|
committer | Jan Tojnar <jtojnar@gmail.com> | 2021-06-16 19:59:05 +0200 |
commit | e3dfa794412778ab993054a8e0a55a7a5490c022 (patch) | |
tree | afcfb540333a669269b36adcfcf6def5e7e688ec /nixos/tests | |
parent | 30915f8d471cba27ec9364135cdcb27f83b52f5d (diff) | |
parent | b08ae54dd9daf4cceb03d49d681bfbd7ad013bb8 (diff) | |
download | nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar.gz nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar.bz2 nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar.lz nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar.xz nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.tar.zst nixlib-e3dfa794412778ab993054a8e0a55a7a5490c022.zip |
Merge branch 'staging-next' into staging
Regenerated pkgs/servers/x11/xorg/default.nix to resolve the conflict.
Diffstat (limited to 'nixos/tests')
-rw-r--r-- | nixos/tests/all-tests.nix | 1 | ||||
-rw-r--r-- | nixos/tests/overlayfs.nix | 57 | ||||
-rw-r--r-- | nixos/tests/solanum.nix | 8 | ||||
-rw-r--r-- | nixos/tests/ucarp.nix | 66 |
4 files changed, 102 insertions, 30 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 17e12eee9d9d..abc4d9b9b8f8 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -434,6 +434,7 @@ in trilium-server = handleTestOn ["x86_64-linux"] ./trilium-server.nix {}; tuptime = handleTest ./tuptime.nix {}; turbovnc-headless-server = handleTest ./turbovnc-headless-server.nix {}; + ucarp = handleTest ./ucarp.nix {}; ucg = handleTest ./ucg.nix {}; udisks2 = handleTest ./udisks2.nix {}; unbound = handleTest ./unbound.nix {}; diff --git a/nixos/tests/overlayfs.nix b/nixos/tests/overlayfs.nix index 142e7d378b2f..1768f1fea1ed 100644 --- a/nixos/tests/overlayfs.nix +++ b/nixos/tests/overlayfs.nix @@ -15,36 +15,33 @@ import ./make-test-python.nix ({ pkgs, ... }: { # Test ext4 + overlayfs machine.succeed( - """ - mkfs.ext4 -F -L overlay-ext4 /dev/vdb - mount -t ext4 /dev/vdb /tmp/mnt - mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged - # Setup some existing files - echo 'Replace' > /tmp/mnt/lower/replace.txt - echo 'Append' > /tmp/mnt/lower/append.txt - echo 'Overwrite' > /tmp/mnt/lower/overwrite.txt - mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged - # Test new - echo 'New' > /tmp/mnt/merged/new.txt - [[ "\$(cat /tmp/mnt/merged/new.txt)" == "New" ]] - # Test replace - [[ "\$(cat /tmp/mnt/merged/replace.txt)" == "Replace" ]] - echo 'Replaced' > /tmp/mnt/merged/replace-tmp.txt - mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt - [[ "\$(cat /tmp/mnt/merged/replace.txt)" == "Replaced" ]] - # Overwrite - [[ "\$(cat /tmp/mnt/merged/overwrite.txt)" == "Overwrite" ]] - echo 'Overwritten' > /tmp/mnt/merged/overwrite.txt - [[ "\$(cat /tmp/mnt/merged/overwrite.txt)" == "Overwritten" ]] - # Test append - [[ "\$(cat /tmp/mnt/merged/append.txt)" == "Append" ]] - echo 'ed' >> /tmp/mnt/merged/append.txt - #"cat /tmp/mnt/merged/append.txt && exit 1 - [[ "\$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]] - umount /tmp/mnt/merged - umount /tmp/mnt - udevadm settle - """ + 'mkfs.ext4 -F -L overlay-ext4 /dev/vdb', + 'mount -t ext4 /dev/vdb /tmp/mnt', + 'mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged', + # Setup some existing files + 'echo Replace > /tmp/mnt/lower/replace.txt', + 'echo Append > /tmp/mnt/lower/append.txt', + 'echo Overwrite > /tmp/mnt/lower/overwrite.txt', + 'mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged', + # Test new + 'echo New > /tmp/mnt/merged/new.txt', + '[[ "$(cat /tmp/mnt/merged/new.txt)" == New ]]', + # Test replace + '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replace ]]', + 'echo Replaced > /tmp/mnt/merged/replace-tmp.txt', + 'mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt', + '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replaced ]]', + # Overwrite + '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwrite ]]', + 'echo Overwritten > /tmp/mnt/merged/overwrite.txt', + '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwritten ]]', + # Test append + '[[ "$(cat /tmp/mnt/merged/append.txt)" == Append ]]', + 'echo ed >> /tmp/mnt/merged/append.txt', + '[[ "$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]]', + 'umount /tmp/mnt/merged', + 'umount /tmp/mnt', + 'udevadm settle', ) ''; }) diff --git a/nixos/tests/solanum.nix b/nixos/tests/solanum.nix index aabfb906aa81..1ecf91bce40b 100644 --- a/nixos/tests/solanum.nix +++ b/nixos/tests/solanum.nix @@ -16,6 +16,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: { networking.firewall.allowedTCPPorts = [ ircPort ]; services.solanum = { enable = true; + motd = '' + The default MOTD doesn't contain the word "nixos" in it. + This one does. + ''; }; }; } // lib.listToAttrs (builtins.map (client: lib.nameValuePair client { @@ -48,6 +52,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: { ${client}.wait_for_unit("ii") ${client}.wait_for_file("${iiDir}/${server}/out") '' + # look for the custom text in the MOTD. + '' + ${client}.wait_until_succeeds("grep 'nixos' ${iiDir}/${server}/out") + '' # wait until first PING from server arrives before joining, # so we don't try it too early '' diff --git a/nixos/tests/ucarp.nix b/nixos/tests/ucarp.nix new file mode 100644 index 000000000000..1f60f770d3a8 --- /dev/null +++ b/nixos/tests/ucarp.nix @@ -0,0 +1,66 @@ +import ./make-test-python.nix ({ pkgs, lib, ...} : + +let + addrShared = "192.168.0.1"; + addrHostA = "192.168.0.10"; + addrHostB = "192.168.0.11"; + + mkUcarpHost = addr: { config, pkgs, lib, ... }: { + networking.interfaces.eth1.ipv4.addresses = lib.mkForce [ + { address = addr; prefixLength = 24; } + ]; + + networking.ucarp = { + enable = true; + interface = "eth1"; + srcIp = addr; + vhId = 1; + passwordFile = "${pkgs.writeText "ucarp-pass" "secure"}"; + addr = addrShared; + upscript = pkgs.writeScript "upscript" '' + #!/bin/sh + ${pkgs.iproute2}/bin/ip addr add "$2"/24 dev "$1" + ''; + downscript = pkgs.writeScript "downscript" '' + #!/bin/sh + ${pkgs.iproute2}/bin/ip addr del "$2"/24 dev "$1" + ''; + }; + }; +in { + name = "ucarp"; + meta.maintainers = with lib.maintainers; [ oxzi ]; + + nodes = { + hostA = mkUcarpHost addrHostA; + hostB = mkUcarpHost addrHostB; + }; + + testScript = '' + def is_master(host): + ipOutput = host.succeed("ip addr show dev eth1") + return "inet ${addrShared}/24" in ipOutput + + + start_all() + + # First, let both hosts start and let a master node be selected + for host, peer in [(hostA, "${addrHostB}"), (hostB, "${addrHostA}")]: + host.wait_for_unit("ucarp.service") + host.succeed(f"ping -c 1 {peer}") + + hostA.sleep(5) + + hostA_master, hostB_master = is_master(hostA), is_master(hostB) + assert hostA_master != hostB_master, "only one master node is allowed" + + master_host = hostA if hostA_master else hostB + backup_host = hostB if hostA_master else hostA + + # Let's crash the master host and let the backup take over + master_host.crash() + + backup_host.sleep(5) + assert is_master(backup_host), "backup did not take over" + ''; +}) |