def find_servers(self, uris=None): """ send a FindServer request to the server. The answer should be a list of servers the server knows about A list of uris can be provided, only server having matching uris will be returned """ if uris is None: uris = [] params = ua.FindServersParameters() params.EndpointUrl = self.server_url.geturl() params.ServerUris = uris return self.uaclient.find_servers(params)
def find_servers_test(client, logger): # Note: LocaleIds are not tested here because it is already done in UACTT defaultAddress = "opc.tcp://localhost:4841" # No filters in FindServers by default params = ua.FindServersParameters() # Register 0 servers: retrieve server-Self Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect 0 registered server but self returned "{}"'. format("urn:S2OPC:localhost"), (1 == len(Servers) and check_self_in_find_servers_response(defaultAddress, Servers[0]))) # Register 1 server and retrieve it local_register_server2(client, logger, "TestServer1", defaultAddress, allServerCapabilities, True) Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect 1 registered server "{}" + self'.format( "urn:S2OPC:TestServer1"), (2 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and defaultAddress == Servers[0].DiscoveryUrls[0] and check_self_in_find_servers_response(defaultAddress, Servers[1]))) # UnRegister 1 server and check not present anymore local_register_server2(client, logger, "TestServer1", defaultAddress, allServerCapabilities, False) Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect 0 registered server + self', 1 == len(Servers) and check_self_in_find_servers_response(defaultAddress, Servers[0])) # Register 2 times same server name: expect only last record to be returned local_register_server2(client, logger, "TestServer1", defaultAddress, allServerCapabilities, True) local_register_server2(client, logger, "TestServer1", "opc.tcp://test:1000", allServerCapabilities, True) Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect only 1 registered server "{}" with last record content + self' .format("urn:S2OPC:TestServer1"), (2 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and "opc.tcp://test:1000" == Servers[0].DiscoveryUrls[0] and check_self_in_find_servers_response(defaultAddress, Servers[1]))) # Register a second server with unknown capabilities local_register_server2(client, logger, "TestServer2", defaultAddress, ["NA"], True) Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect 2 registered server 1 with all and 1 without capabilities', (3 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and "urn:S2OPC:TestServer2" == Servers[1].ApplicationUri and check_self_in_find_servers_response(defaultAddress, Servers[2]))) # Register a third server with only 'LDS' capability local_register_server2(client, logger, "TestServer3", defaultAddress, ["LDS"], True) Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - expect 3 registered server 1 with all, 1 without capabilities and 1 with "LDS" only', (4 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and "urn:S2OPC:TestServer2" == Servers[1].ApplicationUri and "urn:S2OPC:TestServer3" == Servers[2].ApplicationUri and check_self_in_find_servers_response(defaultAddress, Servers[3]))) # Filter using the serverUri: request server 1 params.ServerUris = ["urn:S2OPC:TestServer1"] Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - filter with serverUri of server 1: expect only 1 registered server', (1 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri)) # Filter using the serverUri: request server 3 params.ServerUris = ["urn:S2OPC:TestServer3"] Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - filter with serverUri of server 3: expect only 3 registered server', (1 == len(Servers) and "urn:S2OPC:TestServer3" == Servers[0].ApplicationUri)) # Filter using the serverUri: request server 1 & 2 params.ServerUris = ["urn:S2OPC:TestServer1", "urn:S2OPC:TestServer2"] Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - filter with serverUri of server 1 & 2: expect 2 registered server', (2 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and "urn:S2OPC:TestServer2" == Servers[1].ApplicationUri)) # Filter using the serverUri: request server 1 & 2 & 3 params.ServerUris = [ "urn:S2OPC:TestServer1", "urn:S2OPC:TestServer2", "urn:S2OPC:TestServer3" ] Servers = client.uaclient.find_servers(params) logger.add_test( 'FindServers test - filter with serverUri of server 1 & 2 & 3: expect 3 registered server', (3 == len(Servers) and "urn:S2OPC:TestServer1" == Servers[0].ApplicationUri and "urn:S2OPC:TestServer2" == Servers[1].ApplicationUri and "urn:S2OPC:TestServer3" == Servers[2].ApplicationUri)) # UnRegister all servers local_register_server2(client, logger, "TestServer1", defaultAddress, [], False) local_register_server2(client, logger, "TestServer2", defaultAddress, [], False) local_register_server2(client, logger, "TestServer3", defaultAddress, [], False)