From 19fde8ed0e794d33471056e2c07539cde70a8699 Mon Sep 17 00:00:00 2001 From: "John L. Villalovos" Date: Sun, 21 Feb 2021 10:11:22 -0800 Subject: [PATCH] fix: extend wait timeout for test_delete_user() Have been seeing intermittent failures of the test_delete_user() functional test. Have made the following changes to hopefully resolve the issue and if it still fails to know better why the failure occurred. * Extend the wait timeout for test_delete_user() from 30 to 60 tries of 0.5 seconds each. * Modify wait_for_sidekiq() to return True if sidekiq process terminated. Return False if the timeout expired. * Modify wait_for_sidekiq() to loop through all processes instead of assuming there is only one process. If all processes are not busy then return. * Modify wait_for_sidekiq() to sleep at least once before checking for processes being busy. * Check for True being returned in test_delete_user() call to wait_for_sidekiq() --- tools/functional/api/test_users.py | 3 ++- tools/functional/conftest.py | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/functional/api/test_users.py b/tools/functional/api/test_users.py index 485829d14..044831a82 100644 --- a/tools/functional/api/test_users.py +++ b/tools/functional/api/test_users.py @@ -56,7 +56,8 @@ def test_delete_user(gl, wait_for_sidekiq): ) new_user.delete() - wait_for_sidekiq() + result = wait_for_sidekiq(timeout=60) + assert result == True, "sidekiq process should have terminated but did not" assert new_user.id not in [user.id for user in gl.users.list()] diff --git a/tools/functional/conftest.py b/tools/functional/conftest.py index a0b14f9c2..648fe5e51 100644 --- a/tools/functional/conftest.py +++ b/tools/functional/conftest.py @@ -89,9 +89,15 @@ def wait_for_sidekiq(gl): def _wait(timeout=30, step=0.5): for _ in range(timeout): - if not gl.sidekiq.process_metrics()["processes"][0]["busy"]: - return time.sleep(step) + busy = False + processes = gl.sidekiq.process_metrics()["processes"] + for process in processes: + if process["busy"]: + busy = True + if not busy: + return True + return False return _wait