Skip to content

Commit 9305720

Browse files
committed
reconfiguring test folders and also making some updates
1 parent bb7dca8 commit 9305720

20 files changed

+353
-363
lines changed

tests/integration/annotation_import/test_bulk_import_request.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def test_create_from_url(configured_project):
2929
assert bulk_import_request.state == BulkImportRequestState.RUNNING
3030

3131

32-
def test_validate_file(client, configured_project):
32+
def test_validate_file(configured_project):
3333
name = str(uuid.uuid4())
3434
url = "https://storage.googleapis.com/labelbox-public-bucket/predictions_test_v2.ndjson"
3535
with pytest.raises(MALValidationError):
@@ -151,7 +151,7 @@ def test_wait_till_done(rectangle_inference, configured_project):
151151
'uuid']
152152

153153

154-
def test_project_bulk_import_requests(client, configured_project, predictions):
154+
def test_project_bulk_import_requests(configured_project, predictions):
155155
result = configured_project.bulk_import_requests()
156156
assert len(list(result)) == 0
157157

@@ -174,7 +174,7 @@ def test_project_bulk_import_requests(client, configured_project, predictions):
174174
assert len(list(result)) == 3
175175

176176

177-
def test_delete(client, configured_project, predictions):
177+
def test_delete(configured_project, predictions):
178178
name = str(uuid.uuid4())
179179

180180
bulk_import_request = configured_project.upload_annotations(

tests/integration/annotation_import/test_label_import.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import uuid
2-
import ndjson
32
import pytest
4-
import requests
53

64
from labelbox.schema.annotation_import import AnnotationImportState, LabelImport
75
"""

tests/integration/annotation_import/test_model_run.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33

44
def test_model_run(client, configured_project_with_label, rand_gen):
5-
project, label_id = configured_project_with_label
5+
project, _, _, label = configured_project_with_label
6+
label_id = label.uid
67
ontology = project.ontology()
78
data = {"name": rand_gen(str), "ontology_id": ontology.uid}
89
model = client.create_model(data["name"], data["ontology_id"])

tests/integration/conftest.py

Lines changed: 23 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import re
33
import uuid
44
import time
5-
from collections import namedtuple
65
from datetime import datetime
76
from enum import Enum
87
from random import randint
@@ -158,28 +157,6 @@ def gen(field_type):
158157
@pytest.fixture
159158
def project(client, rand_gen):
160159
project = client.create_project(name=rand_gen(str))
161-
162-
def create_label(**kwargs):
163-
""" Creates a label on a Legacy Editor project. Not supported in the new Editor.
164-
Args:
165-
**kwargs: Label attributes. At minimum, the label `DataRow`.
166-
"""
167-
Label = Entity.Label
168-
kwargs[Label.project] = project
169-
kwargs[Label.seconds_to_label] = kwargs.get(Label.seconds_to_label.name,
170-
0.0)
171-
data = {
172-
Label.attribute(attr) if isinstance(attr, str) else attr:
173-
value.uid if isinstance(value, DbObject) else value
174-
for attr, value in kwargs.items()
175-
}
176-
query_str, params = query.create(Label, data)
177-
query_str = query_str.replace(
178-
"data: {", "data: {type: {connect: {name: \"Any\"}} ")
179-
res = project.client.execute(query_str, params)
180-
return Label(project.client, res["createLabel"])
181-
182-
project.create_label = create_label
183160
yield project
184161
project.delete()
185162

@@ -205,21 +182,6 @@ def datarow(dataset, image_url):
205182
dr.delete()
206183

207184

208-
LabelPack = namedtuple("LabelPack", "project dataset data_row label")
209-
210-
211-
@pytest.fixture
212-
def label_pack(project, rand_gen, image_url):
213-
client = project.client
214-
dataset = client.create_dataset(name=rand_gen(str))
215-
project.datasets.connect(dataset)
216-
data_row = dataset.create_data_row(row_data=IMG_URL)
217-
label = project.create_label(data_row=data_row, label=rand_gen(str))
218-
time.sleep(10)
219-
yield LabelPack(project, dataset, data_row, label)
220-
dataset.delete()
221-
222-
223185
@pytest.fixture
224186
def iframe_url(environ) -> str:
225187
if environ in [Environ.PROD, Environ.LOCAL]:
@@ -299,6 +261,11 @@ def configured_project(project, client, rand_gen, image_url):
299261

300262
@pytest.fixture
301263
def configured_project_with_label(client, rand_gen, image_url):
264+
"""Project with a connected dataset, having one datarow
265+
Project contains an ontology with 1 bbox tool
266+
Additionally includes a create_label method for any needed extra labels
267+
One label is already created and yielded when using fixture
268+
"""
302269
project = client.create_project(name=rand_gen(str))
303270
dataset = client.create_dataset(name=rand_gen(str), projects=project)
304271
data_row = dataset.create_data_row(row_data=image_url)
@@ -310,7 +277,6 @@ def configured_project_with_label(client, rand_gen, image_url):
310277
Tool(tool=Tool.Type.BBOX, name="test-bbox-class"),
311278
])
312279
project.setup(editor, ontology_builder.asdict())
313-
project.enable_model_assisted_labeling()
314280
ontology = ontology_builder.from_project(project)
315281
predictions = [{
316282
"uuid": str(uuid.uuid4()),
@@ -325,13 +291,26 @@ def configured_project_with_label(client, rand_gen, image_url):
325291
"width": 50
326292
}
327293
}]
328-
upload_task = LabelImport.create_from_objects(
329-
client, project.uid, f'label-import-{uuid.uuid4()}', predictions)
330-
upload_task.wait_until_done()
331-
label = next(project.labels()).uid
332-
yield [project, label]
294+
295+
def create_label():
296+
""" Ad-hoc function to create a LabelImport
297+
298+
Creates a LabelImport task which will create a label
299+
"""
300+
upload_task = LabelImport.create_from_objects(
301+
client, project.uid, f'label-import-{uuid.uuid4()}', predictions)
302+
upload_task.wait_until_done(sleep_time_seconds=5)
303+
304+
project.create_label = create_label
305+
project.create_label()
306+
label = next(project.labels())
307+
yield [project, dataset, data_row, label]
333308
dataset.delete()
334309
project.delete()
310+
data_row.delete()
311+
312+
for label in project.labels():
313+
label.delete()
335314

336315

337316
@pytest.fixture

tests/integration/test_batch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def big_dataset(dataset: Dataset):
2020
dataset.delete()
2121

2222

23-
def test_submit_batch(configured_project: Project, big_dataset):
23+
def test_submit_batch(configured_project: Project, big_dataset: Dataset):
2424
configured_project.update(queue_mode=QueueMode.Batch)
2525

2626
data_rows = [dr.uid for dr in list(big_dataset.export_data_rows())]

tests/integration/test_benchmark.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
def test_benchmark(label_pack):
2-
project, _, data_row, label = label_pack
1+
def test_benchmark(configured_project_with_label):
2+
project, _, data_row, label = configured_project_with_label
33
assert set(project.benchmarks()) == set()
44
assert label.is_benchmark_reference == False
55

tests/integration/test_data_rows.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,14 @@ def test_data_row_filtering_sorting(dataset, image_url):
158158
# Test filtering
159159
row1 = list(dataset.data_rows(where=DataRow.external_id == "row1"))
160160
assert len(row1) == 1
161+
row1 = dataset.data_rows_for_external_id("row1")
162+
assert len(row1) == 1
161163
row1 = row1[0]
162164
assert row1.external_id == "row1"
163165
row2 = list(dataset.data_rows(where=DataRow.external_id == "row2"))
164166
assert len(row2) == 1
167+
row2 = dataset.data_rows_for_external_id("row2")
168+
assert len(row2) == 1
165169
row2 = row2[0]
166170
assert row2.external_id == "row2"
167171

tests/integration/test_delegated_access.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,9 @@ def test_no_integration(client, image_url):
4141
dr = ds.create_data_row(row_data=image_url)
4242
assert requests.get(dr.row_data).status_code == 200
4343
ds.delete()
44+
45+
46+
def test_no_default_integration(client):
47+
ds = client.create_dataset(name="new_ds")
48+
assert ds.iam_integration() is None
49+
ds.delete()

tests/integration/test_label.py

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from labelbox.schema.labeling_frontend import LabelingFrontend
21
import time
32

43
import pytest
@@ -7,11 +6,8 @@
76
from labelbox import Label
87

98

10-
def test_labels(label_pack):
11-
project, dataset, data_row, label = label_pack
12-
13-
# Labels are not visible in the project immediately.
14-
time.sleep(10)
9+
def test_labels(configured_project_with_label):
10+
project, _, data_row, label = configured_project_with_label
1511

1612
assert list(project.labels()) == [label]
1713
assert list(data_row.labels()) == [label]
@@ -23,14 +19,15 @@ def test_labels(label_pack):
2319
label.delete()
2420

2521
# Labels are not visible in the project immediately.
26-
time.sleep(10)
22+
time.sleep(5)
2723

2824
assert list(project.labels()) == []
2925
assert list(data_row.labels()) == []
3026

3127

32-
def test_label_export(client, configured_project_with_label):
33-
project, label_id = configured_project_with_label
28+
def test_label_export(configured_project_with_label):
29+
project, _, _, label = configured_project_with_label
30+
label_id = label.uid
3431

3532
exported_labels_url = project.export_labels()
3633
assert exported_labels_url is not None
@@ -41,52 +38,35 @@ def test_label_export(client, configured_project_with_label):
4138
# The new exporter doesn't work with the create_label mutation
4239

4340

44-
def test_label_update(label_pack):
45-
project, dataset, data_row, label = label_pack
41+
def test_label_update(configured_project_with_label):
42+
_, _, _, label = configured_project_with_label
4643
label.update(label="something else")
4744
assert label.label == "something else"
4845

4946

50-
def test_label_filter_order(client, project, rand_gen, image_url):
51-
dataset_1 = client.create_dataset(name=rand_gen(str), projects=project)
52-
dataset_2 = client.create_dataset(name=rand_gen(str), projects=project)
53-
data_row_1 = dataset_1.create_data_row(row_data=image_url)
54-
data_row_2 = dataset_2.create_data_row(row_data=image_url)
47+
def test_label_filter_order(configured_project_with_label):
48+
project, _, _, label = configured_project_with_label
5549

56-
l1 = project.create_label(data_row=data_row_1, label="l1")
57-
time.sleep(1) #Ensure there is no race condition
58-
l2 = project.create_label(data_row=data_row_2, label="l2")
59-
60-
# Labels are not visible in the project immediately.
61-
time.sleep(20)
50+
l1 = label
51+
project.create_label()
52+
l2 = next(project.labels())
6253

63-
# Filtering supported on dataset
6454
assert set(project.labels()) == {l1, l2}
65-
assert set(project.labels(datasets=[])) == set()
66-
assert set(project.labels(datasets=[dataset_1])) == {l1}
67-
assert set(project.labels(datasets=[dataset_2])) == {l2}
68-
assert set(project.labels(datasets=[dataset_1, dataset_2])) == {l1, l2}
6955

7056
assert list(project.labels(order_by=Label.created_at.asc)) == [l1, l2]
7157
assert list(project.labels(order_by=Label.created_at.desc)) == [l2, l1]
7258

73-
dataset_1.delete()
74-
dataset_2.delete()
75-
project.delete()
7659

60+
def test_label_bulk_deletion(configured_project_with_label):
61+
project, _, _, _ = configured_project_with_label
7762

78-
def test_label_bulk_deletion(project, rand_gen, image_url):
79-
dataset = project.client.create_dataset(name=rand_gen(str),
80-
projects=project)
81-
row_1 = dataset.create_data_row(row_data=image_url)
82-
row_2 = dataset.create_data_row(row_data=image_url)
83-
84-
l1 = project.create_label(data_row=row_1, label="l1")
85-
l2 = project.create_label(data_row=row_1, label="l2")
86-
l3 = project.create_label(data_row=row_2, label="l3")
87-
88-
# Labels are not visible in the project immediately.
89-
time.sleep(10)
63+
for _ in range(2):
64+
#only run twice, already have one label in the fixture
65+
project.create_label()
66+
labels = project.labels()
67+
l1 = next(labels)
68+
l2 = next(labels)
69+
l3 = next(labels)
9070

9171
assert set(project.labels()) == {l1, l2, l3}
9272

@@ -98,5 +78,3 @@ def test_label_bulk_deletion(project, rand_gen, image_url):
9878
time.sleep(5)
9979

10080
assert set(project.labels()) == {l2}
101-
102-
dataset.delete()

tests/integration/test_labeler_performance.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
from datetime import datetime, timezone, timedelta
2-
import time
32
import pytest
43

54

6-
def test_labeler_performance(label_pack):
7-
project, dataset, data_row, label = label_pack
8-
# Sleep a bit as it seems labeler performance isn't updated immediately.
9-
time.sleep(10)
5+
def test_labeler_performance(configured_project_with_label):
6+
project, _, _, _ = configured_project_with_label
107

118
labeler_performance = list(project.labeler_performance())
129
assert len(labeler_performance) == 1

0 commit comments

Comments
 (0)