summaryrefslogtreecommitdiffstats
path: root/nixos/tests/atop.nix
diff options
context:
space:
mode:
authorPaul Schyska <paul@schyska.net>2021-05-21 23:11:20 +0200
committerPaul Schyska <paul@schyska.net>2021-05-22 14:11:45 +0200
commite1a8e856316f3498176923ace906591a0e420845 (patch)
tree74cdc131d766476370d455ea4986eff905fc7bd6 /nixos/tests/atop.nix
parent957272c5ad0d0bd0035b2963a4e7383ef9924467 (diff)
nixos/atop: Wait for conditions
I had intermittent test failures due to timing issues. This patch seems to have fixed them.
Diffstat (limited to 'nixos/tests/atop.nix')
-rw-r--r--nixos/tests/atop.nix37
1 files changed, 30 insertions, 7 deletions
diff --git a/nixos/tests/atop.nix b/nixos/tests/atop.nix
index a2565e610ae1..1f8b005041f0 100644
--- a/nixos/tests/atop.nix
+++ b/nixos/tests/atop.nix
@@ -14,7 +14,10 @@ let assertions = rec {
'';
unit = name: state: ''
with subtest("Unit ${name} should be ${state}"):
- machine.require_unit_state("${name}", "${state}")
+ if "${state}" == "active":
+ machine.wait_for_unit("${name}")
+ else:
+ machine.require_unit_state("${name}", "${state}")
'';
version = ''
import re
@@ -44,9 +47,19 @@ let assertions = rec {
if present then
unit "atop.service" "active"
+ ''
- with subtest("atop.service should have written some data to /var/log/atop"):
- files = int(machine.succeed("ls -1 /var/log/atop | wc -l"))
- assert files > 0, "Expected at least 1 data file"
+ with subtest("atop.service should write some data to /var/log/atop"):
+
+ def has_data_files(last: bool) -> bool:
+ files = int(machine.succeed("ls -1 /var/log/atop | wc -l"))
+ if files == 0:
+ machine.log("Did not find at least one 1 data file")
+ if not last:
+ machine.log("Will retry...")
+ return False
+ return True
+
+ with machine.nested("Waiting for data files"):
+ retry(has_data_files)
'' else unit "atop.service" "inactive";
atopRotateTimer = present:
unit "atop-rotate.timer" (if present then "active" else "inactive");
@@ -55,11 +68,21 @@ let assertions = rec {
unit "atopacct.service" "active"
+ ''
with subtest("atopacct.service should enable process accounting"):
- machine.succeed("test -f /run/pacct_source")
+ machine.wait_until_succeeds("test -f /run/pacct_source")
with subtest("atopacct.service should write data to /run/pacct_shadow.d"):
- files = int(machine.succeed("ls -1 /run/pacct_shadow.d | wc -l"))
- assert files >= 1, "Expected at least 1 pacct_shadow.d file"
+
+ def has_data_files(last: bool) -> bool:
+ files = int(machine.succeed("ls -1 /run/pacct_shadow.d | wc -l"))
+ if files == 0:
+ machine.log("Did not find at least one 1 data file")
+ if not last:
+ machine.log("Will retry...")
+ return False
+ return True
+
+ with machine.nested("Waiting for data files"):
+ retry(has_data_files)
'' else unit "atopacct.service" "inactive";
netatop = present:
if present then