aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/tests/keepalived.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/tests/keepalived.nix')
-rw-r--r--nixpkgs/nixos/tests/keepalived.nix42
1 files changed, 42 insertions, 0 deletions
diff --git a/nixpkgs/nixos/tests/keepalived.nix b/nixpkgs/nixos/tests/keepalived.nix
new file mode 100644
index 00000000000..d0bf9d46520
--- /dev/null
+++ b/nixpkgs/nixos/tests/keepalived.nix
@@ -0,0 +1,42 @@
+import ./make-test-python.nix ({ pkgs, ... }: {
+ name = "keepalived";
+
+ nodes = {
+ node1 = { pkgs, ... }: {
+ networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT";
+ services.keepalived.enable = true;
+ services.keepalived.vrrpInstances.test = {
+ interface = "eth1";
+ state = "MASTER";
+ priority = 50;
+ virtualIps = [{ addr = "192.168.1.200"; }];
+ virtualRouterId = 1;
+ };
+ environment.systemPackages = [ pkgs.tcpdump ];
+ };
+ node2 = { pkgs, ... }: {
+ networking.firewall.extraCommands = "iptables -A INPUT -p vrrp -j ACCEPT";
+ services.keepalived.enable = true;
+ services.keepalived.vrrpInstances.test = {
+ interface = "eth1";
+ state = "MASTER";
+ priority = 100;
+ virtualIps = [{ addr = "192.168.1.200"; }];
+ virtualRouterId = 1;
+ };
+ environment.systemPackages = [ pkgs.tcpdump ];
+ };
+ };
+
+ testScript = ''
+ # wait for boot time delay to pass
+ for node in [node1, node2]:
+ node.wait_until_succeeds(
+ "systemctl show -p LastTriggerUSecMonotonic keepalived-boot-delay.timer | grep -vq 'LastTriggerUSecMonotonic=0'"
+ )
+ node.wait_for_unit("keepalived")
+ node2.wait_until_succeeds("ip addr show dev eth1 | grep -q 192.168.1.200")
+ node1.fail("ip addr show dev eth1 | grep -q 192.168.1.200")
+ node1.succeed("ping -c1 192.168.1.200")
+ '';
+})