Skip to content

Commit 86502a4

Browse files
tests
1 parent 7fb1286 commit 86502a4

File tree

6 files changed

+125
-68
lines changed

6 files changed

+125
-68
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "poetry.masonry.api"
44

55
[tool.poetry]
66
name = "etpproto"
7-
version = "0.0.0" # Set at build time
7+
version = "1.0.6.dev6" # Set at build time
88
description = "ETP protocol implementation"
99
authors = [
1010
"Lionel Untereiner <lionel.untereiner@geosiris.com>",

tests/data/__init__.py

Whitespace-only changes.

tests/data/arrays.py

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
from etptypes.energistics.etp.v12.protocol.data_array.get_data_arrays import GetDataArrays
2+
3+
from etpproto.messages import Message
4+
5+
get_data_array_0 = GetDataArrays.parse_obj({
6+
"dataArrays": {
7+
"0": {
8+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
9+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch0"
10+
},
11+
"1": {
12+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
13+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch1"
14+
},
15+
"2": {
16+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
17+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch2"
18+
},
19+
"3": {
20+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
21+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch3"
22+
},
23+
"4": {
24+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
25+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch4"
26+
},
27+
"5": {
28+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
29+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch5"
30+
},
31+
"6": {
32+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
33+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch6"
34+
},
35+
"7": {
36+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
37+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch7"
38+
},
39+
"8": {
40+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
41+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch8"
42+
},
43+
"9": {
44+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
45+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch9"
46+
},
47+
"10": {
48+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
49+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch10"
50+
},
51+
"11": {
52+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
53+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch11"
54+
},
55+
"12": {
56+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
57+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch12"
58+
},
59+
"13": {
60+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
61+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch13"
62+
},
63+
"14": {
64+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
65+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch14"
66+
},
67+
"15": {
68+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
69+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch15"
70+
},
71+
"16": {
72+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
73+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch16"
74+
},
75+
"17": {
76+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
77+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch17"
78+
},
79+
"18": {
80+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
81+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch18"
82+
},
83+
"19": {
84+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
85+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch19"
86+
},
87+
"20": {
88+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
89+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch20"
90+
},
91+
"21": {
92+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
93+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch21"
94+
},
95+
"22": {
96+
"uri": "eml:///dataspace('volve-eqn-plus')/resqml22.TriangulatedSetRepresentation(c6ec3a44-37a3-421f-ade6-91b2ced532e8)",
97+
"pathInResource": "RESQML/c6ec3a44-37a3-421f-ade6-91b2ced532e8/point_patch22"
98+
}
99+
}
100+
})
101+
102+
if __name__ == "__main__":
103+
print(get_data_array_0)
104+
Message.get_object_message()

tests/test_connection.py

Lines changed: 11 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,25 @@
11
# Copyright (c) 2022-2023 Geosiris.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
import asyncio
5-
from math import ceil
6-
74
import pytest
8-
9-
from etptypes.energistics.etp.v12.datatypes.data_object_capability_kind import (
10-
DataObjectCapabilityKind,
11-
)
12-
from etptypes.energistics.etp.v12.datatypes.data_value import DataValue
13-
from etptypes.energistics.etp.v12.datatypes.object.active_status_kind import (
14-
ActiveStatusKind,
15-
)
165
from etptypes.energistics.etp.v12.datatypes.object.context_info import (
176
ContextInfo,
187
)
198
from etptypes.energistics.etp.v12.datatypes.object.context_scope_kind import (
209
ContextScopeKind,
2110
)
22-
from etptypes.energistics.etp.v12.datatypes.object.data_object import (
23-
DataObject,
24-
Resource,
25-
)
2611
from etptypes.energistics.etp.v12.datatypes.object.relationship_kind import (
2712
RelationshipKind,
2813
)
2914
from etptypes.energistics.etp.v12.protocol.core.acknowledge import Acknowledge
3015
from etptypes.energistics.etp.v12.protocol.core.protocol_exception import (
3116
ProtocolException,
3217
)
33-
from etptypes.energistics.etp.v12.protocol.store.get_data_objects_response import (
34-
GetDataObjectsResponse,
35-
)
3618

3719
from etpproto.error import (
38-
ETPError,
3920
InvalidMessageError,
40-
UnsupportedProtocolError,
4121
InvalidStateError,
4222
)
43-
from etpproto.protocols.discovery import GetResources
4423

4524
try:
4625
from .server_protocol_example import *
@@ -272,7 +251,7 @@ async def test_connection_state_request_session_as_bytes() -> None:
272251
connection = ETPConnection()
273252

274253
async for m in connection.handle_bytes_generator(
275-
requestSession_msg.encode_message()
254+
requestSession_msg.encode_message()
276255
):
277256
pass
278257

@@ -284,12 +263,12 @@ async def test_connection_state_close_session_as_bytes() -> None:
284263
connection = ETPConnection()
285264

286265
async for m in connection.handle_bytes_generator(
287-
requestSession_msg.encode_message()
266+
requestSession_msg.encode_message()
288267
):
289268
pass
290269

291270
async for m in connection.handle_bytes_generator(
292-
closeSession_msg.encode_message()
271+
closeSession_msg.encode_message()
293272
):
294273
pass
295274

@@ -314,7 +293,7 @@ async def test_connection_requestSession_answer_as_bytes() -> None:
314293

315294
answer = []
316295
async for m in connection.handle_bytes_generator(
317-
requestSession_msg.encode_message()
296+
requestSession_msg.encode_message()
318297
):
319298
answer.append(m)
320299

@@ -332,7 +311,7 @@ async def test_connection_requestSession_answer_as_bytes_generator() -> None:
332311

333312
answer = []
334313
async for m in (
335-
connection.handle_bytes_generator(requestSession_msg.encode_message())
314+
connection.handle_bytes_generator(requestSession_msg.encode_message())
336315
):
337316
answer.append(
338317
Message.decode_binary_message(
@@ -369,7 +348,7 @@ async def test_connection_closeSession_answer_as_bytes_generator() -> None:
369348

370349
answer = []
371350
async for m in (
372-
connection.handle_bytes_generator(closeSession_msg.encode_message())
351+
connection.handle_bytes_generator(closeSession_msg.encode_message())
373352
):
374353
answer.append(
375354
Message.decode_binary_message(
@@ -387,7 +366,7 @@ async def test_send_msg_without_connection_generator() -> None:
387366

388367
answer = []
389368
async for m in (
390-
connection.handle_bytes_generator(getResources_msg.encode_message())
369+
connection.handle_bytes_generator(getResources_msg.encode_message())
391370
):
392371
answer.append(
393372
Message.decode_binary_message(
@@ -414,7 +393,7 @@ async def test_connection_first_msg_attributes() -> None:
414393
assert len(answer) == 1
415394
assert answer[0].header.message_id == 1
416395
assert (
417-
answer[0].header.correlation_id == requestSession_msg.header.message_id
396+
answer[0].header.correlation_id == requestSession_msg.header.message_id
418397
)
419398
assert answer[0].is_final_msg()
420399

@@ -426,9 +405,9 @@ async def test_connection_requestSession_answer_as_bytes_generator_acknowledge()
426405

427406
answer = []
428407
async for m in (
429-
connection.handle_bytes_generator(
430-
requestSession_msg_ask_acknowledge.encode_message()
431-
)
408+
connection.handle_bytes_generator(
409+
requestSession_msg_ask_acknowledge.encode_message()
410+
)
432411
):
433412
answer.append(
434413
Message.decode_binary_message(
@@ -443,41 +422,6 @@ async def test_connection_requestSession_answer_as_bytes_generator_acknowledge()
443422
assert isinstance(answer[1].body, OpenSession)
444423

445424

446-
@pytest.mark.asyncio
447-
async def test_msg_multipart_chunks_reassembled_in_connection():
448-
nb_data_objects = len(dataObjectResponse_msg.body.data_objects)
449-
size_limit = 500
450-
connection_client = ETPConnection(connection_type=ConnectionType.CLIENT)
451-
dataObjectResponse_msg.set_final_msg(True)
452-
453-
async for m in connection_client._handle_message_generator(
454-
openSession_msg
455-
):
456-
pass
457-
assert connection_client.is_connected
458-
459-
nb_chunks = ceil(
460-
len(resqml_obj_37166c33_3ebb_40ae_9bc6_1ab9693def60)
461-
/ (size_limit - 50)
462-
) # 50 is the size limit security (see message.py)
463-
464-
assert len(connection_client.chunk_msg_cache) == 0
465-
idx = 0
466-
async for part in dataObjectResponse_msg.encode_message_generator(
467-
size_limit, connection_client
468-
):
469-
idx += 1
470-
async for m in connection_client.handle_bytes_generator(part):
471-
pass
472-
if idx == nb_data_objects * (1 + nb_chunks):
473-
assert len(connection_client.chunk_msg_cache) == 0
474-
else:
475-
assert len(connection_client.chunk_msg_cache) == 1
476-
assert (
477-
len(list(connection_client.chunk_msg_cache.values())[0]) == idx
478-
)
479-
480-
481425
if __name__ == "__main__":
482426
# asyncio.run(test_send_msg_without_connection_generator())
483427
# asyncio.run(test_connection_requestSession_answer_as_bytes_generator())

tests/test_messages.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,8 @@ async def test_msg_multipart_chunks_reassembled_in_connection_get_ressources():
372372
)
373373
)
374374

375+
376+
375377

376378
# if __name__ == "__main__":
377379
# asyncio.run(test_connection_multipart_msg_one_part_answer_generator())

tests/test_uris.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ def test_uri_dataspace_2() -> None:
2424
assert uri.dataspace is None
2525

2626

27+
def test_uri_dataspace_3() -> None:
28+
uri = parse_uri("eml:///dataspace('volve-eqn-plus')/resqml20.obj_Grid2dRepresentation(3a45fb70-8ba9-4341-a701-0f514270ba9c)")
29+
assert isinstance(uri, DataObjectURI)
30+
assert uri.dataspace is not None
31+
assert uri.dataspace == 'volve-eqn-plus'
32+
33+
2734
def test_uri_data_object_0() -> None:
2835
uri = parse_uri(
2936
"eml:///witsml20.ChannelSet(2c0f6ef2-cc54-4104-8523-0f0fbaba3661)"

0 commit comments

Comments
 (0)