Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Backend
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container Registry
Analyze
Contributor analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Arkindex
Backend
Commits
4f7eeb73
Verified
Commit
4f7eeb73
authored
4 years ago
by
Erwan Rouchet
Browse files
Options
Downloads
Patches
Plain Diff
Fix randomly failing best class filter test
parent
a37baaad
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!1209
Fix randomly failing best class filter test
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
arkindex/documents/tests/test_classes.py
+21
-39
21 additions, 39 deletions
arkindex/documents/tests/test_classes.py
with
21 additions
and
39 deletions
arkindex/documents/tests/test_classes.py
+
21
−
39
View file @
4f7eeb73
...
...
@@ -12,30 +12,30 @@ class TestClasses(FixtureAPITestCase):
@classmethod
def
setUpTestData
(
cls
):
super
().
setUpTestData
()
cls
.
text
=
MLClass
.
objects
.
create
(
name
=
'
text
'
,
corpus
=
cls
.
corpus
)
cls
.
cover
=
MLClass
.
objects
.
create
(
name
=
'
cover
'
,
corpus
=
cls
.
corpus
)
cls
.
text
=
cls
.
corpus
.
ml_classes
.
create
(
name
=
'
text
'
)
cls
.
cover
=
cls
.
corpus
.
ml_classes
.
create
(
name
=
'
cover
'
)
cls
.
classified
=
cls
.
corpus
.
types
.
create
(
slug
=
'
classified
'
,
folder
=
True
)
cls
.
folder_type
=
cls
.
corpus
.
types
.
create
(
slug
=
'
folder
'
,
folder
=
True
)
cls
.
parent
=
cls
.
corpus
.
elements
.
create
(
type
=
cls
.
folder_type
,
name
=
'
parent
'
)
cls
.
common_children
=
cls
.
corpus
.
elements
.
create
(
type
=
cls
.
folder_type
,
name
=
'
common_children
'
)
def
populate_classified_elements
(
self
):
self
.
folder_type
=
self
.
corpus
.
types
.
create
(
slug
=
'
folder
'
,
folder
=
True
)
self
.
parent
=
self
.
corpus
.
elements
.
create
(
type
=
self
.
folder_type
)
self
.
common_children
=
self
.
corpus
.
elements
.
create
(
type
=
self
.
folder_type
)
cls
.
version1
=
WorkerVersion
.
objects
.
get
(
worker__slug
=
'
reco
'
)
cls
.
version2
=
WorkerVersion
.
objects
.
get
(
worker__slug
=
'
dla
'
)
self
.
version1
=
WorkerVersion
.
objects
.
get
(
worker__slug
=
'
reco
'
)
self
.
version2
=
WorkerVersion
.
objects
.
get
(
worker__slug
=
'
dla
'
)
for
elt_num
in
range
(
1
,
13
):
elt
=
Element
.
objec
ts
.
create
(
elt
=
cls
.
corpus
.
elemen
ts
.
create
(
name
=
'
elt_{}
'
.
format
(
elt_num
),
type
=
self
.
classified
,
corpus_id
=
self
.
corpus
.
id
type
=
cls
.
classified
,
)
elt
.
add_parent
(
self
.
parent
)
self
.
common_children
.
add_parent
(
elt
)
for
ml_class
,
score
in
zip
((
self
.
text
,
self
.
cover
),
(.
7
,
.
99
)):
for
worker_version
in
(
self
.
version1
,
self
.
version2
):
elt
.
add_parent
(
cls
.
parent
)
cls
.
common_children
.
add_parent
(
elt
)
for
ml_class
,
score
in
((
cls
.
text
,
.
7
),
(
cls
.
cover
,
.
99
)):
for
worker_version
in
(
cls
.
version1
,
cls
.
version2
):
elt
.
classifications
.
create
(
worker_version
=
worker_version
,
ml_class
_id
=
ml_class
.
id
,
ml_class
=
ml_class
,
confidence
=
score
,
high_confidence
=
bool
(
score
==
.
99
)
)
...
...
@@ -57,7 +57,7 @@ class TestClasses(FixtureAPITestCase):
{
"
id
"
:
str
(
self
.
cover
.
pk
),
"
name
"
:
"
cover
"
,
"
nb_best
"
:
0
"
nb_best
"
:
24
},
{
"
id
"
:
str
(
self
.
text
.
pk
),
...
...
@@ -82,7 +82,7 @@ class TestClasses(FixtureAPITestCase):
{
"
id
"
:
str
(
self
.
cover
.
pk
),
"
name
"
:
"
cover
"
,
"
nb_best
"
:
0
"
nb_best
"
:
24
},
{
"
id
"
:
str
(
self
.
image
.
pk
),
...
...
@@ -115,7 +115,6 @@ class TestClasses(FixtureAPITestCase):
"""
Test nb_best attribute on ListCorpusMLClasses endpoint
"""
self
.
populate_classified_elements
()
self
.
client
.
force_login
(
self
.
user
)
with
self
.
assertNumQueries
(
5
):
response
=
self
.
client
.
get
(
reverse
(
'
api:corpus-classes
'
,
kwargs
=
{
'
pk
'
:
self
.
corpus
.
pk
}),
{})
...
...
@@ -140,7 +139,6 @@ class TestClasses(FixtureAPITestCase):
def
test_list_classes_search
(
self
):
buffer_class
=
MLClass
.
objects
.
create
(
name
=
'
buffer overflow
'
,
corpus
=
self
.
corpus
)
self
.
populate_classified_elements
()
self
.
client
.
force_login
(
self
.
user
)
with
self
.
assertNumQueries
(
5
):
response
=
self
.
client
.
get
(
...
...
@@ -173,7 +171,6 @@ class TestClasses(FixtureAPITestCase):
@override_settings
(
SEARCH_FILTER_MAX_TERMS
=
3
)
def
test_search_filter_limit
(
self
):
self
.
corpus
.
ml_classes
.
create
(
name
=
'
buffer overflow
'
)
self
.
populate_classified_elements
()
self
.
client
.
force_login
(
self
.
user
)
response
=
self
.
client
.
get
(
...
...
@@ -218,7 +215,6 @@ class TestClasses(FixtureAPITestCase):
})
def
test_list_elements_db_queries
(
self
):
self
.
populate_classified_elements
()
with
self
.
assertNumQueries
(
3
):
response
=
self
.
client
.
get
(
reverse
(
'
api:corpus-elements
'
,
kwargs
=
{
'
corpus
'
:
self
.
corpus
.
id
}),
...
...
@@ -228,7 +224,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertEqual
(
response
.
json
()[
'
count
'
],
12
)
def
test_list_elements_best_classes
(
self
):
self
.
populate_classified_elements
()
with
self
.
assertNumQueries
(
4
):
response
=
self
.
client
.
get
(
reverse
(
'
api:corpus-elements
'
,
kwargs
=
{
'
corpus
'
:
self
.
corpus
.
id
}),
...
...
@@ -244,7 +239,6 @@ class TestClasses(FixtureAPITestCase):
)
def
test_list_elements_best_classes_false
(
self
):
self
.
populate_classified_elements
()
with
self
.
assertNumQueries
(
3
):
response
=
self
.
client
.
get
(
reverse
(
'
api:corpus-elements
'
,
kwargs
=
{
'
corpus
'
:
self
.
corpus
.
id
}),
...
...
@@ -258,7 +252,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertIsNone
(
elt
[
'
best_classes
'
])
def
test_element_parents_best_classes
(
self
):
self
.
populate_classified_elements
()
with
self
.
assertNumQueries
(
4
):
response
=
self
.
client
.
get
(
reverse
(
'
api:elements-parents
'
,
kwargs
=
{
'
pk
'
:
str
(
self
.
common_children
.
id
)}),
...
...
@@ -274,7 +267,6 @@ class TestClasses(FixtureAPITestCase):
)
def
test_element_children_best_classes
(
self
):
self
.
populate_classified_elements
()
with
self
.
assertNumQueries
(
5
):
response
=
self
.
client
.
get
(
reverse
(
'
api:elements-children
'
,
kwargs
=
{
'
pk
'
:
str
(
self
.
parent
.
id
)}),
...
...
@@ -293,7 +285,6 @@ class TestClasses(FixtureAPITestCase):
"""
A machine classification that have been rejected by a human must not appear
"""
self
.
populate_classified_elements
()
child
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
child
.
classifications
.
all
().
update
(
state
=
ClassificationState
.
Rejected
)
with
self
.
assertNumQueries
(
5
):
...
...
@@ -314,7 +305,6 @@ class TestClasses(FixtureAPITestCase):
"""
A non best class validated by a human is considered as best as it is for the human
"""
self
.
populate_classified_elements
()
parent
=
Element
.
objects
.
get_ascending
(
self
.
common_children
.
id
).
last
()
parent
.
classifications
.
all
().
filter
(
confidence
=
.
7
).
update
(
state
=
ClassificationState
.
Validated
)
response
=
self
.
client
.
get
(
...
...
@@ -342,7 +332,6 @@ class TestClasses(FixtureAPITestCase):
"""
A manual classification rejected by a human may not appear in best classes
"""
self
.
populate_classified_elements
()
element
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
classif
=
element
.
classifications
.
create
(
ml_class_id
=
self
.
text
.
id
,
...
...
@@ -387,7 +376,6 @@ class TestClasses(FixtureAPITestCase):
)
def
test_class_filter_list_elements
(
self
):
self
.
populate_classified_elements
()
element
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
element
.
classifications
.
create
(
ml_class
=
self
.
text
,
...
...
@@ -405,9 +393,9 @@ class TestClasses(FixtureAPITestCase):
self
.
assertEqual
(
data
[
'
results
'
][
0
][
'
id
'
],
str
(
element
.
id
))
def
test_class_filter_list_parents
(
self
):
self
.
populate_classified_elements
(
)
parent
=
Element
.
objects
.
get_ascending
(
self
.
common_children
.
id
).
last
(
)
parent
.
classifications
.
all
().
filter
(
confidence
=
.
7
).
update
(
state
=
ClassificationState
.
Validated
)
parent
=
Element
.
objects
.
get_ascending
(
self
.
common_children
.
id
).
get
(
name
=
'
elt_1
'
)
self
.
assertEqual
(
parent
.
classifications
.
filter
(
ml_class
=
self
.
text
).
count
(),
2
)
parent
.
classifications
.
filter
(
ml_class
=
self
.
text
).
update
(
state
=
ClassificationState
.
Validated
)
with
self
.
assertNumQueries
(
3
):
response
=
self
.
client
.
get
(
reverse
(
'
api:elements-parents
'
,
kwargs
=
{
'
pk
'
:
str
(
self
.
common_children
.
id
)}),
...
...
@@ -419,7 +407,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertEqual
(
data
[
'
results
'
][
0
][
'
id
'
],
str
(
parent
.
id
))
def
test_class_filter_list_children
(
self
):
self
.
populate_classified_elements
()
child
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
child
.
classifications
.
all
().
filter
(
confidence
=
.
7
).
update
(
state
=
ClassificationState
.
Validated
)
with
self
.
assertNumQueries
(
4
):
...
...
@@ -433,7 +420,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertEqual
(
data
[
'
results
'
][
0
][
'
id
'
],
str
(
child
.
id
))
def
test_class_filter_list_elements_distinct
(
self
):
self
.
populate_classified_elements
()
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
count
(),
24
)
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
distinct
(
'
element_id
'
).
count
(),
12
)
with
self
.
assertNumQueries
(
3
):
...
...
@@ -449,7 +435,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertCountEqual
(
ids
,
set
(
ids
))
def
test_class_filter_list_parents_distinct
(
self
):
self
.
populate_classified_elements
()
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
count
(),
24
)
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
distinct
(
'
element_id
'
).
count
(),
12
)
with
self
.
assertNumQueries
(
3
):
...
...
@@ -465,7 +450,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertCountEqual
(
ids
,
set
(
ids
))
def
test_class_filter_list_children_distinct
(
self
):
self
.
populate_classified_elements
()
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
count
(),
24
)
self
.
assertEqual
(
Classification
.
objects
.
filter
(
high_confidence
=
True
).
distinct
(
'
element_id
'
).
count
(),
12
)
with
self
.
assertNumQueries
(
4
):
...
...
@@ -481,7 +465,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertCountEqual
(
ids
,
set
(
ids
))
def
test_class_filter_true
(
self
):
self
.
populate_classified_elements
()
element
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
element
.
classifications
.
all
().
delete
()
element
.
classifications
.
create
(
...
...
@@ -506,7 +489,6 @@ class TestClasses(FixtureAPITestCase):
self
.
assertSetEqual
(
best_class_ids
,
{
str
(
self
.
text
.
id
),
str
(
self
.
cover
.
id
)})
def
test_class_filter_false
(
self
):
self
.
populate_classified_elements
()
element
=
Element
.
objects
.
filter
(
type
=
self
.
classified
.
id
).
first
()
element
.
classifications
.
all
().
delete
()
element
.
classifications
.
create
(
...
...
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