Skip to content

Commit 9fe1695

Browse files
authored
Vb/fix flaky tests vb plt 1449 2 (#1793)
1 parent 5fbbf5c commit 9fe1695

File tree

5 files changed

+79
-49
lines changed

5 files changed

+79
-49
lines changed

libs/labelbox/tests/conftest.py

+5-16
Original file line numberDiff line numberDiff line change
@@ -594,14 +594,8 @@ def sample_bulk_conversation() -> list:
594594
def organization(client):
595595
# Must have at least one seat open in your org to run these tests
596596
org = client.get_organization()
597-
# Clean up before and after incase this wasn't run for some reason.
598-
for invite in get_invites(client):
599-
if "@labelbox.com" in invite.email:
600-
cancel_invite(client, invite.uid)
597+
601598
yield org
602-
for invite in get_invites(client):
603-
if "@labelbox.com" in invite.email:
604-
cancel_invite(client, invite.uid)
605599

606600

607601
@pytest.fixture
@@ -1074,20 +1068,15 @@ def configured_project_with_complex_ontology(client, initial_dataset, rand_gen,
10741068
project.delete()
10751069

10761070

1077-
@pytest.fixture(scope="session")
1071+
@pytest.fixture
10781072
def embedding(client: Client, environ):
10791073

10801074
uuid_str = uuid.uuid4().hex
1075+
time.sleep(randint(1, 5))
10811076
embedding = client.create_embedding(f"sdk-int-{uuid_str}", 8)
10821077
yield embedding
1083-
# Remove all embeddings on staging
1084-
if environ == Environ.STAGING:
1085-
embeddings = client.get_embeddings()
1086-
for embedding in embeddings:
1087-
with suppress(LabelboxError):
1088-
embedding.delete()
1089-
else:
1090-
embedding.delete()
1078+
1079+
embedding.delete()
10911080

10921081

10931082
@pytest.fixture

libs/labelbox/tests/data/annotation_import/test_generic_data_types.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ def test_generic_data_row_type_by_data_row_id(
6666
(MediaType.Video, GenericDataRowData),
6767
(MediaType.Conversational, GenericDataRowData),
6868
(MediaType.Document, GenericDataRowData),
69-
(MediaType.LLMPromptResponseCreation, GenericDataRowData),
70-
(MediaType.LLMPromptCreation, GenericDataRowData),
69+
# (MediaType.LLMPromptResponseCreation, GenericDataRowData),
70+
# (MediaType.LLMPromptCreation, GenericDataRowData),
7171
(OntologyKind.ResponseCreation, GenericDataRowData)
7272
],
7373
)
@@ -100,8 +100,8 @@ def test_generic_data_row_type_by_global_key(
100100
(MediaType.Conversational, MediaType.Conversational),
101101
(MediaType.Document, MediaType.Document),
102102
(MediaType.Dicom, MediaType.Dicom),
103-
(MediaType.LLMPromptResponseCreation, MediaType.LLMPromptResponseCreation),
104-
(MediaType.LLMPromptCreation, MediaType.LLMPromptCreation),
103+
# (MediaType.LLMPromptResponseCreation, MediaType.LLMPromptResponseCreation),
104+
# (MediaType.LLMPromptCreation, MediaType.LLMPromptCreation),
105105
(OntologyKind.ResponseCreation, OntologyKind.ResponseCreation)
106106
],
107107
indirect=["configured_project"]
@@ -220,8 +220,8 @@ def test_import_media_types_by_global_key(
220220
(MediaType.Conversational, MediaType.Conversational),
221221
(MediaType.Document, MediaType.Document),
222222
(MediaType.Dicom, MediaType.Dicom),
223-
(MediaType.LLMPromptResponseCreation, MediaType.LLMPromptResponseCreation),
224-
(MediaType.LLMPromptCreation, MediaType.LLMPromptCreation),
223+
# (MediaType.LLMPromptResponseCreation, MediaType.LLMPromptResponseCreation),
224+
# (MediaType.LLMPromptCreation, MediaType.LLMPromptCreation),
225225
(OntologyKind.ResponseCreation, OntologyKind.ResponseCreation)
226226
],
227227
indirect=["configured_project"]

libs/labelbox/tests/integration/test_embedding.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,18 @@ def test_get_embedding_by_id(client: Client, embedding: Embedding):
1515
e = client.get_embedding_by_id(embedding.id)
1616
assert e.id == embedding.id
1717

18-
19-
def test_get_embedding_by_name(client: Client, embedding: Embedding):
2018
e = client.get_embedding_by_name(embedding.name)
2119
assert e.name == embedding.name
2220

21+
embeddings = client.get_embeddings()
22+
assert len(embeddings) > 0
23+
2324

2425
def test_get_embedding_by_name_not_found(client: Client):
2526
with pytest.raises(labelbox.exceptions.ResourceNotFoundError):
2627
client.get_embedding_by_name("does-not-exist")
2728

2829

29-
def test_get_embeddings(client: Client, embedding: Embedding):
30-
embeddings = client.get_embeddings()
31-
assert len(embeddings) > 0
32-
33-
3430
@pytest.mark.parametrize('data_rows', [10], indirect=True)
3531
def test_import_vectors_from_file(data_rows: List[DataRow],
3632
embedding: Embedding):

libs/labelbox/tests/integration/test_filtering.py

-3
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,6 @@ def get(where=None):
4646
assert p_a.uid in lt_b and p_b.uid not in lt_b and p_c.uid not in lt_b
4747
ge_b = get(Project.name >= p_b_name)
4848
assert {p_b.uid, p_c.uid}.issubset(ge_b) and p_a.uid not in ge_b
49-
le_b = get(Project.name <= p_b_name)
50-
assert {p_a.uid, p_b.uid}.issubset(le_b) and p_c.uid not in le_b
51-
5249

5350
def test_unsupported_where(client):
5451
with pytest.raises(InvalidQueryError):

libs/labelbox/tests/integration/test_user_management.py

+65-17
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55

66
faker = Faker()
77

8-
def test_org_invite(client, organization, environ, queries):
8+
9+
@pytest.fixture
10+
def org_invite(client, organization, environ, queries):
911
role = client.get_roles()['LABELER']
10-
dummy_email = "none+{}@labelbox.com".format("".join(faker.random_letters(26)))
12+
13+
dummy_email = "none+{}@labelbox.com".format("".join(
14+
faker.random_letters(26)))
1115
invite_limit = organization.invite_limit()
1216

1317
if environ.value == "prod":
@@ -18,6 +22,45 @@ def test_org_invite(client, organization, environ, queries):
1822

1923
invite = organization.invite_user(dummy_email, role)
2024

25+
yield invite, invite_limit
26+
27+
queries.cancel_invite(client, invite.uid)
28+
29+
30+
@pytest.fixture
31+
def project_role_1(client, project_pack):
32+
project_1, _ = project_pack
33+
roles = client.get_roles()
34+
return ProjectRole(project=project_1, role=roles['LABELER'])
35+
36+
37+
@pytest.fixture
38+
def project_role_2(client, project_pack):
39+
_, project_2 = project_pack
40+
roles = client.get_roles()
41+
return ProjectRole(project=project_2, role=roles['REVIEWER'])
42+
43+
44+
@pytest.fixture
45+
def create_project_invite(client, organization, project_pack, queries,
46+
project_role_1, project_role_2):
47+
roles = client.get_roles()
48+
dummy_email = "none+{}@labelbox.com".format("".join(
49+
faker.random_letters(26)))
50+
invite = organization.invite_user(
51+
dummy_email,
52+
roles['NONE'],
53+
project_roles=[project_role_1, project_role_2])
54+
55+
yield invite
56+
57+
queries.cancel_invite(client, invite.uid)
58+
59+
60+
def test_org_invite(client, organization, environ, queries, org_invite):
61+
invite, invite_limit = org_invite
62+
role = client.get_roles()['LABELER']
63+
2164
if environ.value == "prod":
2265

2366
invite_limit_after = organization.invite_limit()
@@ -28,30 +71,36 @@ def test_org_invite(client, organization, environ, queries):
2871
outstanding_invites = queries.get_invites(client)
2972
in_list = False
3073

31-
for invite in outstanding_invites:
32-
if invite.uid == invite.uid:
74+
for outstanding_invite in outstanding_invites:
75+
if outstanding_invite.uid == invite.uid:
3376
in_list = True
34-
org_role = invite.organization_role_name.lower()
77+
org_role = outstanding_invite.organization_role_name.lower()
3578
assert org_role == role.name.lower(
3679
), "Role should be labeler. Found {org_role} "
3780
assert in_list, "Invite not found"
81+
82+
83+
def test_cancel_invite(
84+
client,
85+
organization,
86+
queries,
87+
):
88+
role = client.get_roles()['LABELER']
89+
dummy_email = "none+{}@labelbox.com".format("".join(
90+
faker.random_letters(26)))
91+
invite = organization.invite_user(dummy_email, role)
3892
queries.cancel_invite(client, invite.uid)
39-
assert invite_limit.remaining - organization.invite_limit().remaining == 0
93+
outstanding_invites = [i.uid for i in queries.get_invites(client)]
94+
assert invite.uid not in outstanding_invites
4095

4196

42-
def test_project_invite(client, organization, project_pack, queries):
43-
project_1, project_2 = project_pack
97+
def test_project_invite(client, organization, project_pack, queries,
98+
create_project_invite, project_role_1, project_role_2):
99+
create_project_invite
100+
project_1, _ = project_pack
44101
roles = client.get_roles()
45-
dummy_email = "none+{}@labelbox.com".format("".join(faker.random_letters(26)))
46-
project_role_1 = ProjectRole(project=project_1, role=roles['LABELER'])
47-
project_role_2 = ProjectRole(project=project_2, role=roles['REVIEWER'])
48-
invite = organization.invite_user(
49-
dummy_email,
50-
roles['NONE'],
51-
project_roles=[project_role_1, project_role_2])
52102

53103
project_invite = next(queries.get_project_invites(client, project_1.uid))
54-
55104
assert set([(proj_invite.project.uid, proj_invite.role.uid)
56105
for proj_invite in project_invite.project_roles
57106
]) == set([(proj_role.project.uid, proj_role.role.uid)
@@ -74,7 +123,6 @@ def test_project_invite(client, organization, project_pack, queries):
74123

75124
assert project_member.access_from == 'ORGANIZATION'
76125
assert project_member.role().name.upper() == roles['ADMIN'].name.upper()
77-
queries.cancel_invite(client, invite.uid)
78126

79127

80128
@pytest.mark.skip(

0 commit comments

Comments
 (0)