From 901c54de2fb4994f9f838d33f6335b4ff3450ac8 Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Wed, 3 Nov 2021 12:41:21 +0100 Subject: [PATCH] L2SS-392: Testing against an actual server is integration, not unit test --- .../test_opcua_client_against_server.py | 163 ------------------ 1 file changed, 163 deletions(-) delete mode 100644 tangostationcontrol/tangostationcontrol/test/clients/test_opcua_client_against_server.py diff --git a/tangostationcontrol/tangostationcontrol/test/clients/test_opcua_client_against_server.py b/tangostationcontrol/tangostationcontrol/test/clients/test_opcua_client_against_server.py deleted file mode 100644 index 15bb6fdb1..000000000 --- a/tangostationcontrol/tangostationcontrol/test/clients/test_opcua_client_against_server.py +++ /dev/null @@ -1,163 +0,0 @@ -import asyncua -import numpy - -from tangostationcontrol.clients.opcua_client import OPCUAConnection - -from tangostationcontrol.test import base - - -class TestClientServer(base.AsyncTestCase): - """ Test the OPCUAConnection against an OPCUA server we instantiate ourselves. """ - - async def setup_server(self, port): - """ Setup a server on a dedicated port for the test, to allow - the tests to be run in parallel. """ - - # where we will run the server - self.endpoint = f"opc.tcp://127.0.0.1:{port}" - self.namespace = "http://example.com" - - # setup an OPC-UA server - self.server = asyncua.Server() - await self.server.init() - self.server.set_endpoint(self.endpoint) - self.server.set_server_name(f"Test server spawned by {__file__}") - - # create an interface - idx = await self.server.register_namespace(self.namespace) - obj = self.server.get_objects_node() - - # add double_R/double_RW - double_R = await obj.add_variable(idx, "double_R", 42.0) - double_RW = await obj.add_variable(idx, "double_RW", 42.0) - await double_RW.set_writable() - - # add methods - @asyncua.uamethod - def multiply(parent, x, y): - self.assertEqual(float, type(x)) - self.assertEqual(int, type(y)) - return x * y - - @asyncua.uamethod - def procedure(parent): - return - - @asyncua.uamethod - def throws(parent): - raise Exception("Expected test exception") - - multiply_method = await obj.add_method(idx, "multiply", multiply, [asyncua.ua.VariantType.Double, asyncua.ua.VariantType.Int64], [asyncua.ua.VariantType.Double]) - procedure_method = await obj.add_method(idx, "procedure", procedure, [], []) - throws_method = await obj.add_method(idx, "throws", throws, [], []) - - # run the server - await self.server.start() - - async def setUp(self): - self.server = None - - async def tearDown(self): - if self.server: - await self.server.stop() - - def fault_func(self): - raise Exception("FAULT") - - async def test_opcua_connection(self): - await self.setup_server(14840) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - finally: - await test_client.stop() - - async def test_read_attribute(self): - await self.setup_server(14841) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - # setup the attribute - class attribute(object): - dim_x = 1 - dim_y = 0 - numpy_type = numpy.double - - prot_attr = await test_client.setup_protocol_attribute(["double_R"], attribute()) - - # read it from the server - self.assertEqual(42.0, await prot_attr.read_function()) - finally: - await test_client.stop() - - async def test_write_attribute(self): - await self.setup_server(14842) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - # setup the attribute - class attribute(object): - dim_x = 1 - dim_y = 0 - numpy_type = numpy.double - - prot_attr = await test_client.setup_protocol_attribute(["double_RW"], attribute()) - - # write it to the server and read it back to verify - await prot_attr.write_function(123.0) - - self.assertEqual(123.0, await prot_attr.read_function()) - finally: - await test_client.stop() - - async def test_method_without_args(self): - await self.setup_server(14843) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - self.assertEqual(None, await test_client._call_method(["procedure"])) - finally: - await test_client.stop() - - async def test_method_with_args(self): - await self.setup_server(14843) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - self.assertEqual(21.0, await test_client._call_method(["multiply"], numpy.double(3.0), numpy.int64(7))) - finally: - await test_client.stop() - - async def test_method_with_wrong_arg_types(self): - await self.setup_server(14844) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - with self.assertRaises(Exception): - # correct signature is multiply(double,int64) - _ = await test_client._call_method(["multiply"], numpy.double(3.0), numpy.double(7)) - finally: - await test_client.stop() - - async def test_errorring_method(self): - await self.setup_server(14845) - - test_client = OPCUAConnection(self.endpoint, self.namespace, 5, self.fault_func, self.loop) - try: - await test_client.start() - - with self.assertRaises(Exception): - await test_client._call_method(["throws"]) - finally: - await test_client.stop() -- GitLab