Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

nixos/keepalived: add test

+46 -1
+1
nixos/tests/all-tests.nix
··· 132 132 jellyfin = handleTest ./jellyfin.nix {}; 133 133 jenkins = handleTest ./jenkins.nix {}; 134 134 kafka = handleTest ./kafka.nix {}; 135 + keepalived = handleTest ./keepalived.nix {}; 135 136 kerberos = handleTest ./kerberos/default.nix {}; 136 137 kernel-latest = handleTest ./kernel-latest.nix {}; 137 138 kernel-lts = handleTest ./kernel-lts.nix {};
+42
nixos/tests/keepalived.nix
··· 1 + import ./make-test-python.nix ({ pkgs, ... }: { 2 + name = "keepalived"; 3 + 4 + nodes = { 5 + node1 = { pkgs, ... }: { 6 + networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT"; 7 + services.keepalived.enable = true; 8 + services.keepalived.vrrpInstances.test = { 9 + interface = "eth1"; 10 + state = "MASTER"; 11 + priority = 50; 12 + virtualIps = [{ addr = "192.168.1.200"; }]; 13 + virtualRouterId = 1; 14 + }; 15 + environment.systemPackages = [ pkgs.tcpdump ]; 16 + }; 17 + node2 = { pkgs, ... }: { 18 + networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT"; 19 + services.keepalived.enable = true; 20 + services.keepalived.vrrpInstances.test = { 21 + interface = "eth1"; 22 + state = "MASTER"; 23 + priority = 100; 24 + virtualIps = [{ addr = "192.168.1.200"; }]; 25 + virtualRouterId = 1; 26 + }; 27 + environment.systemPackages = [ pkgs.tcpdump ]; 28 + }; 29 + }; 30 + 31 + testScript = '' 32 + # wait for boot time delay to pass 33 + for node in [node1, node2]: 34 + node.wait_until_succeeds( 35 + "systemctl show -p LastTriggerUSecMonotonic keepalived-boot-delay.timer | grep -vq 'LastTriggerUSecMonotonic=0'" 36 + ) 37 + node.wait_for_unit("keepalived") 38 + node2.wait_until_succeeds("ip addr show dev eth1 | grep -q 192.168.1.200") 39 + node1.fail("ip addr show dev eth1 | grep -q 192.168.1.200") 40 + node1.succeed("ping -c1 192.168.1.200") 41 + ''; 42 + })
+3 -1
pkgs/tools/networking/keepalived/default.nix
··· 1 - { stdenv, fetchFromGitHub 1 + { stdenv, fetchFromGitHub, nixosTests 2 2 , libnfnetlink, libnl, net-snmp, openssl 3 3 , pkgconfig, autoreconfHook }: 4 4 ··· 19 19 net-snmp 20 20 openssl 21 21 ]; 22 + 23 + passthru.tests.keepalived = nixosTests.keepalived; 22 24 23 25 nativeBuildInputs = [ pkgconfig autoreconfHook ]; 24 26