summary refs log tree commit diff
path: root/nixos/tests
diff options
context:
space:
mode:
authorAdam Stephens <adam@valkor.net>2023-11-02 22:09:37 -0400
committerAdam Stephens <adam@valkor.net>2023-11-02 22:09:37 -0400
commitf12af77bd8af86a2b2709dc9c14256e1a2c3aca1 (patch)
tree860c38cb9461dcc3923f4d05c16cd7cb4d3e408f /nixos/tests
parent3132ba6cdaf663f51e2dce3b67d9d6c83fd6f729 (diff)
downloadnixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar.gz
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar.bz2
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar.lz
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar.xz
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.tar.zst
nixpkgs-f12af77bd8af86a2b2709dc9c14256e1a2c3aca1.zip
nixos/tests/incus: improve test resiliency under load
Diffstat (limited to 'nixos/tests')
-rw-r--r--nixos/tests/incus/container.nix25
1 files changed, 13 insertions, 12 deletions
diff --git a/nixos/tests/incus/container.nix b/nixos/tests/incus/container.nix
index ce9a8a10fb2..79b9e2fbabd 100644
--- a/nixos/tests/incus/container.nix
+++ b/nixos/tests/incus/container.nix
@@ -29,8 +29,14 @@ in
 
   testScript = ''
     def instance_is_up(_) -> bool:
-      status, _ = machine.execute("incus exec container --disable-stdin --force-interactive /run/current-system/sw/bin/true")
-      return status == 0
+        status, _ = machine.execute("incus exec container --disable-stdin --force-interactive /run/current-system/sw/bin/true")
+        return status == 0
+
+    def set_container(config):
+        machine.succeed(f"incus config set container {config}")
+        machine.succeed("incus restart container")
+        with machine.nested("Waiting for instance to start and be usable"):
+          retry(instance_is_up)
 
     machine.wait_for_unit("incus.service")
 
@@ -49,28 +55,23 @@ in
         machine.succeed("echo true | incus exec container /run/current-system/sw/bin/bash -")
 
     with subtest("Container CPU limits can be managed"):
-        machine.succeed("incus config set container limits.cpu 1")
-        # give container a chance to apply new resource limit
-        machine.sleep(1)
+        set_container("limits.cpu 1")
         cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
         assert cpuinfo == "1", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 1, got: {cpuinfo}"
 
-        machine.succeed("incus config set container limits.cpu 2")
-        machine.sleep(1)
+        set_container("limits.cpu 2")
         cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
         assert cpuinfo == "2", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 2, got: {cpuinfo}"
 
     with subtest("Container memory limits can be managed"):
-        machine.succeed("incus config set container limits.memory 64MB")
-        machine.sleep(1)
+        set_container("limits.memory 64MB")
         meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
         meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
         assert meminfo_bytes == "62500 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '62500 kB', got: '{meminfo_bytes}'"
 
-        machine.succeed("incus config set container limits.memory 128MB")
-        machine.sleep(1)
+        set_container("limits.memory 128MB")
         meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
         meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
-        assert meminfo_bytes == "125000 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '62500 kB', got: '{meminfo_bytes}'"
+        assert meminfo_bytes == "125000 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '125000 kB', got: '{meminfo_bytes}'"
   '';
 })