diff --git a/src/ansys/dpf/core/server_types.py b/src/ansys/dpf/core/server_types.py index 67a7f73b67f..589399a6adb 100644 --- a/src/ansys/dpf/core/server_types.py +++ b/src/ansys/dpf/core/server_types.py @@ -382,6 +382,7 @@ def __init__(self): self._session_instance = None self._base_service_instance = None self._context = None + self._info_instance = None self._docker_config = server_factory.RunningDockerConfig() def set_as_global(self, as_global=True): @@ -431,9 +432,10 @@ def info(self): ``"server_port"``, ``"server_process_id"``, ``"server_version"`` , ``"os"`` and ``"path"`` keys. """ - server_info = self._base_service.server_info - server_info["path"] = self.ansys_path - return server_info + if not self._info_instance: + self._info_instance = self._base_service.server_info + self._info_instance["path"] = self.ansys_path + return self._info_instance def _del_session(self): if self._session_instance: @@ -782,6 +784,7 @@ def _create_shutdown_funcs(self): def shutdown(self): if self.live: + _ = self.info # initializing the info variable (giving access to ip and port): this can be required if start_local_server is called afterwards if self._remote_instance: self._remote_instance.delete() try: @@ -827,10 +830,7 @@ def ip(self): ------- ip : str """ - try: - return self.info["server_ip"] - except: - return "" + return self.info["server_ip"] @property def port(self): @@ -840,10 +840,7 @@ def port(self): ------- port : int """ - try: - return self.info["server_port"] - except: - return 0 + return self.info["server_port"] @property def external_ip(self): @@ -1034,8 +1031,6 @@ def __init__( self.live = False super().__init__() - - self._info_instance = None self._own_process = launch_server self._local_server = False self._stubs = {} @@ -1134,10 +1129,7 @@ def ip(self): ------- ip : str """ - try: - return self.info["server_ip"] - except: - return "" + return self.info["server_ip"] @property def port(self): @@ -1147,10 +1139,7 @@ def port(self): ------- port : int """ - try: - return self.info["server_port"] - except: - return 0 + return self.info["server_port"] @property def external_ip(self): @@ -1221,14 +1210,15 @@ def local_server(self, val): def shutdown(self): if self._own_process and self.live: + _ = self.info # initializing the info variable (giving access to ip and port): this can be required if start_local_server is called afterwards + if self._remote_instance: + self._remote_instance.delete() try: if hasattr(self, "_preparing_shutdown_func"): self._preparing_shutdown_func[0](self._preparing_shutdown_func[1]) except Exception as e: warnings.warn("couldn't prepare shutdown: " + str(e.args)) - if self._remote_instance: - self._remote_instance.delete() else: try: if hasattr(self, "_shutdown_func"): diff --git a/tests/test_server.py b/tests/test_server.py index a61a52557e7..80e4b8efc2a 100644 --- a/tests/test_server.py +++ b/tests/test_server.py @@ -103,6 +103,15 @@ def test_shutdown_all_session_servers(self, server_config): shutdown_all_session_servers() assert not has_local_server() + def test_start_shutdown_start(self, server_config): + set_server_configuration(server_config) + # print(dpf.core.SERVER_CONFIGURATION) + server = start_local_server(timeout=20) + server.shutdown() + server = start_local_server(timeout=20) + assert has_local_server() + shutdown_all_session_servers() + @pytest.mark.parametrize("server_config", server_configs) class TestServer: