Skip to content

Commit 2ec47e2

Browse files
committed
test
1 parent cec2803 commit 2ec47e2

File tree

7 files changed

+79
-187
lines changed

7 files changed

+79
-187
lines changed

src/opengeodeweb_viewer/rpc/model/model_protocols.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,6 @@ class VtkModelView(VtkObjectView):
2020
def __init__(self):
2121
super().__init__()
2222

23-
def _resolve_model_file_path(self, data_id: str, params):
24-
file_name = params.get("file_name")
25-
if file_name:
26-
return os.path.join(self.DATA_FOLDER_PATH, data_id, file_name)
27-
return self.get_data_file_path(data_id)
28-
2923
def _build_model_pipeline(self, file_path: str):
3024
reader = vtk.vtkXMLMultiBlockDataReader()
3125
reader.SetFileName(file_path)
@@ -46,7 +40,8 @@ def registerModel(self, params):
4640
data_id = params["id"]
4741
try:
4842
_ = self.get_data(data_id)
49-
file_path = self._resolve_model_file_path(data_id, params)
43+
file_path = self.get_data_file_path(data_id)
44+
5045
reader, geometry, mapper, actor = self._build_model_pipeline(file_path)
5146
renderer = self.get_renderer()
5247
renderer.AddActor(actor)

src/tests/conftest.py

Lines changed: 33 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@
99
import shutil
1010
from opengeodeweb_viewer.database.connection import db_manager
1111
from opengeodeweb_microservice.database.data import Data
12-
from shutil import copyfile, copytree
13-
import os
12+
from shutil import copyfile
1413
import time
15-
from typing import Callable, Optional, List
14+
from typing import Callable
1615
from websocket import WebSocketTimeoutException
1716

1817

@@ -198,91 +197,60 @@ def configure_test_environment():
198197
raise RuntimeError("Failed to initialize test database")
199198

200199
def _seed_database(session):
201-
# Seed mesh data: id=123456789 -> hat.vtp
202200
if session.get(Data, "123456789") is None:
203201
session.add(
204202
Data(
205203
id="123456789",
206-
native_file_name="native.vtp",
204+
native_file_name="",
207205
viewable_file_name="hat.vtp",
208206
geode_object="mesh",
209207
light_viewable=None,
210208
input_file="",
211209
additional_files=[],
212210
)
213211
)
214-
# Seed model data: id=12345678 -> CrossSection.vtm
215212
if session.get(Data, "12345678") is None:
216213
session.add(
217214
Data(
218215
id="12345678",
219-
native_file_name="native.vtm",
216+
native_file_name="",
220217
viewable_file_name="CrossSection.vtm",
221218
geode_object="model",
222219
light_viewable=None,
223220
input_file="",
224221
additional_files=[],
225222
)
226223
)
227-
# Seed mesh data: id=44556677 -> points.vtp (tests point set)
228-
if session.get(Data, "44556677") is None:
224+
if session.get(Data, "33445566") is None:
229225
session.add(
230226
Data(
231-
id="44556677",
232-
native_file_name="native.vtp",
233-
viewable_file_name="points.vtp",
227+
id="33445566",
228+
native_file_name="",
229+
viewable_file_name="polygon_attribute.vtp",
234230
geode_object="mesh",
235231
light_viewable=None,
236232
input_file="",
237233
additional_files=[],
238234
)
239235
)
240-
# Seed mesh data: id=22334455 -> edged_curve.vtp (tests edged curve)
241-
if session.get(Data, "22334455") is None:
236+
if session.get(Data, "33445577") is None:
242237
session.add(
243238
Data(
244-
id="22334455",
245-
native_file_name="native.vtp",
246-
viewable_file_name="edged_curve.vtp",
239+
id="33445577",
240+
native_file_name="",
241+
viewable_file_name="vertex_attribute.vtp",
247242
geode_object="mesh",
248243
light_viewable=None,
249244
input_file="",
250245
additional_files=[],
251246
)
252247
)
253-
# Seed mesh data: id=11223344 -> hybrid_solid.vtu (polyèdres)
254248
if session.get(Data, "11223344") is None:
255249
session.add(
256250
Data(
257251
id="11223344",
258-
native_file_name="native.vtu",
259-
viewable_file_name="hybrid_solid.vtu",
260-
geode_object="mesh",
261-
light_viewable=None,
262-
input_file="",
263-
additional_files=[],
264-
)
265-
)
266-
# Seed mesh data: id=33445566 -> polygon_attribute.vtp
267-
if session.get(Data, "33445566") is None:
268-
session.add(
269-
Data(
270-
id="33445566",
271-
native_file_name="native.vtp",
272-
viewable_file_name="polygon_attribute.vtp",
273-
geode_object="mesh",
274-
light_viewable=None,
275-
input_file="",
276-
additional_files=[],
277-
)
278-
)
279-
# Seed mesh data: id=33445577 -> vertex_attribute.vtp
280-
if session.get(Data, "33445577") is None:
281-
session.add(
282-
Data(
283-
id="33445577",
284-
native_file_name="native.vtp",
285-
viewable_file_name="vertex_attribute.vtp",
252+
native_file_name="",
253+
viewable_file_name="polyhedron_attribute.vtu",
286254
geode_object="mesh",
287255
light_viewable=None,
288256
input_file="",
@@ -311,59 +279,39 @@ def dataset_factory() -> Callable[..., str]:
311279
data_root = os.environ.get("DATA_FOLDER_PATH")
312280
assert data_root, "DATA_FOLDER_PATH undefined"
313281

314-
def create_dataset(
315-
*,
316-
id: str,
317-
geode_object: str,
318-
viewable_file_name: str,
319-
native_file_name: Optional[str] = None,
320-
additional_files: Optional[List[str]] = None,
321-
light_viewable: Optional[bool] = None,
322-
input_file: Optional[str] = None,
323-
) -> str:
282+
def create_dataset(*, id: str, viewable_file_name: str) -> str:
324283
dest_dir = os.path.join(data_root, id)
325284
os.makedirs(dest_dir, exist_ok=True)
285+
src = os.path.join(src_data, viewable_file_name)
286+
dst = os.path.join(dest_dir, viewable_file_name)
287+
copyfile(src, dst)
326288

327-
def _copy_asset(fname: str):
328-
src = os.path.join(src_data, fname)
329-
dst = os.path.join(dest_dir, fname)
330-
os.makedirs(os.path.dirname(dst), exist_ok=True)
331-
if os.path.isdir(src):
332-
copytree(src, dst, dirs_exist_ok=True)
333-
else:
334-
copyfile(src, dst)
335-
336-
_copy_asset(viewable_file_name)
337-
if native_file_name:
338-
native_src = os.path.join(src_data, native_file_name)
339-
if os.path.exists(native_src):
340-
_copy_asset(native_file_name)
341-
for fname in additional_files or []:
342-
_copy_asset(fname)
289+
ext = os.path.splitext(viewable_file_name)[1].lower()
290+
geode_object = "model" if ext == ".vtm" else "mesh"
343291

344-
with db_manager.session_scope() as session:
292+
session = db_manager.get_session()
293+
if session is None:
294+
raise RuntimeError("No database session available")
295+
try:
345296
row = session.get(Data, id)
346297
if row is None:
347298
session.add(
348299
Data(
349300
id=id,
350-
native_file_name=native_file_name or "",
301+
native_file_name="",
351302
viewable_file_name=viewable_file_name,
352303
geode_object=geode_object,
353-
light_viewable=light_viewable,
354-
input_file=input_file or "",
355-
additional_files=additional_files or [],
304+
light_viewable=None,
305+
input_file="",
306+
additional_files=[],
356307
)
357308
)
358309
else:
359-
row.native_file_name = native_file_name or row.native_file_name
360-
row.viewable_file_name = viewable_file_name or row.viewable_file_name
361-
row.geode_object = geode_object or row.geode_object
362-
row.light_viewable = (
363-
light_viewable if light_viewable is not None else row.light_viewable
364-
)
365-
row.input_file = input_file or row.input_file
366-
row.additional_files = additional_files or row.additional_files
310+
row.viewable_file_name = viewable_file_name
311+
row.geode_object = geode_object
312+
session.commit()
313+
finally:
314+
session.close()
367315
return id
368316

369317
return create_dataset
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0"?>
2+
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian" header_type="UInt32" compressor="vtkZLibDataCompressor">
3+
<UnstructuredGrid>
4+
<Piece NumberOfPoints="11" NumberOfCells="4">
5+
<PointData>
6+
<DataArray type="Float64" Name="toto_on_vertices" format="ascii" NumberOfComponents="1" RangeMin="1" RangeMax="11">1 2 3 4 5 6 7 8 9 10 11 </DataArray>
7+
<DataArray type="Float64" Name="points" format="ascii" NumberOfComponents="3" RangeMin="0" RangeMax="2">0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 </DataArray>
8+
</PointData>
9+
<Points>
10+
<DataArray type="Float64" Name="Points" format="ascii" NumberOfComponents="3" RangeMin="0" RangeMax="2">0 0 0 1 0 0 2 1 0 1 2 0 0 2 0 0 0 1 1 0 1 2 1 1 1 2 1 0 2 1 1 1 2 </DataArray>
11+
</Points>
12+
<CellData>
13+
<DataArray type="Float64" Name="toto_on_polyhedra" format="ascii" NumberOfComponents="1" RangeMin="3" RangeMax="6">3 4 5 6 </DataArray>
14+
</CellData>
15+
<Cells>
16+
<DataArray type="Int64" Name="connectivity" format="ascii" RangeMin="0" RangeMax="10">0 1 3 4 5 6 8 9 1 2 3 6 7 8 5 6 8 9 10 6 7 8 10 </DataArray>
17+
<DataArray type="Int64" Name="offsets" format="ascii" RangeMin="0" RangeMax="11">8 14 19 23 </DataArray>
18+
<DataArray type="UInt8" Name="types" format="ascii" RangeMin="1" RangeMax="42">12 13 14 10 </DataArray>
19+
</Cells>
20+
</Piece>
21+
</UnstructuredGrid>
22+
</VTKFile>

src/tests/mesh/edges/test_mesh_edges_protocols.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010

1111
def test_edges_visibility(server):
12-
1312
test_register_mesh(server)
1413

1514
server.call(
@@ -21,7 +20,6 @@ def test_edges_visibility(server):
2120

2221

2322
def test_edges_color(server):
24-
2523
test_edges_visibility(server)
2624

2725
server.call(
@@ -32,7 +30,8 @@ def test_edges_color(server):
3230
assert server.compare_image(3, "mesh/edges/color.jpeg") == True
3331

3432

35-
def test_edges_with_edged_curve(server):
33+
def test_edges_with_edged_curve(server, dataset_factory):
34+
dataset_factory(id="22334455", viewable_file_name="edged_curve.vtp")
3635

3736
server.call(
3837
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],

src/tests/mesh/points/test_mesh_points_protocols.py

Lines changed: 12 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,14 @@
55
from opengeodeweb_viewer.rpc.mesh.points.mesh_points_protocols import VtkMeshPointsView
66

77
# Local application imports
8+
from src.tests.mesh.test_mesh_protocols import test_register_mesh
89
# from src.tests.test_data_helpers import create_mesh_data
910

1011

1112
def test_points_visibility(server):
1213
mesh_id = "123456789"
13-
server.call(
14-
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
15-
[{"id": mesh_id}],
16-
)
17-
server.compare_image(3, "mesh/register.jpeg")
14+
test_register_mesh(server)
15+
1816
server.call(
1917
VtkMeshPointsView.mesh_points_prefix
2018
+ VtkMeshPointsView.mesh_points_schemas_dict["visibility"]["rpc"],
@@ -25,17 +23,8 @@ def test_points_visibility(server):
2523

2624
def test_points_size(server):
2725
mesh_id = "123456789"
28-
server.call(
29-
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
30-
[{"id": mesh_id}],
31-
)
32-
server.compare_image(3, "mesh/register.jpeg")
33-
server.call(
34-
VtkMeshPointsView.mesh_points_prefix
35-
+ VtkMeshPointsView.mesh_points_schemas_dict["visibility"]["rpc"],
36-
[{"id": mesh_id, "visibility": True}],
37-
)
38-
server.compare_image(3, "mesh/points/visibility.jpeg")
26+
test_points_visibility(server)
27+
3928
server.call(
4029
VtkMeshPointsView.mesh_points_prefix
4130
+ VtkMeshPointsView.mesh_points_schemas_dict["size"]["rpc"],
@@ -46,24 +35,8 @@ def test_points_size(server):
4635

4736
def test_points_color(server):
4837
mesh_id = "123456789"
38+
test_points_size(server)
4939

50-
server.call(
51-
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
52-
[{"id": mesh_id}],
53-
)
54-
server.compare_image(3, "mesh/register.jpeg")
55-
server.call(
56-
VtkMeshPointsView.mesh_points_prefix
57-
+ VtkMeshPointsView.mesh_points_schemas_dict["visibility"]["rpc"],
58-
[{"id": mesh_id, "visibility": True}],
59-
)
60-
server.compare_image(3, "mesh/points/visibility.jpeg")
61-
server.call(
62-
VtkMeshPointsView.mesh_points_prefix
63-
+ VtkMeshPointsView.mesh_points_schemas_dict["size"]["rpc"],
64-
[{"id": mesh_id, "size": 15}],
65-
)
66-
server.compare_image(3, "mesh/points/size.jpeg")
6740
server.call(
6841
VtkMeshPointsView.mesh_points_prefix
6942
+ VtkMeshPointsView.mesh_points_schemas_dict["color"]["rpc"],
@@ -72,25 +45,30 @@ def test_points_color(server):
7245
assert server.compare_image(3, "mesh/points/color.jpeg") == True
7346

7447

75-
def test_points_with_point_set(server):
48+
def test_points_with_point_set(server, dataset_factory):
7649
mesh_id = "44556677"
50+
51+
dataset_factory(id=mesh_id, viewable_file_name="points.vtp")
7752
server.call(
7853
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
7954
[{"id": mesh_id}],
8055
)
8156
assert server.compare_image(3, "mesh/points/register_point_set.jpeg") == True
57+
8258
server.call(
8359
VtkMeshPointsView.mesh_points_prefix
8460
+ VtkMeshPointsView.mesh_points_schemas_dict["size"]["rpc"],
8561
[{"id": mesh_id, "size": 10}],
8662
)
8763
assert server.compare_image(3, "mesh/points/point_set_size.jpeg") == True
64+
8865
server.call(
8966
VtkMeshPointsView.mesh_points_prefix
9067
+ VtkMeshPointsView.mesh_points_schemas_dict["color"]["rpc"],
9168
[{"id": mesh_id, "color": {"r": 255, "g": 0, "b": 0}}],
9269
)
9370
assert server.compare_image(3, "mesh/points/point_set_color.jpeg") == True
71+
9472
server.call(
9573
VtkMeshPointsView.mesh_points_prefix
9674
+ VtkMeshPointsView.mesh_points_schemas_dict["visibility"]["rpc"],

src/tests/mesh/polyhedra/test_mesh_polyhedra_protocols.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ def test_register_mesh(server):
1919

2020

2121
def test_polyhedra_color(server):
22-
2322
test_register_mesh(server)
2423

2524
server.call(
@@ -31,7 +30,6 @@ def test_polyhedra_color(server):
3130

3231

3332
def test_polyhedra_visibility(server):
34-
3533
test_register_mesh(server)
3634

3735
server.call(
@@ -43,7 +41,6 @@ def test_polyhedra_visibility(server):
4341

4442

4543
def test_vertex_attribute(server):
46-
4744
test_register_mesh(server)
4845

4946
server.call(
@@ -55,7 +52,6 @@ def test_vertex_attribute(server):
5552

5653

5754
def test_polyhedron_attribute(server):
58-
5955
test_register_mesh(server)
6056

6157
server.call(

0 commit comments

Comments
 (0)