about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2022-03-03 10:40:23 +0000
committerGitHub <noreply@github.com>2022-03-03 10:40:23 +0000
commitd34f7085a90431b36547226735905f0bb69cbafa (patch)
tree63b5825f20d2a70988692d06b53000d3a22e5bf7 /nixos
parent0f0fec6678d9a75fe65e03aaef1bfe32fa076d5e (diff)
parent126ce87b0c7e526c8d1f2eccd868e89ef61deab3 (diff)
downloadnixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar.gz
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar.bz2
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar.lz
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar.xz
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.tar.zst
nixlib-d34f7085a90431b36547226735905f0bb69cbafa.zip
Merge pull request #162582 from JJJollyjim/cntr-test
nixos/tests: fix flaky cntr test
Diffstat (limited to 'nixos')
-rw-r--r--nixos/tests/cntr.nix20
1 files changed, 16 insertions, 4 deletions
diff --git a/nixos/tests/cntr.nix b/nixos/tests/cntr.nix
index 668470756209..e4e13545b876 100644
--- a/nixos/tests/cntr.nix
+++ b/nixos/tests/cntr.nix
@@ -28,10 +28,16 @@ let
       testScript = ''
         start_all()
         ${backend}.wait_for_unit("${backend}-nginx.service")
-        result = ${backend}.wait_until_succeeds(
-            "cntr attach -t ${backend} nginx sh -- -c 'curl localhost | grep Hello'"
+        ${backend}.wait_for_open_port(8181)
+        # For some reason, the cntr command hangs when run without the &.
+        # As such, we have to do some messy things to ensure we check the exitcode and output in a race-condition-safe manner
+        ${backend}.execute(
+            "(cntr attach -t ${backend} nginx sh -- -c 'curl localhost | grep Hello' > /tmp/result; echo $? > /tmp/exitcode; touch /tmp/done) &"
         )
-        assert "Hello" in result
+
+        ${backend}.wait_for_file("/tmp/done")
+        assert "0" == ${backend}.succeed("cat /tmp/exitcode").strip(), "non-zero exit code"
+        assert "Hello" in ${backend}.succeed("cat /tmp/result"), "no greeting in output"
       '';
     };
 
@@ -54,7 +60,13 @@ let
     testScript = ''
       machine.start()
       machine.wait_for_unit("container@test.service")
-      machine.succeed("cntr attach test sh -- -c 'ping -c5 172.16.0.1'")
+      # I haven't observed the same hanging behaviour in this version as in the OCI version which necessetates this messy invocation, but it's probably better to be safe than sorry and use it here as well
+      machine.execute(
+          "(cntr attach test sh -- -c 'ping -c5 172.16.0.1'; echo $? > /tmp/exitcode; touch /tmp/done) &"
+      )
+
+      machine.wait_for_file("/tmp/done")
+      assert "0" == machine.succeed("cat /tmp/exitcode").strip(), "non-zero exit code"
     '';
   };
 in {