Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/changelog.d/4763.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Some issues <session>.is_active +1385523
5 changes: 5 additions & 0 deletions doc/deprecated_pyfluent_apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,12 @@
(
":py:meth:`ansys.fluent.core.session.BaseSession.health_check <ansys.fluent.core.session.BaseSession.health_check>`",
"0.32",
":py:meth:`ansys.fluent.core.session.BaseSession.is_active <ansys.fluent.core.session.BaseSession.is_active>`",
),
(
":py:meth:`ansys.fluent.core.session.BaseSession.is_server_healthy <ansys.fluent.core.session.BaseSession.is_server_healthy>`",
"0.38",
":py:meth:`ansys.fluent.core.session.BaseSession.is_active <ansys.fluent.core.session.BaseSession.is_active>`",
),
(
":py:meth:`ansys.fluent.core.file_session.Transaction.add_surfaces_request <ansys.fluent.core.file_session.Transaction.add_surfaces_request>`",
Expand Down
10 changes: 6 additions & 4 deletions src/ansys/fluent/core/services/datamodel_se.py
Original file line number Diff line number Diff line change
Expand Up @@ -1925,14 +1925,16 @@ def __call__(self, *args, **kwds) -> Any:
Any
Return value.
"""
processed = []
for arg, value in kwds.items():
if self._get_file_purpose(arg):
kwds[arg] = self.before_execute(value)
result = super().__call__(*args, **kwds)
for arg, value in kwds.items():
if self._get_file_purpose(arg):
processed.append(kwds[arg])
try:
return super().__call__(*args, **kwds)
finally:
for value in processed:
self.after_execute(value)
return result


class _InputFile:
Expand Down
10 changes: 8 additions & 2 deletions src/ansys/fluent/core/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
from ansys.fluent.core.utils.fluent_version import FluentVersion

from .rpvars import RPVars
from .utils.deprecate import deprecate_function

try:
from ansys.fluent.core.solver.settings import root
Expand Down Expand Up @@ -251,13 +252,18 @@ def _build_from_fluent_connection(
for obj in filter(None, (self._datamodel_events, self.transcript, self.events)):
self._fluent_connection.register_finalizer_cb(obj.stop)

@deprecate_function(version="v0.38.0", new_func="is_active")
def is_server_healthy(self) -> bool:
"""Whether the current session is healthy (i.e. The server is 'SERVING')."""
"""Whether the current session is healthy (i.e. the server is 'SERVING')."""
return self._is_server_healthy()

def _is_server_healthy(self) -> bool:
"""Whether the current session is healthy (i.e. the server is 'SERVING')."""
return self._health_check.is_serving

def is_active(self) -> bool:
"""Whether the current session is active."""
return True if self._fluent_connection else False
return self._fluent_connection is not None and self._is_server_healthy()

@property
@deprecated(version="0.32", reason="Use ``session.scheme``.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def test_simple_solve(mixing_elbow_param_case_data_session):
"""
# Step 1: Launch fluent session and read case file with and without data file
solver_session = mixing_elbow_param_case_data_session
assert solver_session.is_server_healthy()
assert solver_session.is_active()
if not solver_session.connection_properties.inside_container:
solver_session.chdir(pyfluent.config.examples_path)
case_name = "elbow_param.cas.h5"
Expand Down Expand Up @@ -225,7 +225,7 @@ def test_generate_read_mesh(mixing_elbow_geometry_filename):
meshing_session = pyfluent.launch_fluent(
mode="meshing", precision="double", processor_count=2, **grpc_kwds
)
assert meshing_session.is_server_healthy()
assert meshing_session.is_active()
if not meshing_session.connection_properties.inside_container:
meshing_session.chdir(pyfluent.config.examples_path)
temporary_resource_path = (
Expand Down
10 changes: 5 additions & 5 deletions tests/test_fluent_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,16 +166,16 @@ def test_does_not_exit_fluent_by_default_when_connected_to_running_fluent(
port=session1.connection_properties.port,
password=session1.connection_properties.password,
)
assert session2.is_server_healthy()
assert session2.is_active()
session2.exit()

timeout_loop(
session1.is_server_healthy(),
session1.is_active(),
5.0,
expected="truthy",
)

assert session1.is_server_healthy()
assert session1.is_active()
session1.exit()


Expand All @@ -193,12 +193,12 @@ def test_exit_fluent_when_connected_to_running_fluent(
session2.exit()

timeout_loop(
session1.is_server_healthy(),
session1.is_active(),
5.0,
expected="falsy",
)

assert not session1.is_server_healthy()
assert not session1.is_active()


def test_fluent_connection_properties(
Expand Down
6 changes: 3 additions & 3 deletions tests/test_launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ def test_container_launcher():

# test run with configuration dict
session = pyfluent.launch_fluent(container_dict=container_dict, **grpc_kwds)
assert session.is_server_healthy()
assert session.is_active()


def test_container_working_dir():
Expand Down Expand Up @@ -200,7 +200,7 @@ def test_container_working_dir():

# after all these 'working_dir' changes, the container should still launch
session = pyfluent.launch_fluent(container_dict=container_dict3, **grpc_kwds)
assert session.is_server_healthy()
assert session.is_active()


@pytest.mark.standalone
Expand Down Expand Up @@ -549,7 +549,7 @@ def test_container_mount_source_target(caplog):
}
grpc_kwds = get_grpc_launcher_args_for_gh_runs()
session = pyfluent.launch_fluent(container_dict=container_dict, **grpc_kwds)
assert session.is_server_healthy()
assert session.is_active()
assert container_dict["mount_source"] in caplog.text
assert container_dict["mount_target"] in caplog.text

Expand Down
2 changes: 1 addition & 1 deletion tests/test_meshing_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,7 +447,7 @@ def test_inaccessible_meshing_attributes_after_switching_to_solver(
):
meshing = new_meshing_session_wo_exit
assert meshing.is_active() is True
assert meshing.is_server_healthy()
assert meshing._is_server_healthy()
solver = meshing.switch_to_solver()
assert solver.is_active() is True
assert meshing.is_active() is False
Expand Down
4 changes: 2 additions & 2 deletions tests/test_meshingmode/test_meshing_launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
@pytest.mark.codegen_required
def test_launch_pure_meshing(mixing_elbow_watertight_pure_meshing_session):
pure_meshing_session = mixing_elbow_watertight_pure_meshing_session
assert pure_meshing_session.is_server_healthy()
assert pure_meshing_session.is_active()
file_name = "launch_pure_meshing_journal.py"
pure_meshing_session.journal.start(file_name)
session_dir = dir(pure_meshing_session)
Expand Down Expand Up @@ -104,7 +104,7 @@ def test_launch_pure_meshing(mixing_elbow_watertight_pure_meshing_session):
@pytest.mark.codegen_required
def test_launch_meshing_and_switch(new_meshing_session_wo_exit, capsys):
meshing = new_meshing_session_wo_exit
assert meshing.is_server_healthy()
assert meshing._is_server_healthy()
assert meshing.is_active() is True
capsys.readouterr()
help(meshing)
Expand Down
63 changes: 41 additions & 22 deletions tests/test_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,10 +153,10 @@ def test_create_mock_session_by_passing_ip_port_password() -> None:
fluent_connection=fluent_connection,
scheme_eval=fluent_connection._connection_interface.scheme_eval,
)
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_server_healthy()
assert not session.is_active()


def test_create_mock_session_by_setting_ip_port_env_var(
Expand All @@ -178,10 +178,10 @@ def test_create_mock_session_by_setting_ip_port_env_var(
fluent_connection=fluent_connection,
scheme_eval=fluent_connection._connection_interface.scheme_eval,
)
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_server_healthy()
assert not session.is_active()


def test_create_mock_session_by_passing_grpc_channel() -> None:
Expand All @@ -202,10 +202,10 @@ def test_create_mock_session_by_passing_grpc_channel() -> None:
fluent_connection=fluent_connection,
scheme_eval=fluent_connection._connection_interface.scheme_eval,
)
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_server_healthy()
assert not session.is_active()


def test_create_mock_session_from_server_info_file(tmp_path: Path) -> None:
Expand All @@ -223,10 +223,10 @@ def test_create_mock_session_from_server_info_file(tmp_path: Path) -> None:
session = BaseSession._create_from_server_info_file(
server_info_file_name=str(server_info_file), cleanup_on_exit=False
)
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_server_healthy()
assert not session.is_active()


def test_create_mock_session_from_server_info_file_with_wrong_password(
Expand Down Expand Up @@ -275,7 +275,7 @@ def test_create_mock_session_from_launch_fluent_by_passing_ip_port_password() ->
fields_dir = dir(session.fields)
for attr in ("field_data", "field_info"):
assert attr in fields_dir
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_active()
Expand Down Expand Up @@ -303,7 +303,7 @@ def test_create_mock_session_from_launch_fluent_by_setting_ip_port_env_var(
fields_dir = dir(session.fields)
for attr in ("field_data", "field_info"):
assert attr in fields_dir
assert session.is_server_healthy()
assert session.is_active()
server.stop(None)
session.exit()
assert not session.is_active()
Expand Down Expand Up @@ -448,8 +448,8 @@ def new_solver_session2(new_solver_session):
def test_build_from_fluent_connection(new_solver_session, new_solver_session2):
solver1 = new_solver_session
solver2 = new_solver_session2
assert solver1.is_server_healthy()
assert solver2.is_server_healthy()
assert solver1.is_active()
assert solver2.is_active()
health_check_service1 = solver1._health_check
cortex_pid2 = solver2._fluent_connection.connection_properties.cortex_pid
# The below hack is performed to check the base class method
Expand All @@ -459,8 +459,8 @@ def test_build_from_fluent_connection(new_solver_session, new_solver_session2):
fluent_connection=solver2._fluent_connection,
scheme_eval=solver2._fluent_connection._connection_interface.scheme_eval,
)
assert solver1.is_server_healthy()
assert solver2.is_server_healthy()
assert solver1.is_active()
assert solver2.is_active()
timeout_loop(
not health_check_service1.is_serving,
timeout=60,
Expand Down Expand Up @@ -654,7 +654,7 @@ def test_new_launch_fluent_api_standalone():

solver = pyfluent.Solver.from_install()
assert solver._health_check.check_health() == solver._health_check.Status.SERVING
assert solver.is_server_healthy()
assert solver.is_active()

ip = solver.connection_properties.ip
password = solver.connection_properties.password
Expand All @@ -667,13 +667,13 @@ def test_new_launch_fluent_api_standalone():
solver_connected._health_check.check_health()
== solver._health_check.Status.SERVING
)
assert solver.is_server_healthy()
assert solver.is_active()

solver.exit()
solver_connected.exit()

solver_aero = pyfluent.SolverAero.from_install()
assert solver_aero.is_server_healthy()
assert solver_aero.is_active()

ip = solver_aero.connection_properties.ip
port = solver_aero.connection_properties.port
Expand All @@ -682,13 +682,13 @@ def test_new_launch_fluent_api_standalone():
solver_aero_connected = pyfluent.SolverAero.from_connection(
ip=ip, port=port, password=password
)
assert solver_aero_connected.is_server_healthy()
assert solver_aero_connected.is_active()

solver_aero.exit()
solver_aero_connected.exit()

meshing = pyfluent.Meshing.from_install()
assert meshing.is_server_healthy()
assert meshing.is_active()

ip = meshing.connection_properties.ip
port = meshing.connection_properties.port
Expand All @@ -697,7 +697,7 @@ def test_new_launch_fluent_api_standalone():
meshing_connected = pyfluent.Meshing.from_connection(
ip=ip, port=port, password=password
)
assert meshing_connected.is_server_healthy()
assert meshing_connected.is_active()

meshing.exit()
meshing_connected.exit()
Expand Down Expand Up @@ -726,7 +726,7 @@ def test_new_launch_fluent_api_from_container():
grpc_kwds = get_grpc_launcher_args_for_gh_runs()
solver = pyfluent.Solver.from_container(container_dict=container_dict, **grpc_kwds)
assert solver._health_check.check_health() == solver._health_check.Status.SERVING
assert solver.is_server_healthy()
assert solver.is_active()
solver.exit()


Expand All @@ -735,7 +735,7 @@ def test_new_launch_fluent_api_from_connection():

solver = pyfluent.Solver.from_container(insecure_mode=True)
assert solver._health_check.check_health() == solver._health_check.Status.SERVING
assert solver.is_server_healthy()
assert solver.is_active()
ip = solver.connection_properties.ip
port = solver.connection_properties.port
password = solver.connection_properties.password
Expand Down Expand Up @@ -873,3 +873,22 @@ def test_dir_for_session(new_meshing_session_wo_exit):

assert dir(solver) == ["is_active", "wait_process_finished"]
assert len(dir(meshing_new)) > 1


@pytest.mark.standalone
def test_session_is_active(new_solver_session_wo_exit):
session_1 = new_solver_session_wo_exit
ip = session_1.connection_properties.ip
password = session_1.connection_properties.password
port = session_1.connection_properties.port

assert session_1.is_active()

session_2 = pyfluent.Solver.from_connection(ip=ip, password=password, port=port)

assert session_2.is_active()

session_1.exit()

assert not session_1.is_active()
assert not session_2.is_active()
4 changes: 2 additions & 2 deletions tests/test_solvermode/test_general.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
def test_solver_import_mixingelbow(mixing_elbow_settings_session):
solver_session = mixing_elbow_settings_session
assert solver_session.settings.is_active()
assert solver_session.is_server_healthy()
assert solver_session.is_active()
file_name = Path(pyfluent.config.examples_path) / "jou_test_general.py"
solver_session.journal.start(file_name.as_posix())
###
Expand Down Expand Up @@ -108,7 +108,7 @@ def test_solver_import_mixingelbow(mixing_elbow_settings_session):
def test_disk_2d_setup(disk_settings_session):
session = disk_settings_session
assert session.settings.is_active()
assert session.is_server_healthy()
assert session.is_active()
###
assert not session.setup.models.energy.enabled()
assert session.scheme.eval("(case-valid?)")
Expand Down
Loading