using System.Linq; using System.Threading.Tasks; using BenchmarkDotNet.Attributes; using Microsoft.Extensions.Logging; using NUnit.Framework; using Opc.Ua.Client; using Opc.Ua.Client.TestFramework; using Opc.Ua.Tests; namespace Opc.Ua.Sessions.Tests { public class TraceableRequestHeaderTest : ClientTestFramework { /// /// Setup a server and client fixture. /// [OneTimeSetUp] public override Task OneTimeSetUpAsync() { return base.OneTimeSetUpCoreAsync( securityNone: false, enableClientSideTracing: true, enableServerSideTracing: true); } /// /// Tear down the Server and the Client. /// [OneTimeTearDown] public override Task OneTimeTearDownAsync() { ClientFixture?.Dispose(); return base.OneTimeTearDownAsync(); } /// /// Test setup. /// [SetUp] public override Task SetUpAsync() { return base.SetUpAsync(); } /// /// Test teardown. /// [TearDown] public override Task TearDownAsync() { return base.TearDownAsync(); } /// /// Global Setup for benchmarks. /// [GlobalSetup] public override void GlobalSetup() { ITelemetryContext telemetry = NUnitTelemetryContext.Create(); ILogger logger = telemetry.CreateLogger(); logger.LogInformation("GlobalSetup: Start Server"); OneTimeSetUpCoreAsync( enableClientSideTracing: true, enableServerSideTracing: true, disableActivityLogging: true) .GetAwaiter() .GetResult(); logger.LogInformation("GlobalSetup: Connecting"); InitializeSession( ClientFixture.ConnectAsync(ServerUrl, SecurityPolicy).GetAwaiter().GetResult()); logger.LogInformation("GlobalSetup: Ready"); } /// /// Global cleanup for benchmarks. /// [GlobalCleanup] public override void GlobalCleanup() { base.GlobalCleanup(); } [Test] [Benchmark] public async Task ReadValuesWithTracingAsync() { NamespaceTable namespaceUris = Session.NamespaceUris; var testSet = GetTestSetStatic(namespaceUris).ToList(); testSet.AddRange(GetTestSetFullSimulation(namespaceUris)); (ArrayOf values, ArrayOf errors) = await Session.ReadValuesAsync(testSet).ConfigureAwait(false); Assert.That(values.Count, Is.EqualTo(testSet.Count)); Assert.That(errors.Count, Is.EqualTo(testSet.Count)); } } }