From ac4abaa9d521e4bc5ba5ac17ef5ebfda5e712a09 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Wed, 10 May 2023 05:01:50 +0200 Subject: [PATCH] nixos/tests/nginx: fix etag test flakiness --- nixos/tests/nginx.nix | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/nixos/tests/nginx.nix b/nixos/tests/nginx.nix index 2a7e0f48d868..8b1f921ec520 100644 --- a/nixos/tests/nginx.nix +++ b/nixos/tests/nginx.nix @@ -87,15 +87,23 @@ import ./make-test-python.nix ({ pkgs, ... }: { return etag - webserver.wait_for_unit("nginx") - webserver.wait_for_open_port(80) + def wait_for_nginx_on_port(port): + webserver.wait_for_unit("nginx") + webserver.wait_for_open_port(port) + + + # nginx can be ready before multi-user.target, in which case switching to + # a different configuration might not realize it needs to restart nginx. + webserver.wait_for_unit("multi-user.target") + + wait_for_nginx_on_port(80) with subtest("check ETag if serving Nix store paths"): old_etag = check_etag() webserver.succeed( "${etagSystem}/bin/switch-to-configuration test >&2" ) - webserver.sleep(1) + wait_for_nginx_on_port(80) new_etag = check_etag() assert old_etag != new_etag @@ -103,7 +111,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { webserver.succeed( "${justReloadSystem}/bin/switch-to-configuration test >&2" ) - webserver.wait_for_open_port(8080) + wait_for_nginx_on_port(8080) webserver.fail("journalctl -u nginx | grep -q -i stopped") webserver.succeed("journalctl -u nginx | grep -q -i reloaded") @@ -111,7 +119,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { webserver.succeed( "${reloadRestartSystem}/bin/switch-to-configuration test >&2" ) - webserver.wait_for_unit("nginx") + wait_for_nginx_on_port(80) webserver.succeed("journalctl -u nginx | grep -q -i stopped") with subtest("nixos-rebuild --switch should fail when there are configuration errors"):