Example #1
0
 def find_servers_on_network(self):
     params = ua.FindServersOnNetworkParameters()
     return self.bclient.find_servers_on_network(params)
def find_servers_on_network_test(client, logger):
    defaultAddress = "opc.tcp://localhost:4841"
    # No filters in FindServersOnNetworkRequest by default
    params = ua.FindServersOnNetworkParameters()

    # Register 1 server and retrieve it
    local_register_server2(client, logger, "TestServer1", defaultAddress,
                           allServerCapabilities, True)
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - expect 1 registered server "{}"'.format(
            "TestServer1"),
        (1 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and defaultAddress == results.Servers[0].DiscoveryUrl
         and allServerCapabilities == results.Servers[0].ServerCapabilities))

    # UnRegister 1 server and check not present anymore
    local_register_server2(client, logger, "TestServer1", defaultAddress,
                           allServerCapabilities, False)
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test('FindServersOnNetwork test - expect 0 registered server',
                    0 == len(results.Servers))

    # 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)
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - expect only 1 registered server "{}" with last record content'
        .format("TestServer1"),
        (1 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and "opc.tcp://test:1000" == results.Servers[0].DiscoveryUrl
         and allServerCapabilities == results.Servers[0].ServerCapabilities))

    # Register a second server with unknown capabilities
    local_register_server2(client, logger, "TestServer2", defaultAddress,
                           ["NA"], True)
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - expect 2 registered server 1 with all and 1 without capabilities',
        (2 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and allServerCapabilities == results.Servers[0].ServerCapabilities
         and "TestServer2" == results.Servers[1].ServerName
         and ["NA"] == results.Servers[1].ServerCapabilities))

    # Register a third server with only 'LDS' capability
    local_register_server2(client, logger, "TestServer3", defaultAddress,
                           ["LDS"], True)
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - expect 3 registered server 1 with all, 1 without capabilities and 1 with "LDS" only',
        (3 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and allServerCapabilities == results.Servers[0].ServerCapabilities
         and "TestServer2" == results.Servers[1].ServerName
         and ["NA"] == results.Servers[1].ServerCapabilities
         and "TestServer3" == results.Servers[2].ServerName
         and ["LDS"] == results.Servers[2].ServerCapabilities))

    # Filter using the capabilities: request all
    params.ServerCapabilityFilter = allServerCapabilities
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - filter with all capabilities: expect only 1 registered server',
        (1 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and allServerCapabilities == results.Servers[0].ServerCapabilities))

    # Filter using the capabilities: request 'LDS' capability only
    params.ServerCapabilityFilter = ["LDS"]
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - filter with "LDS" capability: expect 2 registered server',
        (2 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and allServerCapabilities == results.Servers[0].ServerCapabilities
         and "TestServer3" == results.Servers[1].ServerName
         and ["LDS"] == results.Servers[1].ServerCapabilities))

    # Retrieve the recordIds of the servers
    params.ServerCapabilityFilter = []
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - retrieve recordId of 3 servers in numerical order',
        (3 == len(results.Servers)
         and results.Servers[0].RecordId < results.Servers[1].RecordId
         and results.Servers[1].RecordId < results.Servers[2].RecordId))
    recordIdServer1 = results.Servers[0].RecordId
    recordIdServer2 = results.Servers[1].RecordId
    recordIdServer3 = results.Servers[2].RecordId

    # Request from recordId of 1st server
    params.StartingRecordId = recordIdServer1
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - start with recordId of 1st server: expect 3 servers',
        (3 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and "TestServer2" == results.Servers[1].ServerName
         and "TestServer3" == results.Servers[2].ServerName))

    # Request from recordId of 2nd server
    params.StartingRecordId = recordIdServer2
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - start with recordId of 2nd server: expect 2 servers',
        (2 == len(results.Servers)
         and "TestServer2" == results.Servers[0].ServerName
         and "TestServer3" == results.Servers[1].ServerName))

    # Request from recordId of 3rd server
    params.StartingRecordId = recordIdServer3
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - start with recordId of 3rd server: expect 1 server',
        (1 == len(results.Servers)
         and "TestServer3" == results.Servers[0].ServerName))

    # Request from recordId of 3rd server + 1
    params.StartingRecordId = recordIdServer3 + 1
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - start with recordId of 3rd server + 1: expect 0 servers',
        0 == len(results.Servers))

    # Limit the number of results to 1 starting with 3rd recordId
    params.StartingRecordId = recordIdServer3
    params.MaxRecordsToReturn = 1
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 1 record starting with server3 recordId: expect server 3 only',
        (1 == len(results.Servers)
         and "TestServer3" == results.Servers[0].ServerName))

    # Limit the number of results to 1 starting with 2nd recordId
    params.StartingRecordId = recordIdServer2
    params.MaxRecordsToReturn = 1
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 1 record starting with server2 recordId: expect server 2 only',
        (1 == len(results.Servers)
         and "TestServer2" == results.Servers[0].ServerName))

    # Limit the number of results to 2 starting with 2nd recordId
    params.StartingRecordId = recordIdServer2
    params.MaxRecordsToReturn = 2
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 2 record starting with server2 recordId: expect server 2 and server 3 only',
        (2 == len(results.Servers)
         and "TestServer2" == results.Servers[0].ServerName
         and "TestServer3" == results.Servers[1].ServerName))

    # Limit the number of results to 1 with recordId 0
    params.StartingRecordId = 0
    params.MaxRecordsToReturn = 1
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 1 record: expect server 1 only',
        (1 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName))

    # Limit the number of results to 2
    params.MaxRecordsToReturn = 2
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 2 records: expect server 1 and server 2 only',
        (2 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and "TestServer2" == results.Servers[1].ServerName))

    # Limit the number of results to 3
    params.MaxRecordsToReturn = 3
    results = client.uaclient.find_servers_on_network(params)
    logger.add_test(
        'FindServersOnNetwork test - limit to 3 records: expect 3 servers',
        (3 == len(results.Servers)
         and "TestServer1" == results.Servers[0].ServerName
         and "TestServer2" == results.Servers[1].ServerName
         and "TestServer3" == results.Servers[2].ServerName))

    # 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)