Skip to content

Commit 161599b

Browse files
GitHKAndrei Neagu
andauthored
🐛 Flaky tests improvements (#6292)
Co-authored-by: Andrei Neagu <[email protected]>
1 parent dc0d182 commit 161599b

File tree

9 files changed

+19
-14
lines changed

9 files changed

+19
-14
lines changed

packages/models-library/src/models_library/api_schemas_webserver/product.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class GenerateInvitation(InputSchema):
8888

8989
class InvitationGenerated(OutputSchema):
9090
product_name: ProductName
91-
issuer: LowerCaseEmailStr
91+
issuer: str
9292
guest: LowerCaseEmailStr
9393
trial_account_days: PositiveInt | None = None
9494
extra_credits_in_usd: PositiveInt | None = None
@@ -100,7 +100,7 @@ class Config(OutputSchema.Config):
100100
"examples": [
101101
{
102102
"productName": "osparc",
103-
"issuer": "john.doe@email.com",
103+
"issuer": "john.doe",
104104
"guest": "[email protected]",
105105
"trialAccountDays": 7,
106106
"extraCreditsInUsd": 30,

packages/models-library/src/models_library/invitations.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class InvitationInputs(BaseModel):
3939
@classmethod
4040
def trim_long_issuers_to_max_length(cls, v):
4141
if v and isinstance(v, str):
42-
return v[: _MAX_LEN - 1]
42+
return v[:_MAX_LEN]
4343
return v
4444

4545

packages/pytest-simcore/src/pytest_simcore/helpers/faker_factories.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def random_user(
5858
data = {
5959
# NOTE: ensures user name is unique to avoid flaky tests
6060
"name": f"{fake.user_name()}_{fake.uuid4()}",
61-
"email": fake.email().lower(),
61+
"email": f"{fake.uuid4()}_{fake.email().lower()}",
6262
"password_hash": _DEFAULT_HASH,
6363
"status": UserStatus.ACTIVE,
6464
}

packages/service-library/tests/test_redis.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
RedisClientsManager,
2222
RedisManagerDBConfig,
2323
)
24+
from servicelib.utils import limited_gather
2425
from settings_library.redis import RedisDatabase, RedisSettings
2526
from tenacity import (
2627
AsyncRetrying,
@@ -262,7 +263,9 @@ async def _inc_counter() -> None:
262263
):
263264
await counter.race_condition_increase(INCREASE_BY)
264265

265-
await asyncio.gather(*(_inc_counter() for _ in range(INCREASE_OPERATIONS)))
266+
await limited_gather(
267+
*(_inc_counter() for _ in range(INCREASE_OPERATIONS)), limit=15
268+
)
266269
assert counter.value == INCREASE_BY * INCREASE_OPERATIONS
267270

268271

services/dynamic-sidecar/src/simcore_service_dynamic_sidecar/api/containers_extension.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,9 @@ async def detach_container_from_network(
160160
container_instance = await docker.containers.get(container_id)
161161
container_inspect = await container_instance.show()
162162

163-
attached_network_ids: set[str] = {
164-
x["NetworkID"]
165-
for x in container_inspect["NetworkSettings"]["Networks"].values()
166-
}
163+
attached_network_ids: set[str] = set(
164+
container_inspect["NetworkSettings"]["Networks"].keys()
165+
)
167166

168167
if item.network_id not in attached_network_ids:
169168
_logger.debug(
@@ -176,4 +175,4 @@ async def detach_container_from_network(
176175
# NOTE: A docker network is only visible on a docker node when it is
177176
# used by a container
178177
network = DockerNetwork(docker=docker, id_=item.network_id)
179-
await network.disconnect({"Container": container_id})
178+
await network.disconnect({"Container": container_id, "Force": True})

services/dynamic-sidecar/tests/unit/test_api_containers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@ async def test_attach_detach_container_to_network(
710710
container = await docker.containers.get(container_name)
711711
container_inspect = await container.show()
712712
networks = container_inspect["NetworkSettings"]["Networks"]
713-
assert network_id in networks
713+
assert network_id not in networks
714714

715715

716716
@pytest.fixture

services/web/server/src/simcore_service_webserver/products/_invitations_handlers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ async def generate_invitation(request: web.Request):
6060

6161
invitation = InvitationGenerated(
6262
product_name=generated.product,
63-
issuer=generated.issuer, # type: ignore[arg-type]
63+
issuer=generated.issuer,
6464
guest=generated.guest, # type: ignore[arg-type]
6565
trial_account_days=generated.trial_account_days,
6666
extra_credits_in_usd=generated.extra_credits_in_usd,

services/web/server/tests/unit/with_dbs/03/invitations/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ def _generate(url, **kwargs):
147147
body["product"] = example["product"]
148148

149149
fake_code = binascii.hexlify(json.dumps(body).encode()).decode()
150-
151150
return CallbackResult(
152151
status=status.HTTP_200_OK,
153152
payload=jsonable_encoder(

services/web/server/tests/unit/with_dbs/03/invitations/test_products__invitations_handlers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
GenerateInvitation,
1616
InvitationGenerated,
1717
)
18+
from models_library.invitations import _MAX_LEN
1819
from pydantic import PositiveInt
1920
from pytest_simcore.aioresponses_mocker import AioResponsesMock
2021
from pytest_simcore.helpers.assert_checks import assert_status
@@ -99,7 +100,10 @@ async def test_product_owner_generates_invitation(
99100
assert not error
100101

101102
got = InvitationGenerated.parse_obj(data)
102-
expected = {"issuer": logged_user["email"], **request_model.dict(exclude_none=True)}
103+
expected = {
104+
"issuer": logged_user["email"][:_MAX_LEN],
105+
**request_model.dict(exclude_none=True),
106+
}
103107
assert got.dict(include=set(expected), by_alias=False) == expected
104108

105109
product_base_url = f"{client.make_url('/')}"

0 commit comments

Comments
 (0)