Skip to content

Commit

Permalink
fix: extend wait timeout for test_delete_user()
Browse files Browse the repository at this point in the history
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()
  • Loading branch information
JohnVillalovos committed Feb 21, 2021
1 parent 2b29776 commit 19fde8e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
3 changes: 2 additions & 1 deletion tools/functional/api/test_users.py
Expand Up @@ -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()]

Expand Down
10 changes: 8 additions & 2 deletions tools/functional/conftest.py
Expand Up @@ -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

Expand Down

0 comments on commit 19fde8e

Please sign in to comment.