Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
B
Base Worker
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Workers
Base Worker
Commits
1fb6a3ab
Commit
1fb6a3ab
authored
4 years ago
by
Bastien Abadie
Browse files
Options
Downloads
Patches
Plain Diff
Fix existing unit tests
parent
9aee33a9
No related branches found
No related tags found
1 merge request
!58
Update Worker Activity per element
Pipeline
#78236
passed
4 years ago
Stage: test
Stage: build
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
tests/conftest.py
+25
-1
25 additions, 1 deletion
tests/conftest.py
tests/test_base_worker.py
+4
-4
4 additions, 4 deletions
tests/test_base_worker.py
tests/test_elements_worker.py
+51
-29
51 additions, 29 deletions
tests/test_elements_worker.py
with
80 additions
and
34 deletions
tests/conftest.py
+
25
−
1
View file @
1fb6a3ab
...
...
@@ -51,7 +51,7 @@ def give_worker_version_id_env_variable(monkeypatch):
@pytest.fixture
def
mock_worker_version_api
(
responses
):
def
mock_worker_version_api
(
responses
,
mock_user_api
):
"""
Provide a mock API response to get worker configuration
"""
payload
=
{
"
id
"
:
"
12341234-1234-1234-1234-123412341234
"
,
...
...
@@ -83,6 +83,30 @@ def mock_worker_version_api(responses):
)
@pytest.fixture
def
mock_user_api
(
responses
):
"""
Provide a mock API response to retrieve user details
Workers Activity is disabled in this mock
"""
payload
=
{
"
id
"
:
1
,
"
email
"
:
"
bot@teklia.com
"
,
"
display_name
"
:
"
Bender
"
,
"
features
"
:
{
"
workers_activity
"
:
False
,
"
signup
"
:
False
,
},
}
responses
.
add
(
responses
.
GET
,
"
http://testserver/api/v1/user/
"
,
status
=
200
,
body
=
json
.
dumps
(
payload
),
content_type
=
"
application/json
"
,
)
@pytest.fixture
def
mock_elements_worker
(
monkeypatch
,
mock_worker_version_api
):
"""
Build and configure an ElementsWorker with fixed CLI parameters to avoid issues with pytest
"""
...
...
This diff is collapsed.
Click to expand it.
tests/test_base_worker.py
+
4
−
4
View file @
1fb6a3ab
...
...
@@ -37,7 +37,7 @@ def test_init_var_ponos_data_given(monkeypatch):
assert
worker
.
worker_version_id
==
"
12341234-1234-1234-1234-123412341234
"
def
test_init_var_worker_version_id_missing
(
monkeypatch
):
def
test_init_var_worker_version_id_missing
(
monkeypatch
,
mock_user_api
):
monkeypatch
.
setattr
(
sys
,
"
argv
"
,
[
"
worker
"
])
monkeypatch
.
delenv
(
"
WORKER_VERSION_ID
"
)
worker
=
BaseWorker
()
...
...
@@ -47,7 +47,7 @@ def test_init_var_worker_version_id_missing(monkeypatch):
assert
worker
.
config
==
{}
# default empty case
def
test_init_var_worker_local_file
(
monkeypatch
,
tmp_path
):
def
test_init_var_worker_local_file
(
monkeypatch
,
tmp_path
,
mock_user_api
):
# Build a dummy yaml config file
config
=
tmp_path
/
"
config.yml
"
config
.
write_text
(
"
---
\n
localKey: abcdef123
"
)
...
...
@@ -63,7 +63,7 @@ def test_init_var_worker_local_file(monkeypatch, tmp_path):
config
.
unlink
()
def
test_cli_default
(
mocker
,
mock_worker_version_api
):
def
test_cli_default
(
mocker
,
mock_worker_version_api
,
mock_user_api
):
worker
=
BaseWorker
()
spy
=
mocker
.
spy
(
worker
,
"
add_arguments
"
)
assert
not
spy
.
called
...
...
@@ -85,7 +85,7 @@ def test_cli_default(mocker, mock_worker_version_api):
logger
.
setLevel
(
logging
.
NOTSET
)
def
test_cli_arg_verbose_given
(
mocker
,
mock_worker_version_api
):
def
test_cli_arg_verbose_given
(
mocker
,
mock_worker_version_api
,
mock_user_api
):
worker
=
BaseWorker
()
spy
=
mocker
.
spy
(
worker
,
"
add_arguments
"
)
assert
not
spy
.
called
...
...
This diff is collapsed.
Click to expand it.
tests/test_elements_worker.py
+
51
−
29
View file @
1fb6a3ab
...
...
@@ -254,8 +254,9 @@ def test_load_corpus_classes_api_error(responses, mock_elements_worker):
):
mock_elements_worker
.
load_corpus_classes
(
corpus_id
)
assert
len
(
responses
.
calls
)
==
6
assert
len
(
responses
.
calls
)
==
7
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
# We do 5 retries
f
"
http://testserver/api/v1/corpus/
{
corpus_id
}
/classes/
"
,
...
...
@@ -299,8 +300,9 @@ def test_load_corpus_classes(responses, mock_elements_worker):
assert
not
mock_elements_worker
.
classes
mock_elements_worker
.
load_corpus_classes
(
corpus_id
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/corpus/
{
corpus_id
}
/classes/
"
,
]
...
...
@@ -335,8 +337,9 @@ def test_get_ml_class_id_load_classes(responses, mock_elements_worker):
assert
not
mock_elements_worker
.
classes
ml_class_id
=
mock_elements_worker
.
get_ml_class_id
(
corpus_id
,
"
good
"
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/corpus/
{
corpus_id
}
/classes/
"
,
]
...
...
@@ -437,7 +440,7 @@ def test_get_ml_class_reload(responses, mock_elements_worker):
# Simply request class 2, it should be reloaded
assert
mock_elements_worker
.
get_ml_class_id
(
corpus_id
,
"
class2
"
)
==
"
class2_id
"
assert
len
(
responses
.
calls
)
==
4
assert
len
(
responses
.
calls
)
==
5
assert
mock_elements_worker
.
classes
==
{
corpus_id
:
{
"
class1
"
:
"
class1_id
"
,
...
...
@@ -445,6 +448,7 @@ def test_get_ml_class_reload(responses, mock_elements_worker):
}
}
assert
[(
call
.
request
.
method
,
call
.
request
.
url
)
for
call
in
responses
.
calls
]
==
[
(
"
GET
"
,
"
http://testserver/api/v1/user/
"
),
(
"
GET
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
...
...
@@ -599,8 +603,9 @@ def test_create_sub_element_api_error(responses, mock_elements_worker):
polygon
=
[[
1
,
1
],
[
2
,
2
],
[
2
,
1
],
[
1
,
2
]],
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/elements/create/
"
,
]
...
...
@@ -628,12 +633,13 @@ def test_create_sub_element(responses, mock_elements_worker):
polygon
=
[[
1
,
1
],
[
2
,
2
],
[
2
,
1
],
[
1
,
2
]],
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/elements/create/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
type
"
:
"
something
"
,
"
name
"
:
"
0
"
,
"
image
"
:
"
22222222-2222-2222-2222-222222222222
"
,
...
...
@@ -684,8 +690,9 @@ def test_create_transcription_type_warning(responses, mock_elements_worker):
==
"
Transcription types are deprecated and will be removed in the next release.
"
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/element/
{
elt
.
id
}
/transcription/
"
,
]
...
...
@@ -772,8 +779,9 @@ def test_create_transcription_api_error(responses, mock_elements_worker):
score
=
0.42
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/element/
{
elt
.
id
}
/transcription/
"
,
]
...
...
@@ -793,13 +801,14 @@ def test_create_transcription(responses, mock_elements_worker):
score
=
0.42
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/element/
{
elt
.
id
}
/transcription/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
text
"
:
"
i am a line
"
,
"
worker_version
"
:
"
12341234-1234-1234-1234-123412341234
"
,
"
score
"
:
0.42
,
...
...
@@ -1017,8 +1026,9 @@ def test_create_classification_api_error(responses, mock_elements_worker):
high_confidence
=
True
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/classifications/
"
,
]
...
...
@@ -1047,13 +1057,14 @@ def test_create_classification(responses, mock_elements_worker):
high_confidence
=
True
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/classifications/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
element
"
:
"
12341234-1234-1234-1234-123412341234
"
,
"
ml_class
"
:
"
0000
"
,
"
worker_version
"
:
"
12341234-1234-1234-1234-123412341234
"
,
...
...
@@ -1095,13 +1106,14 @@ def test_create_classification_duplicate(responses, mock_elements_worker):
high_confidence
=
True
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/classifications/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
element
"
:
"
12341234-1234-1234-1234-123412341234
"
,
"
ml_class
"
:
"
0000
"
,
"
worker_version
"
:
"
12341234-1234-1234-1234-123412341234
"
,
...
...
@@ -1252,8 +1264,9 @@ def test_create_entity_api_error(responses, mock_elements_worker):
corpus
=
"
12341234-1234-1234-1234-123412341234
"
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/entity/
"
,
]
...
...
@@ -1275,12 +1288,13 @@ def test_create_entity(responses, mock_elements_worker):
corpus
=
"
12341234-1234-1234-1234-123412341234
"
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/entity/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
name
"
:
"
Bob Bob
"
,
"
type
"
:
"
person
"
,
"
metas
"
:
None
,
...
...
@@ -1705,8 +1719,9 @@ def test_create_element_transcriptions_api_error(responses, mock_elements_worker
transcriptions
=
TRANSCRIPTIONS_SAMPLE
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/element/
{
elt
.
id
}
/transcriptions/bulk/
"
,
]
...
...
@@ -1731,13 +1746,14 @@ def test_create_element_transcriptions(responses, mock_elements_worker):
transcriptions
=
TRANSCRIPTIONS_SAMPLE
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
f
"
http://testserver/api/v1/element/
{
elt
.
id
}
/transcriptions/bulk/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
element_type
"
:
"
page
"
,
"
worker_version
"
:
"
12341234-1234-1234-1234-123412341234
"
,
"
transcriptions
"
:
TRANSCRIPTIONS_SAMPLE
,
...
...
@@ -1875,8 +1891,9 @@ def test_create_metadata_api_error(responses, mock_elements_worker):
value
=
"
La Turbine, Grenoble 38000
"
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/
"
,
]
...
...
@@ -1898,12 +1915,13 @@ def test_create_metadata(responses, mock_elements_worker):
value
=
"
La Turbine, Grenoble 38000
"
,
)
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/metadata/
"
,
]
assert
json
.
loads
(
responses
.
calls
[
1
].
request
.
body
)
==
{
assert
json
.
loads
(
responses
.
calls
[
2
].
request
.
body
)
==
{
"
type
"
:
"
location
"
,
"
name
"
:
"
Teklia
"
,
"
value
"
:
"
La Turbine, Grenoble 38000
"
,
...
...
@@ -2105,8 +2123,9 @@ def test_list_transcriptions_api_error(responses, mock_elements_worker):
):
next
(
mock_elements_worker
.
list_transcriptions
(
element
=
elt
))
assert
len
(
responses
.
calls
)
==
6
assert
len
(
responses
.
calls
)
==
7
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
# We do 5 retries
"
http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/transcriptions/
"
,
...
...
@@ -2158,8 +2177,9 @@ def test_list_transcriptions(responses, mock_elements_worker):
):
assert
transcription
==
trans
[
idx
]
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/element/12341234-1234-1234-1234-123412341234/transcriptions/
"
,
]
...
...
@@ -2298,8 +2318,9 @@ def test_list_element_children_api_error(responses, mock_elements_worker):
):
next
(
mock_elements_worker
.
list_element_children
(
element
=
elt
))
assert
len
(
responses
.
calls
)
==
6
assert
len
(
responses
.
calls
)
==
7
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
# We do 5 retries
"
http://testserver/api/v1/elements/12341234-1234-1234-1234-123412341234/children/
"
,
...
...
@@ -2363,8 +2384,9 @@ def test_list_element_children(responses, mock_elements_worker):
):
assert
child
==
expected_children
[
idx
]
assert
len
(
responses
.
calls
)
==
2
assert
len
(
responses
.
calls
)
==
3
assert
[
call
.
request
.
url
for
call
in
responses
.
calls
]
==
[
"
http://testserver/api/v1/user/
"
,
"
http://testserver/api/v1/workers/versions/12341234-1234-1234-1234-123412341234/
"
,
"
http://testserver/api/v1/elements/12341234-1234-1234-1234-123412341234/children/
"
,
]
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment