/////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2000-2019 Ericsson Telecom AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.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