Skip to content

Commit 976acf9

Browse files
committed
tests almost cleared
1 parent 39e7fe9 commit 976acf9

17 files changed

+206
-136
lines changed

src/opengeodeweb_viewer/config.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
22
from shutil import copyfile, copytree
33
from sys import platform
4+
import tempfile
45

56

67
def default_config():
@@ -48,7 +49,9 @@ def _copy_test_assets(
4849

4950
def test_config(path):
5051
default_config()
51-
os.environ["DATA_FOLDER_PATH"] = os.path.join(path, "data")
52+
tmp_data_root = tempfile.mkdtemp(prefix="ogw_test_data_")
53+
os.environ["DATA_FOLDER_PATH"] = tmp_data_root
54+
5255
os.environ["DATABASE_PATH"] = str(path)
5356
db_file = os.path.join(path, "project.db")
5457
if not os.path.exists(db_file):

src/opengeodeweb_viewer/rpc/mesh/mesh_protocols.py

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,29 @@ def registerMesh(self, params):
2424
validate_schema(params, self.mesh_schemas_dict["register"], self.mesh_prefix)
2525
data_id = params["id"]
2626
try:
27-
self.registerObject(data_id)
28-
reader = self.get_object(data_id)["reader"]
27+
_ = self.get_data(data_id)
28+
file_path = self.get_data_file_path(data_id)
29+
ext = os.path.splitext(file_path)[1].lower()
30+
if ext == ".vtu":
31+
reader = vtk.vtkXMLUnstructuredGridReader()
32+
reader.SetFileName(file_path)
33+
mapper = vtk.vtkDataSetMapper()
34+
mapper.SetInputConnection(reader.GetOutputPort())
35+
else:
36+
reader = vtk.vtkXMLPolyDataReader()
37+
reader.SetFileName(file_path)
38+
mapper = vtk.vtkPolyDataMapper()
39+
mapper.SetInputConnection(reader.GetOutputPort())
40+
41+
actor = vtk.vtkActor()
42+
actor.SetMapper(mapper)
43+
44+
renderer = self.get_renderer()
45+
renderer.AddActor(actor)
46+
47+
self.register_object(data_id, reader, None, actor, mapper, {})
48+
49+
reader.Update()
2950
data_object = reader.GetOutput()
3051
data_set = vtk.vtkDataSet.SafeDownCast(data_object)
3152
cell_types = vtk.vtkCellTypes()
@@ -45,7 +66,12 @@ def registerMesh(self, params):
4566
max_dimension = "polygons"
4667
elif max_id >= 7:
4768
max_dimension = "polyhedra"
48-
self.get_data_base()[data_id]["max_dimension"] = max_dimension
69+
self.get_object(data_id)["max_dimension"] = max_dimension
70+
71+
renderWindow = self.getView("-1")
72+
renderer.ResetCamera()
73+
renderWindow.Render()
74+
self.render()
4975
except Exception as e:
5076
print(f"Error registering mesh {data_id}: {str(e)}", flush=True)
5177
raise

src/tests/conftest.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def _reader_for_file(path: str):
7070
return vtk.vtkJPEGReader()
7171
return vtk.vtkJPEGReader()
7272

73-
def images_diff(self, first_image_path, second_image_path):
73+
def images_diff(self, first_image_path, second_image_path, tolerance: float = 0.0):
7474
first_reader = self._reader_for_file(first_image_path)
7575
first_reader.SetFileName(first_image_path)
7676

@@ -82,9 +82,11 @@ def images_diff(self, first_image_path, second_image_path):
8282
images_diff.SetImageConnection(second_reader.GetOutputPort())
8383
images_diff.Update()
8484

85-
return images_diff.GetThresholdedError()
85+
error = images_diff.GetThresholdedError()
86+
print(f"Image comparison error for {second_image_path}: {error} (tolerance: {tolerance})", flush=True)
87+
return error <= tolerance
8688

87-
def compare_image(self, nb_messages, filename):
89+
def compare_image(self, nb_messages, filename, tolerance=0.0):
8890

8991
self.ws.settimeout(4.0)
9092
image = None
@@ -97,7 +99,7 @@ def compare_image(self, nb_messages, filename):
9799
if isinstance(msg, bytes):
98100
image = msg
99101
break
100-
if not isinstance(image, bytes):
102+
if not isinstance(msg, bytes):
101103
return False
102104
test_file_path = os.path.abspath(
103105
os.path.join(self.test_output_dir, "test.jpeg")
@@ -122,7 +124,7 @@ def compare_image(self, nb_messages, filename):
122124
test_file_path = new_path
123125

124126
path_image = os.path.join(self.images_dir_path, filename)
125-
return self.images_diff(test_file_path, path_image) == 0.0
127+
return self.images_diff(test_file_path, path_image, tolerance)
126128

127129
def _init_ws(self):
128130
self.ws.send(
@@ -249,8 +251,8 @@ def create_dataset(
249251
if dst_path.suffix.lower() == ".vtm":
250252
tree = ET.parse(dst_path)
251253
root = tree.getroot()
252-
for piece in root.findall(".//Piece"):
253-
file_attr = piece.get("Source")
254+
for dataset in root.findall(".//DataSet"):
255+
file_attr = dataset.get("file")
254256
if file_attr:
255257
src_piece = src_path.parent / file_attr
256258
dst_piece = data_folder / file_attr

src/tests/mesh/edges/test_mesh_edges_protocols.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
from src.tests.mesh.test_mesh_protocols import test_register_mesh
99

1010

11-
def test_edges_visibility(server):
12-
test_register_mesh(server)
11+
def test_edges_visibility(server, dataset_factory):
12+
test_register_mesh(server, dataset_factory)
1313

1414
server.call(
1515
VtkMeshEdgesView.mesh_edges_prefix
@@ -19,8 +19,8 @@ def test_edges_visibility(server):
1919
assert server.compare_image(3, "mesh/edges/visibility.jpeg") == True
2020

2121

22-
def test_edges_color(server):
23-
test_edges_visibility(server)
22+
def test_edges_color(server, dataset_factory):
23+
test_edges_visibility(server, dataset_factory)
2424

2525
server.call(
2626
VtkMeshEdgesView.mesh_edges_prefix

src/tests/mesh/points/test_mesh_points_protocols.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
# from src.tests.test_data_helpers import create_mesh_data
1111

1212

13-
def test_points_visibility(server):
13+
def test_points_visibility(server, dataset_factory):
1414
mesh_id = "123456789"
15-
test_register_mesh(server)
15+
test_register_mesh(server, dataset_factory)
1616

1717
server.call(
1818
VtkMeshPointsView.mesh_points_prefix
@@ -22,9 +22,9 @@ def test_points_visibility(server):
2222
assert server.compare_image(3, "mesh/points/visibility.jpeg") == True
2323

2424

25-
def test_points_size(server):
25+
def test_points_size(server, dataset_factory):
2626
mesh_id = "123456789"
27-
test_points_visibility(server)
27+
test_points_visibility(server, dataset_factory)
2828

2929
server.call(
3030
VtkMeshPointsView.mesh_points_prefix
@@ -34,9 +34,9 @@ def test_points_size(server):
3434
assert server.compare_image(3, "mesh/points/size.jpeg") == True
3535

3636

37-
def test_points_color(server):
37+
def test_points_color(server, dataset_factory):
3838
mesh_id = "123456789"
39-
test_points_size(server)
39+
test_points_size(server, dataset_factory)
4040

4141
server.call(
4242
VtkMeshPointsView.mesh_points_prefix

src/tests/mesh/polygons/test_mesh_polygons_protocols.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
from src.tests.mesh.test_mesh_protocols import test_register_mesh
88

99

10-
def test_polygons_color(server):
10+
def test_polygons_color(server, dataset_factory):
1111

12-
test_register_mesh(server)
12+
test_register_mesh(server, dataset_factory)
1313

1414
server.call(
1515
VtkMeshPolygonsView.mesh_polygons_prefix
@@ -19,9 +19,9 @@ def test_polygons_color(server):
1919
assert server.compare_image(3, "mesh/polygons/color.jpeg") == True
2020

2121

22-
def test_polygons_visibility(server):
22+
def test_polygons_visibility(server, dataset_factory):
2323

24-
test_register_mesh(server)
24+
test_register_mesh(server, dataset_factory)
2525

2626
server.call(
2727
VtkMeshPolygonsView.mesh_polygons_prefix

src/tests/mesh/polyhedra/test_mesh_polyhedra_protocols.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
# Local application imports
1010

1111

12-
def test_register_mesh(server):
12+
def test_register_mesh(server, dataset_factory):
13+
dataset_factory(id="11223344", viewable_file_name="polyhedron_attribute.vtu")
1314

1415
server.call(
1516
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
@@ -18,8 +19,8 @@ def test_register_mesh(server):
1819
assert server.compare_image(3, "mesh/polyhedra/register.jpeg") == True
1920

2021

21-
def test_polyhedra_color(server):
22-
test_register_mesh(server)
22+
def test_polyhedra_color(server, dataset_factory):
23+
test_register_mesh(server, dataset_factory)
2324

2425
server.call(
2526
VtkMeshPolyhedraView.mesh_polyhedra_prefix
@@ -29,8 +30,8 @@ def test_polyhedra_color(server):
2930
assert server.compare_image(3, "mesh/polyhedra/color.jpeg") == True
3031

3132

32-
def test_polyhedra_visibility(server):
33-
test_register_mesh(server)
33+
def test_polyhedra_visibility(server, dataset_factory):
34+
test_register_mesh(server, dataset_factory)
3435

3536
server.call(
3637
VtkMeshPolyhedraView.mesh_polyhedra_prefix
@@ -40,8 +41,8 @@ def test_polyhedra_visibility(server):
4041
assert server.compare_image(3, "mesh/polyhedra/visibility.jpeg") == True
4142

4243

43-
def test_vertex_attribute(server):
44-
test_register_mesh(server)
44+
def test_vertex_attribute(server, dataset_factory):
45+
test_register_mesh(server, dataset_factory)
4546

4647
server.call(
4748
VtkMeshPolyhedraView.mesh_polyhedra_prefix
@@ -51,8 +52,8 @@ def test_vertex_attribute(server):
5152
assert server.compare_image(3, "mesh/polyhedra/vertex_attribute.jpeg") == True
5253

5354

54-
def test_polyhedron_attribute(server):
55-
test_register_mesh(server)
55+
def test_polyhedron_attribute(server, dataset_factory):
56+
test_register_mesh(server, dataset_factory)
5657

5758
server.call(
5859
VtkMeshPolyhedraView.mesh_polyhedra_prefix

src/tests/mesh/test_mesh_protocols.py

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,33 @@
33
from opengeodeweb_microservice.database.data import Data
44

55

6-
def test_register_mesh(server):
7-
session = server.get_session()
8-
session.add(
9-
Data(
10-
id="123456789",
11-
viewable_file_name="hat.vtp",
12-
# geode_object="mesh",
13-
)
14-
)
6+
def test_register_mesh(server, dataset_factory):
7+
dataset_factory(id="123456789", viewable_file_name="hat.vtp")
8+
159
server.call(
1610
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
1711
[{"id": "123456789"}],
1812
)
1913
assert server.compare_image(3, "mesh/register.jpeg") == True
2014

2115

22-
def test_deregister_mesh(server):
23-
24-
test_register_mesh(server)
25-
16+
def test_deregister_mesh(server, dataset_factory):
17+
dataset_factory(id="123456789", viewable_file_name="hat.vtp")
18+
19+
server.call(
20+
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["register"]["rpc"],
21+
[{"id": "123456789"}],
22+
)
23+
2624
server.call(
2725
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["deregister"]["rpc"],
2826
[{"id": "123456789"}],
2927
)
3028
assert server.compare_image(3, "mesh/deregister.jpeg") == True
3129

3230

33-
def test_opacity(server):
34-
35-
test_register_mesh(server)
31+
def test_opacity(server, dataset_factory):
32+
test_register_mesh(server, dataset_factory)
3633

3734
server.call(
3835
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["opacity"]["rpc"],
@@ -41,9 +38,8 @@ def test_opacity(server):
4138
assert server.compare_image(3, "mesh/opacity.jpeg") == True
4239

4340

44-
def test_visibility(server):
45-
46-
test_register_mesh(server)
41+
def test_visibility(server, dataset_factory):
42+
test_register_mesh(server, dataset_factory)
4743

4844
server.call(
4945
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["visibility"]["rpc"],
@@ -52,9 +48,8 @@ def test_visibility(server):
5248
assert server.compare_image(3, "mesh/visibility.jpeg") == True
5349

5450

55-
def test_color(server):
56-
57-
test_register_mesh(server)
51+
def test_color(server, dataset_factory):
52+
test_register_mesh(server, dataset_factory)
5853

5954
server.call(
6055
VtkMeshView.mesh_prefix + VtkMeshView.mesh_schemas_dict["color"]["rpc"],
@@ -63,9 +58,8 @@ def test_color(server):
6358
assert server.compare_image(3, "mesh/color.jpeg") == True
6459

6560

66-
def test_apply_textures(server):
67-
68-
test_register_mesh(server)
61+
def test_apply_textures(server, dataset_factory):
62+
test_register_mesh(server, dataset_factory)
6963

7064
server.call(
7165
VtkMeshView.mesh_prefix

src/tests/model/blocks/test_model_blocks_protocols.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
from src.tests.model.test_model_protocols import test_register_model_cube
1010

1111

12-
def test_blocks_polyhedra_visibility(server):
12+
def test_blocks_polyhedra_visibility(server, dataset_factory):
1313

14-
test_register_model_cube(server)
14+
test_register_model_cube(server, dataset_factory)
1515

1616
server.call(
1717
VtkModelBlocksView.model_blocks_prefix
@@ -42,9 +42,9 @@ def test_blocks_polyhedra_visibility(server):
4242
assert server.compare_image(3, "model/blocks/visibility.jpeg") == True
4343

4444

45-
def test_blocks_polyhedra_color(server):
45+
def test_blocks_polyhedra_color(server, dataset_factory):
4646

47-
test_blocks_polyhedra_visibility(server)
47+
test_blocks_polyhedra_visibility(server, dataset_factory)
4848

4949
server.call(
5050
VtkModelBlocksView.model_blocks_prefix

src/tests/model/corners/test_model_corners_protocols.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
from src.tests.model.test_model_protocols import test_register_model_cube
1010

1111

12-
def test_corners_points_visibility(server):
12+
def test_corners_points_visibility(server, dataset_factory):
1313

14-
test_register_model_cube(server)
14+
test_register_model_cube(server, dataset_factory)
1515

1616
server.call(
1717
VtkModelCornersView.model_corners_prefix
@@ -40,9 +40,9 @@ def test_corners_points_visibility(server):
4040
assert server.compare_image(3, "model/corners/visibility.jpeg") == True
4141

4242

43-
def test_corners_points_color(server):
43+
def test_corners_points_color(server, dataset_factory):
4444

45-
test_corners_points_visibility(server)
45+
test_corners_points_visibility(server, dataset_factory)
4646

4747
server.call(
4848
VtkModelCornersView.model_corners_prefix

0 commit comments

Comments
 (0)