Author image Alexander Bluhm
and 4 contributors


OPCUA::Open62541::Test::Client - run open62541 client for testing


  use OPCUA::Open62541::Test::Client;
  use Test::More tests => OPCUA::Open62541::Test::Client::planning();

  my $client = OPCUA::Open62541::Test::Client->new();


In a module test start and run an open62541 OPC UA client that connects to a server. The client is considered part of the test and will write to the TAP stream.


Return the number of tests results that running one client will create. Add this to your number of planned tests.


$client = OPCUA::Open62541::Test::Client->new(%args);

Create a new test client instance.


Hostname or IP of the server. Defaults to localhost.


Optional port number of the server.


URL of the server. Overwrites host and port arguments.


Logs to the specified file instead of "client.log" in the current directory.


Maximum time the client will run during iterate. Defaults to 10 seconds.


Returns the URL of the server. Can also set the URL by passing an argument.


Configure the client.


Connect the client to the open62541 server.

$client->iterate(\$end, $ident)

Run the iterate function of the client for up to 5 seconds. This has to be done to complete asynchronous calls. The scalar reference to $end is used to finish the iteration loop successfully when set to true in a callback. Otherwise the loop terminates with failure if the status of client run_iterate() is not good or after calling it 50 times. If $ident is set, it is used to identify a passed or failed test. This one test is not included in planning().

If $end is undef, the iteration will continue until the client has disconnected. If $end is an array or hash reference, the iteration will continue until the array or hash is empty. If $end is a code reference, the iteration will continue until the function call returns true.


Disconnect the client from the open62541 server.


OPCUA::Open62541, OPCUA::Open62541::Test::Server, OPCUA::Open62541::Test::Logger


Alexander Bluhm <>,


Copyright (c) 2020 Alexander Bluhm

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Thanks to genua GmbH, for sponsoring this work.