Skip to content

Commit e409638

Browse files
chore: ensure reset_gitlab() succeeds
Ensure reset_gitlab() succeeds by waiting to make sure everything has been deleted as expected. If the timeout is exceeded fail the test. Not using `wait_for_sidekiq` as it didn't work. During testing I didn't see any sidekiq processes as being busy even though not everything was deleted.
1 parent d65ce36 commit e409638

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

tests/functional/conftest.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import pytest
88

99
import gitlab
10+
import gitlab.base
11+
12+
SLEEP_INTERVAL = 0.1
13+
TIMEOUT = 60 # seconds before timeout will occur
1014

1115

1216
@pytest.fixture(scope="session")
@@ -30,6 +34,37 @@ def reset_gitlab(gl):
3034
if user.username != "root":
3135
user.delete(hard_delete=True)
3236

37+
max_iterations = int(TIMEOUT / SLEEP_INTERVAL)
38+
39+
# Ensure everything has been reset
40+
start_time = time.perf_counter()
41+
42+
def wait_for_list_empty(
43+
rest_manager: gitlab.base.RESTManager, description: str
44+
) -> None:
45+
"""Wait for the list() to become empty or fail test if timeout is exceeded"""
46+
for _ in range(max_iterations):
47+
if rest_manager.list() == []:
48+
break
49+
time.sleep(SLEEP_INTERVAL)
50+
assert rest_manager.list() == [], (
51+
f"Did not delete all {description}. "
52+
f"Elapsed_time: {time.perf_counter() - start_time}"
53+
)
54+
55+
wait_for_list_empty(rest_manager=gl.projects, description="projects")
56+
wait_for_list_empty(rest_manager=gl.groups, description="groups")
57+
wait_for_list_empty(rest_manager=gl.variables, description="variables")
58+
59+
for _ in range(max_iterations):
60+
if len(gl.users.list()) <= 1:
61+
break
62+
time.sleep(SLEEP_INTERVAL)
63+
assert [user.username for user in gl.users.list()] == ["root"], (
64+
f"Did not delete all users. "
65+
f"elapsed_time: {time.perf_counter() - start_time}"
66+
)
67+
3368

3469
def set_token(container, fixture_dir):
3570
set_token_rb = fixture_dir / "set_token.rb"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy