Skip to content

Commit 8a3e307

Browse files
committed
[test_ModelicaSystemDoE] update test definition for local/docker/WSL
1 parent 0bd7df7 commit 8a3e307

File tree

1 file changed

+72
-7
lines changed

1 file changed

+72
-7
lines changed

tests/test_ModelicaSystemDoE.py

Lines changed: 72 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,24 @@
22
import OMPython
33
import pathlib
44
import pytest
5+
import sys
6+
7+
skip_on_windows = pytest.mark.skipif(
8+
sys.platform.startswith("win"),
9+
reason="OpenModelica Docker image is Linux-only; skipping on Windows.",
10+
)
11+
12+
skip_python_older_312 = pytest.mark.skipif(
13+
sys.version_info < (3, 12),
14+
reason="OMCPath(non-local) only working for Python >= 3.12.",
15+
)
516

617

718
@pytest.fixture
819
def model_doe(tmp_path: pathlib.Path) -> pathlib.Path:
920
# see: https://trac.openmodelica.org/OpenModelica/ticket/4052
1021
mod = tmp_path / "M.mo"
22+
# TODO: update for bool and string parameters; check if these can be used in DoE
1123
mod.write_text("""
1224
model M
1325
parameter Integer p=1;
@@ -37,7 +49,46 @@ def param_doe() -> dict[str, list]:
3749
return param
3850

3951

40-
def test_ModelicaSystemDoE(tmp_path, model_doe, param_doe):
52+
def test_ModelicaSystemDoE_local(tmp_path, model_doe, param_doe):
53+
tmpdir = tmp_path / 'DoE'
54+
tmpdir.mkdir(exist_ok=True)
55+
56+
doe_mod = OMPython.ModelicaSystemDoE(
57+
fileName=model_doe.as_posix(),
58+
modelName="M",
59+
parameters=param_doe,
60+
resultpath=tmpdir,
61+
simargs={"override": {'stopTime': 1.0}},
62+
)
63+
64+
_run_ModelicaSystemDoe(doe_mod=doe_mod)
65+
66+
67+
@skip_on_windows
68+
@skip_python_older_312
69+
def test_ModelicaSystemDoE_docker(tmp_path, model_doe, param_doe):
70+
omcp = OMPython.OMCProcessDocker(docker="openmodelica/openmodelica:v1.25.0-minimal")
71+
omc = OMPython.OMCSessionZMQ(omc_process=omcp)
72+
assert omc.sendExpression("getVersion()") == "OpenModelica 1.25.0"
73+
74+
modelpath = omc.omcpath_tempdir() / 'M.mo'
75+
modelpath.write_text(model_doe.read_text())
76+
77+
doe_mod = OMPython.ModelicaSystemDoE(
78+
fileName=modelpath.as_posix(),
79+
modelName="M",
80+
parameters=param_doe,
81+
omc_process=omcp,
82+
resultpath=modelpath.parent,
83+
simargs={"override": {'stopTime': 1.0}},
84+
)
85+
86+
_run_ModelicaSystemDoe(doe_mod=doe_mod)
87+
88+
89+
@pytest.mark.skip(reason="Not able to run WSL on github")
90+
@skip_python_older_312
91+
def test_ModelicaSystemDoE_WSL(tmp_path, model_doe, param_doe):
4192
tmpdir = tmp_path / 'DoE'
4293
tmpdir.mkdir(exist_ok=True)
4394

@@ -48,20 +99,34 @@ def test_ModelicaSystemDoE(tmp_path, model_doe, param_doe):
4899
resultpath=tmpdir,
49100
simargs={"override": {'stopTime': 1.0}},
50101
)
102+
103+
_run_ModelicaSystemDoe(doe_mod=doe_mod)
104+
105+
106+
def _run_ModelicaSystemDoe(doe_mod):
51107
doe_count = doe_mod.prepare()
52108
assert doe_count == 16
53109

54-
doe_dict = doe_mod.get_doe()
55-
assert isinstance(doe_dict, dict)
56-
assert len(doe_dict.keys()) == 16
110+
doe_def = doe_mod.get_doe_definition()
111+
assert isinstance(doe_def, dict)
112+
assert len(doe_def.keys()) == doe_count
113+
114+
doe_cmd = doe_mod.get_doe_command()
115+
assert isinstance(doe_cmd, dict)
116+
assert len(doe_cmd.keys()) == doe_count
57117

58118
doe_status = doe_mod.simulate()
59119
assert doe_status is True
60120

61-
doe_sol = doe_mod.get_solutions()
121+
doe_sol = doe_mod.get_doe_solutions()
122+
assert isinstance(doe_sol, dict)
123+
assert len(doe_sol.keys()) == doe_count
124+
125+
assert sorted(doe_def.keys()) == sorted(doe_cmd.keys())
126+
assert sorted(doe_cmd.keys()) == sorted(doe_sol.keys())
62127

63-
for resultfilename in doe_dict:
64-
row = doe_dict[resultfilename]
128+
for resultfilename in doe_def:
129+
row = doe_def[resultfilename]
65130

66131
assert resultfilename in doe_sol
67132
sol = doe_sol[resultfilename]

0 commit comments

Comments
 (0)