diff options
author | Paul Schyska <paul@schyska.net> | 2021-05-21 23:11:20 +0200 |
---|---|---|
committer | Paul Schyska <paul@schyska.net> | 2021-05-22 14:11:45 +0200 |
commit | e1a8e856316f3498176923ace906591a0e420845 (patch) | |
tree | 74cdc131d766476370d455ea4986eff905fc7bd6 | |
parent | 957272c5ad0d0bd0035b2963a4e7383ef9924467 (diff) | |
download | nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar.gz nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar.bz2 nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar.lz nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar.xz nixpkgs-e1a8e856316f3498176923ace906591a0e420845.tar.zst nixpkgs-e1a8e856316f3498176923ace906591a0e420845.zip |
nixos/atop: Wait for conditions
I had intermittent test failures due to timing issues. This patch seems to have fixed them.
-rw-r--r-- | nixos/tests/atop.nix | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/nixos/tests/atop.nix b/nixos/tests/atop.nix index a2565e610ae..1f8b005041f 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 |