Loading tango/test_context.py +20 −11 Changes for tango/test_context.py: 20 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -2,16 +2,18 @@ from __future__ import absolute_import __all__ = ["DeviceTestContext", "run_device_test_context"] # Imports import os import six import struct import tempfile import threading import collections # Concurrency imports import threading import multiprocessing from six.moves import queue # CLI imports from ast import literal_eval from importlib import import_module Loading @@ -21,6 +23,8 @@ from argparse import ArgumentParser from .server import run from . import DeviceProxy, Database, Util __all__ = ["DeviceTestContext", "run_device_test_context"] # Helpers Loading Loading @@ -74,12 +78,12 @@ class DeviceTestContext(object): nodb = "dbase=no" command = "{0} {1} -ORBendPoint giop:tcp::{2} -file={3}" connect_timeout = 1.0 connect_timeout = 1. disconnect_timeout = connect_timeout def __init__(self, device, device_cls=None, server_name=None, instance_name=None, device_name=None, properties={}, db=None, port=0, debug=3, daemon=False): db=None, port=0, debug=3, process=False, daemon=False): """Inititalize the context to run a given device.""" # Argument tangoclass = device.__name__ Loading @@ -91,6 +95,9 @@ class DeviceTestContext(object): device_name = 'test/nodb/' + server_name.lower() if db is None: _, db = tempfile.mkstemp() # Patch bug #819 if process: os.environ['ORBscanGranularity'] = '0' # Attributes self.db = db self.host = '' Loading @@ -98,7 +105,7 @@ class DeviceTestContext(object): self.device_name = device_name self.server_name = "/".join(("dserver", server_name, instance_name)) self.device = self.server = None self.waiter = threading.Event() self.queue = multiprocessing.Queue() if process else queue.Queue() # File self.generate_db_file(server_name, instance_name, device_name, tangoclass, properties) Loading @@ -117,14 +124,14 @@ class DeviceTestContext(object): target = device.run_server args = (cmd_args,) # Thread cls = threading.Thread kwargs = {'post_init_callback': self.post_init} cls = multiprocessing.Process if process else threading.Thread self.thread = cls(target=target, args=args, kwargs=kwargs) self.thread.daemon = daemon def post_init(self): self.host, self.port = get_server_host_port() self.waiter.set() host, port = get_server_host_port() self.queue.put((host, port)) def generate_db_file(self, server, instance, device, tangoclass=None, properties={}): Loading Loading @@ -161,12 +168,14 @@ class DeviceTestContext(object): return self def connect(self): if not self.waiter.wait(self.connect_timeout): try: self.host, self.port = self.queue.get( timeout=self.connect_timeout) except queue.Empty: raise RuntimeError( 'The server did not start. ' 'Check stdout/stderr for more information.') # Get server proxy print(self.get_server_access()) self.server = DeviceProxy(self.get_server_access()) self.server.ping() # Get device proxy Loading test/test_server.py +6 −14 Changes for test/test_server.py: 6 added lines, 14 removed lines. Original line number Diff line number Diff line Loading @@ -107,11 +107,10 @@ def test_read_write_attribute(typed_values, server_green_mode): # Test properties @pytest.fixture def device_with_property(typed_values, server_green_mode): def test_device_property(typed_values, server_green_mode): dtype, values = typed_values default = values[0] other = values[1] value = values[1] @add_metaclass(DeviceMeta) class TestDevice(Device): Loading @@ -123,19 +122,12 @@ def device_with_property(typed_values, server_green_mode): def get_prop(self): return self.prop return TestDevice, default, other def test_default_property(device_with_property): TestDevice, default, _ = device_with_property with DeviceTestContext(TestDevice) as proxy: with DeviceTestContext(TestDevice, process=True) as proxy: expected = pytest.approx(default) assert proxy.get_prop() == expected def test_device_property(device_with_property): TestDevice, _, value = device_with_property properties = {'prop': value} with DeviceTestContext(TestDevice, properties=properties) as proxy: with DeviceTestContext(TestDevice, properties={'prop': value}, process=True) as proxy: expected = pytest.approx(value) assert proxy.get_prop() == expected Loading
tango/test_context.py +20 −11 Changes for tango/test_context.py: 20 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -2,16 +2,18 @@ from __future__ import absolute_import __all__ = ["DeviceTestContext", "run_device_test_context"] # Imports import os import six import struct import tempfile import threading import collections # Concurrency imports import threading import multiprocessing from six.moves import queue # CLI imports from ast import literal_eval from importlib import import_module Loading @@ -21,6 +23,8 @@ from argparse import ArgumentParser from .server import run from . import DeviceProxy, Database, Util __all__ = ["DeviceTestContext", "run_device_test_context"] # Helpers Loading Loading @@ -74,12 +78,12 @@ class DeviceTestContext(object): nodb = "dbase=no" command = "{0} {1} -ORBendPoint giop:tcp::{2} -file={3}" connect_timeout = 1.0 connect_timeout = 1. disconnect_timeout = connect_timeout def __init__(self, device, device_cls=None, server_name=None, instance_name=None, device_name=None, properties={}, db=None, port=0, debug=3, daemon=False): db=None, port=0, debug=3, process=False, daemon=False): """Inititalize the context to run a given device.""" # Argument tangoclass = device.__name__ Loading @@ -91,6 +95,9 @@ class DeviceTestContext(object): device_name = 'test/nodb/' + server_name.lower() if db is None: _, db = tempfile.mkstemp() # Patch bug #819 if process: os.environ['ORBscanGranularity'] = '0' # Attributes self.db = db self.host = '' Loading @@ -98,7 +105,7 @@ class DeviceTestContext(object): self.device_name = device_name self.server_name = "/".join(("dserver", server_name, instance_name)) self.device = self.server = None self.waiter = threading.Event() self.queue = multiprocessing.Queue() if process else queue.Queue() # File self.generate_db_file(server_name, instance_name, device_name, tangoclass, properties) Loading @@ -117,14 +124,14 @@ class DeviceTestContext(object): target = device.run_server args = (cmd_args,) # Thread cls = threading.Thread kwargs = {'post_init_callback': self.post_init} cls = multiprocessing.Process if process else threading.Thread self.thread = cls(target=target, args=args, kwargs=kwargs) self.thread.daemon = daemon def post_init(self): self.host, self.port = get_server_host_port() self.waiter.set() host, port = get_server_host_port() self.queue.put((host, port)) def generate_db_file(self, server, instance, device, tangoclass=None, properties={}): Loading Loading @@ -161,12 +168,14 @@ class DeviceTestContext(object): return self def connect(self): if not self.waiter.wait(self.connect_timeout): try: self.host, self.port = self.queue.get( timeout=self.connect_timeout) except queue.Empty: raise RuntimeError( 'The server did not start. ' 'Check stdout/stderr for more information.') # Get server proxy print(self.get_server_access()) self.server = DeviceProxy(self.get_server_access()) self.server.ping() # Get device proxy Loading
test/test_server.py +6 −14 Changes for test/test_server.py: 6 added lines, 14 removed lines. Original line number Diff line number Diff line Loading @@ -107,11 +107,10 @@ def test_read_write_attribute(typed_values, server_green_mode): # Test properties @pytest.fixture def device_with_property(typed_values, server_green_mode): def test_device_property(typed_values, server_green_mode): dtype, values = typed_values default = values[0] other = values[1] value = values[1] @add_metaclass(DeviceMeta) class TestDevice(Device): Loading @@ -123,19 +122,12 @@ def device_with_property(typed_values, server_green_mode): def get_prop(self): return self.prop return TestDevice, default, other def test_default_property(device_with_property): TestDevice, default, _ = device_with_property with DeviceTestContext(TestDevice) as proxy: with DeviceTestContext(TestDevice, process=True) as proxy: expected = pytest.approx(default) assert proxy.get_prop() == expected def test_device_property(device_with_property): TestDevice, _, value = device_with_property properties = {'prop': value} with DeviceTestContext(TestDevice, properties=properties) as proxy: with DeviceTestContext(TestDevice, properties={'prop': value}, process=True) as proxy: expected = pytest.approx(value) assert proxy.get_prop() == expected