Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
CaosDB Python Integration Tests
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue 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
caosdb
Software
CaosDB Python Integration Tests
Commits
20aa7102
Verified
Commit
20aa7102
authored
1 year ago
by
Daniel Hornung
Browse files
Options
Downloads
Plain Diff
Merge branch 'dev' into f-fix-108
parents
7db6120c
b3357d5d
No related branches found
No related tags found
No related merge requests found
Pipeline
#42764
canceled
1 year ago
Stage: info
Stage: setup
Stage: cert
Stage: style
Stage: test
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
tests/test_issues_server.py
+5
-5
5 additions, 5 deletions
tests/test_issues_server.py
tests/test_messages.py
+7
-0
7 additions, 0 deletions
tests/test_messages.py
tests/test_query.py
+136
-2
136 additions, 2 deletions
tests/test_query.py
with
148 additions
and
7 deletions
tests/test_issues_server.py
+
5
−
5
View file @
20aa7102
...
@@ -101,12 +101,14 @@ def test_issue_62():
...
@@ -101,12 +101,14 @@ def test_issue_62():
# renaming has to be reflected in Test_Record and Test_Prop
# renaming has to be reflected in Test_Record and Test_Prop
rec
=
db
.
execute_query
(
"
FIND Record Test_Record
"
,
unique
=
True
)
rec
=
db
.
execute_query
(
"
FIND Record Test_Record
"
,
unique
=
True
)
assert
rec
.
parents
[
0
].
name
==
rtb
.
name
assert
rec
.
parents
[
0
].
name
==
rtb
.
name
assert
rec
.
get_property
(
"
Test_Prop
"
).
datatype
==
rtb
.
name
prop
=
db
.
execute_query
(
"
FIND Property Test_Prop
"
,
unique
=
True
)
prop
=
db
.
execute_query
(
"
FIND Property Test_Prop
"
,
unique
=
True
)
assert
prop
.
datatype
==
rtb
.
name
# fails; datatype not updated
assert
prop
.
datatype
==
rtb
.
name
# fails; datatype not updated
# Can't use Test_RTA as datatype anymore
# Can't use Test_RTA as datatype anymore
prop2
=
db
.
Property
(
name
=
"
Test_Prop2
"
,
datatype
=
"
Test_RTA
"
)
prop2
=
db
.
Property
(
name
=
"
Test_Prop2
"
,
datatype
=
"
Test_RTA
"
)
with
pytest
.
raises
(
TransactionError
):
with
pytest
.
raises
(
TransactionError
)
as
exc
:
prop2
.
insert
()
prop2
.
insert
()
assert
"
Unknown data type.
"
in
str
(
exc
.
value
)
def
test_issue_85_a
():
def
test_issue_85_a
():
...
@@ -1358,8 +1360,6 @@ def test_216():
...
@@ -1358,8 +1360,6 @@ def test_216():
assert
db
.
execute_query
(
"
FIND RECORDTYPE B
"
,
unique
=
True
).
name
==
"
B
"
assert
db
.
execute_query
(
"
FIND RECORDTYPE B
"
,
unique
=
True
).
name
==
"
B
"
@pytest.mark.xfail
(
reason
=
"
Needs fix for non-integer ids in queries,
"
"
see https://gitlab.com/caosdb/caosdb-server/-/issues/138
"
)
def
test_138
():
def
test_138
():
"""
Problems with non-integer ids in query filters, see
"""
Problems with non-integer ids in query filters, see
https://gitlab.com/caosdb/caosdb-server/-/issues/138
https://gitlab.com/caosdb/caosdb-server/-/issues/138
...
@@ -1444,7 +1444,7 @@ def test_235_long_name():
...
@@ -1444,7 +1444,7 @@ def test_235_long_name():
try
:
try
:
rt1
.
insert
()
rt1
.
insert
()
except
Exception
as
exc
:
except
Exception
as
exc
:
assert
type
(
exc
)
is
not
db
.
HTTPServerError
assert
not
isinstance
(
exc
,
db
.
HTTPServerError
)
# TODO more specific error should be asserted
# TODO more specific error should be asserted
rt2
=
db
.
RecordType
(
name
=
"
Short
"
)
rt2
=
db
.
RecordType
(
name
=
"
Short
"
)
...
@@ -1453,5 +1453,5 @@ def test_235_long_name():
...
@@ -1453,5 +1453,5 @@ def test_235_long_name():
try
:
try
:
rt2
.
update
()
rt2
.
update
()
except
Exception
as
exc
:
except
Exception
as
exc
:
assert
type
(
exc
)
is
not
db
.
HTTPServerError
assert
not
isinstance
(
exc
,
db
.
HTTPServerError
)
# TODO more specific error should be asserted
# TODO more specific error should be asserted
This diff is collapsed.
Click to expand it.
tests/test_messages.py
+
7
−
0
View file @
20aa7102
...
@@ -26,6 +26,8 @@
...
@@ -26,6 +26,8 @@
@author: Timm Fitschen
@author: Timm Fitschen
"""
"""
import
caosdb
as
db
def
test_messages_dict_behavior
():
def
test_messages_dict_behavior
():
...
@@ -69,3 +71,8 @@ def test_messages_dict_behavior():
...
@@ -69,3 +71,8 @@ def test_messages_dict_behavior():
# this Message has no code and no description (make easy things easy...)
# this Message has no code and no description (make easy things easy...)
msgs
[
"
HelloWorld
"
]
=
"
Hello!
"
msgs
[
"
HelloWorld
"
]
=
"
Hello!
"
assert
msgs
[
"
HelloWorld
"
]
==
"
Hello!
"
assert
msgs
[
"
HelloWorld
"
]
==
"
Hello!
"
def
test_info
():
a
=
str
(
db
.
Info
())
assert
a
.
startswith
(
"
Connection to
"
)
This diff is collapsed.
Click to expand it.
tests/test_query.py
+
136
−
2
View file @
20aa7102
...
@@ -29,12 +29,12 @@
...
@@ -29,12 +29,12 @@
import
os
import
os
import
random
import
random
import
caosdb
as
db
from
pytest
import
mark
,
raises
import
caosdb
as
db
from
caosdb.connection.connection
import
get_connection
from
caosdb.connection.connection
import
get_connection
from
caosdb.exceptions
import
EmptyUniqueQueryError
,
TransactionError
from
caosdb.exceptions
import
EmptyUniqueQueryError
,
TransactionError
from
lxml
import
etree
from
lxml
import
etree
from
pytest
import
mark
,
raises
def
setup_module
():
def
setup_module
():
...
@@ -93,6 +93,8 @@ def test_query_with_reference_by_parent():
...
@@ -93,6 +93,8 @@ def test_query_with_reference_by_parent():
unique
=
True
).
id
unique
=
True
).
id
assert
exp_rec
.
id
==
db
.
execute_query
(
assert
exp_rec
.
id
==
db
.
execute_query
(
"
FIND TestExperiment .->
"
+
str
(
sp_rec
.
id
),
unique
=
True
).
id
"
FIND TestExperiment .->
"
+
str
(
sp_rec
.
id
),
unique
=
True
).
id
assert
exp_rec
.
id
==
db
.
execute_query
(
"
FIND ENTITY
"
+
str
(
exp_rec
.
id
),
unique
=
True
).
id
assert
exp_rec
.
id
==
db
.
execute_query
(
"
FIND RECORD
"
+
str
(
exp_rec
.
id
),
unique
=
True
).
id
assert
exp_rec
.
id
==
db
.
execute_query
(
assert
exp_rec
.
id
==
db
.
execute_query
(
"
FIND TestExperiment .-> TestSpecialProtocolLog1
"
,
unique
=
True
).
id
"
FIND TestExperiment .-> TestSpecialProtocolLog1
"
,
unique
=
True
).
id
assert
exp_rec
.
id
==
db
.
execute_query
(
assert
exp_rec
.
id
==
db
.
execute_query
(
...
@@ -1334,3 +1336,135 @@ def test_find_query_default_role():
...
@@ -1334,3 +1336,135 @@ def test_find_query_default_role():
db
.
administration
.
set_server_property
(
"
FIND_QUERY_DEFAULT_ROLE
"
,
"
asdf
"
)
db
.
administration
.
set_server_property
(
"
FIND_QUERY_DEFAULT_ROLE
"
,
"
asdf
"
)
with
raises
(
TransactionError
):
with
raises
(
TransactionError
):
assert
db
.
execute_query
(
"
FIND Test*
"
,
unique
=
True
).
id
==
rec
.
id
assert
db
.
execute_query
(
"
FIND Test*
"
,
unique
=
True
).
id
==
rec
.
id
def
test_query_paging
():
test_query
=
"
FIND RECORDTYPE TestRT*
"
# insert 20 entities
for
i
in
range
(
20
):
db
.
RecordType
(
f
"
TestRT
{
i
}
"
).
insert
()
assert
len
(
db
.
execute_query
(
test_query
))
==
20
# paging off
assert
isinstance
(
db
.
execute_query
(
test_query
,
page_length
=
0
),
db
.
Container
)
assert
isinstance
(
db
.
execute_query
(
test_query
,
page_length
=-
1
),
db
.
Container
)
assert
isinstance
(
db
.
execute_query
(
test_query
,
page_length
=
False
),
db
.
Container
)
assert
isinstance
(
db
.
execute_query
(
test_query
,
page_length
=
None
),
db
.
Container
)
assert
isinstance
(
db
.
execute_query
(
test_query
+
"
WITH name=TestRT0
"
,
page_length
=
10
,
unique
=
True
),
db
.
RecordType
)
assert
isinstance
(
db
.
execute_query
(
"
COUNT RECORDTYPE
"
,
page_length
=
10
),
int
)
# zero pages
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
+
"
WITH unmet_condition
"
,
page_length
=
109
)])
==
0
# two pages
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
)])
==
2
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
11
)])
==
2
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
19
)])
==
2
# one page
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
20
)])
==
1
assert
len
([
page
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
100
)])
==
1
# concat
assert
len
([
entity
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
)
for
entity
in
page
])
==
20
# concat zero pages
assert
len
([
entity
for
page
in
db
.
execute_query
(
test_query
+
"
WITH unmet_condition
"
,
page_length
=
10
)
for
entity
in
page
])
==
0
# this kind of update is allowed
for
entity
in
[
entity
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
)
for
entity
in
page
]:
entity
.
description
=
"
updated
"
entity
.
update
()
# as well as this
container
=
db
.
Container
().
extend
(
[
entity
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
)
for
entity
in
page
])
for
entity
in
container
:
entity
.
description
=
"
updated 2
"
container
.
update
()
# but not this
with
raises
(
db
.
exceptions
.
PagingConsistencyError
):
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
):
for
entity
in
page
:
entity
.
description
=
"
update not allowed
"
entity
.
update
()
# not ideal: the first page has been written:
pages
=
db
.
execute_query
(
test_query
,
page_length
=
10
)
for
entity
in
next
(
pages
):
assert
entity
.
description
==
"
update not allowed
"
for
entity
in
next
(
pages
):
assert
entity
.
description
==
"
updated 2
"
# the above pattern is ok if you don't write, tho
for
page
in
db
.
execute_query
(
test_query
,
page_length
=
10
):
for
entity
in
page
:
assert
entity
.
description
is
not
None
# don't: entity.update()
def
test_greatest_smallest_id
():
rt1
=
db
.
RecordType
(
"
TestRT1
"
).
insert
()
rt2
=
db
.
RecordType
(
"
TestRT2
"
).
insert
()
# assumptions
assert
rt1
.
id
<
rt2
.
id
# actual testing
assert
db
.
execute_query
(
"
FIND RECORDTYPE Test* WITH ID>99 AND THE SMALLEST ID
"
,
unique
=
True
).
id
==
rt1
.
id
assert
db
.
execute_query
(
"
FIND RECORDTYPE Test* WITH THE GREATEST ID
"
,
unique
=
True
).
id
==
rt2
.
id
assert
db
.
execute_query
(
"
FIND ENTITY Test* WITH THE SMALLEST ID
"
,
unique
=
True
).
id
==
rt1
.
id
assert
db
.
execute_query
(
"
FIND ENTITY Test* WITH THE GREATEST ID
"
,
unique
=
True
).
id
==
rt2
.
id
@mark.xfail
(
reason
=
"
Issue: https://gitlab.com/linkahead/linkahead-server/-/issues/237
"
)
def
test_greatest_smallest_id_over_roles
():
rt1
=
db
.
RecordType
(
"
TestRT1
"
).
insert
()
rt2
=
db
.
RecordType
(
"
TestRT2
"
).
insert
()
p1
=
db
.
Property
(
"
TestProp1
"
,
datatype
=
db
.
TEXT
).
insert
()
p2
=
db
.
Property
(
"
TestProp2
"
,
datatype
=
db
.
TEXT
).
insert
()
# assumptions
assert
rt1
.
id
<
rt2
.
id
assert
rt2
.
id
<
p1
.
id
assert
p1
.
id
<
p2
.
id
# actual testing
assert
db
.
execute_query
(
"
FIND RECORDTYPE WITH THE SMALLEST ID
"
,
unique
=
True
).
id
==
rt1
.
id
assert
db
.
execute_query
(
"
FIND RECORDTYPE WITH THE GREATEST ID
"
,
unique
=
True
).
id
==
rt2
.
id
assert
db
.
execute_query
(
"
FIND PROPERTY WITH THE SMALLEST ID
"
,
unique
=
True
).
id
==
p1
.
id
assert
db
.
execute_query
(
"
FIND PROPERTY WITH THE GREATEST ID
"
,
unique
=
True
).
id
==
p2
.
id
assert
db
.
execute_query
(
"
FIND ENTITY WITH THE SMALLEST ID
"
,
unique
=
True
).
id
==
rt1
.
id
assert
db
.
execute_query
(
"
FIND ENTITY WITH THE GREATEST ID
"
,
unique
=
True
).
id
==
p2
.
id
def
test_find_id
():
"""
See also: https://gitlab.indiscale.com/caosdb/src/caosdb-server/-/issues/323
"""
rt1
=
db
.
RecordType
(
"
TestRT1
"
).
insert
()
rt2
=
db
.
RecordType
(
"
TestRT2
"
).
insert
()
rt3
=
db
.
RecordType
(
"
TestRT3
"
).
add_parent
(
"
TestRT2
"
).
add_property
(
"
TestRT1
"
).
insert
()
assert
db
.
execute_query
(
"
FIND TestRT1
"
,
unique
=
True
).
id
==
rt1
.
id
assert
db
.
execute_query
(
f
"
FIND
{
rt1
.
id
}
"
,
unique
=
True
).
id
==
rt1
.
id
assert
set
([
e
.
id
for
e
in
db
.
execute_query
(
"
FIND TestRT2
"
)])
==
set
([
rt2
.
id
,
rt3
.
id
])
assert
db
.
execute_query
(
"
FIND TestRT2 WITH TestRT1
"
,
unique
=
True
).
id
==
rt3
.
id
assert
db
.
execute_query
(
"
FIND TestRT3 WITH TestRT1
"
,
unique
=
True
).
id
==
rt3
.
id
assert
db
.
execute_query
(
f
"
FIND
{
rt2
.
id
}
WITH TestRT1
"
,
unique
=
True
).
id
==
rt3
.
id
assert
db
.
execute_query
(
f
"
FIND
{
rt3
.
id
}
WITH TestRT1
"
,
unique
=
True
).
id
==
rt3
.
id
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