/////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018  Ericsson AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
/////////////////////////////////////////////////////////////////////////////////////
// Contributors:
// Akos Makovics
//
//  File:         UpcUa.cfg
//  Rev:          <RnXnn>
//  Prodnr:       CNL113861
/////////////////////////////////////////////////////////////////////////////////////

// Module parameters
[MODULE_PARAMETERS]

// Local TCP connection address
LocalTCPConnection := { "127.0.0.1", 3000 };

// Remote TCP connection address (OPC UA server)
RemoteTCPConnection := { "127.0.0.1", 4334 };

// Logging settings
[LOGGING]
LogFile := "logs/%e.%h-%r.%s"
FileMask := DEBUG | MATCHING|ACTION|DEFAULTOP|ERROR|EXECUTOR|FUNCTION|PARALLEL|PORTEVENT|STATISTICS|TESTCASE|TIMEROP|USER|VERDICTOP|WARNING
ConsoleMask := ERROR | WARNING | TESTCASE | STATISTICS | PORTEVENT
LogSourceInfo := No
AppendFile := No
TimeStampFormat := DateTime
LogEventTypes := Yes
SourceInfoFormat := None
LogEntityName := Yes

[EXECUTE]
OpcUa_Test_Binary.control
OpcUa_Test_JSON_Reversible.control
OpcUa_Test_JSON_Non_Reversible.control