Пример #1
0
 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)