Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide remote Pyro5 compatibility for multiple remote objects #138

Merged
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
5 changes: 4 additions & 1 deletion aexpect/remote_door.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
from Pyro5 import server
# noinspection PyPackageRequirements
from Pyro5 import nameserver
NS_MODULE = "Pyro5.nameserver"
except ImportError:
# noinspection PyPackageRequirements,PyUnresolvedReferences
import Pyro4
Expand All @@ -92,10 +93,12 @@ def __init__(self):
# noinspection PyPackageRequirements
from Pyro4 import naming as nameserver
nameserver.start_ns = nameserver.startNS
NS_MODULE = "Pyro4.naming"

except ImportError:
logging.warning("Remote object backend (Pyro4) not found, some functionality"
" of the remote door will not be available")
NS_MODULE = ""

# NOTE: disable aexpect importing on the remote side if not available as the
# remote door can run code remotely without the requirement for the aexpect
Expand Down Expand Up @@ -848,7 +851,7 @@ def share_remote_objects(session, control_path, host="localhost", port=9090,

# setup remote objects server
LOG.info("Starting nameserver for the remote objects")
cmd = f"python -m Pyro4.naming -n {host} -p {port}"
cmd = f"python -m {NS_MODULE} -n {host} -p {port}"
session.cmd("START " + cmd if os_type == "windows" else cmd + " &")

LOG.info("Starting the server daemon for the remote objects")
Expand Down
3 changes: 2 additions & 1 deletion tests/test_remote_door.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,7 @@ def test_share_remote_objects(self):
"""Test that a remote object can be shared properly and remotely."""
self.session = mock.MagicMock(name='session')
self.session.client = "ssh"
remote_door.NS_MODULE = "pyro.name.server"

control_file = os.path.join(remote_door.REMOTE_CONTROL_DIR,
"tmpxxxxxxxx.control")
Expand All @@ -234,7 +235,7 @@ def test_share_remote_objects(self):
else:
self.assertEqual(self.session.cmd.call_count, 1)
command = self.session.cmd.call_args[0][0]
self.assertEqual("python -m Pyro4.naming -n testhost -p 4242 &", command)
self.assertEqual(f"python -m {remote_door.NS_MODULE} -n testhost -p 4242 &", command)

def test_import_remote_exceptions(self):
"""Test that selected remote exceptions are properly imported and deserialized."""
Expand Down
Loading