mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-19 11:03:07 +08:00
Improve logger performance.
This commit is contained in:
@@ -43,7 +43,7 @@ namespace MQTTnet.Benchmarks
|
||||
|
||||
var channel = new TestMqttChannel(_stream);
|
||||
|
||||
_channelAdapter = new MqttChannelAdapter(channel, serializer, new MqttNetLogger().CreateChildLogger(nameof(MqttChannelAdapter)));
|
||||
_channelAdapter = new MqttChannelAdapter(channel, serializer, new MqttNetLogger());
|
||||
}
|
||||
|
||||
[Benchmark]
|
||||
|
||||
@@ -9,15 +9,15 @@ namespace MQTTnet.Benchmarks
|
||||
[MemoryDiagnoser]
|
||||
public class LoggerBenchmark
|
||||
{
|
||||
private IMqttNetLogger _logger;
|
||||
private IMqttNetLogger _childLogger;
|
||||
private bool _useHandler;
|
||||
IMqttNetLogger _logger;
|
||||
IMqttNetScopedLogger _childLogger;
|
||||
bool _useHandler;
|
||||
|
||||
[GlobalSetup]
|
||||
public void Setup()
|
||||
{
|
||||
_logger = new MqttNetLogger();
|
||||
_childLogger = _logger.CreateChildLogger("child");
|
||||
_childLogger = _logger.CreateScopedLogger("child");
|
||||
|
||||
MqttNetGlobalLogger.LogMessagePublished += OnLogMessagePublished;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace MQTTnet.Benchmarks
|
||||
Topic = "A"
|
||||
};
|
||||
|
||||
_serializer = new MqttV311PacketFormatter();
|
||||
_serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
|
||||
_serializedPacket = _serializer.Encode(_packet);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,29 +7,9 @@ namespace MQTTnet.Tests.Mockups
|
||||
{
|
||||
public event EventHandler<MqttNetLogMessagePublishedEventArgs> LogMessagePublished;
|
||||
|
||||
public IMqttNetLogger CreateChildLogger(string source)
|
||||
{
|
||||
return new TestLogger();
|
||||
}
|
||||
|
||||
public void Verbose(string message, params object[] parameters)
|
||||
{
|
||||
}
|
||||
|
||||
public void Info(string message, params object[] parameters)
|
||||
{
|
||||
}
|
||||
|
||||
public void Warning(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
}
|
||||
|
||||
public void Error(Exception exception, string message, params object[] parameters)
|
||||
{
|
||||
}
|
||||
|
||||
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
||||
public IMqttNetScopedLogger CreateScopedLogger(string source)
|
||||
{
|
||||
return new MqttNetScopedLogger(this, source);
|
||||
}
|
||||
|
||||
public void Publish(MqttNetLogLevel logLevel, string message, object[] parameters, Exception exception)
|
||||
@@ -40,5 +20,10 @@ namespace MQTTnet.Tests.Mockups
|
||||
Message = message
|
||||
}));
|
||||
}
|
||||
|
||||
public void Publish(MqttNetLogLevel logLevel, string source, string message, object[] parameters, Exception exception)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
using MQTTnet.Adapter;
|
||||
using MQTTnet.Client.Options;
|
||||
using MQTTnet.Diagnostics;
|
||||
|
||||
namespace MQTTnet.Tests.Mockups
|
||||
{
|
||||
public class TestMqttCommunicationAdapterFactory : IMqttClientAdapterFactory
|
||||
{
|
||||
private readonly IMqttChannelAdapter _adapter;
|
||||
readonly IMqttChannelAdapter _adapter;
|
||||
|
||||
public TestMqttCommunicationAdapterFactory(IMqttChannelAdapter adapter)
|
||||
{
|
||||
_adapter = adapter;
|
||||
}
|
||||
|
||||
public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options, IMqttNetLogger logger)
|
||||
public IMqttChannelAdapter CreateClientAdapter(IMqttClientOptions options)
|
||||
{
|
||||
return _adapter;
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace MQTTnet.Tests
|
||||
//var globalLogCount = 0;
|
||||
var localLogCount = 0;
|
||||
|
||||
var logger = new MqttNetLogger(null, logId);
|
||||
var logger = new MqttNetLogger(logId);
|
||||
|
||||
// TODO: This is commented out because it is affected by other tests.
|
||||
//// we have a theoretical bug here if a concurrent test is also logging
|
||||
|
||||
@@ -10,6 +10,7 @@ namespace MQTTnet.Tests
|
||||
public void Root_Log_Messages()
|
||||
{
|
||||
var logger = new MqttNetLogger();
|
||||
var childLogger = logger.CreateScopedLogger("Source1");
|
||||
|
||||
var logMessagesCount = 0;
|
||||
|
||||
@@ -18,10 +19,10 @@ namespace MQTTnet.Tests
|
||||
logMessagesCount++;
|
||||
};
|
||||
|
||||
logger.Verbose("Verbose");
|
||||
logger.Info("Info");
|
||||
logger.Warning(null, "Warning");
|
||||
logger.Error(null, "Error");
|
||||
childLogger.Verbose("Verbose");
|
||||
childLogger.Info("Info");
|
||||
childLogger.Warning(null, "Warning");
|
||||
childLogger.Error(null, "Error");
|
||||
|
||||
Assert.AreEqual(4, logMessagesCount);
|
||||
}
|
||||
@@ -30,7 +31,7 @@ namespace MQTTnet.Tests
|
||||
public void Bubbling_Log_Messages()
|
||||
{
|
||||
var logger = new MqttNetLogger();
|
||||
var childLogger = logger.CreateChildLogger("Source1");
|
||||
var childLogger = logger.CreateScopedLogger("Source1");
|
||||
|
||||
var logMessagesCount = 0;
|
||||
|
||||
@@ -50,8 +51,8 @@ namespace MQTTnet.Tests
|
||||
[TestMethod]
|
||||
public void Set_Custom_Log_ID()
|
||||
{
|
||||
var logger = new MqttNetLogger(null, "logId");
|
||||
var childLogger = logger.CreateChildLogger("Source1");
|
||||
var logger = new MqttNetLogger("logId");
|
||||
var childLogger = logger.CreateScopedLogger("Source1");
|
||||
|
||||
logger.LogMessagePublished += (s, e) =>
|
||||
{
|
||||
|
||||
@@ -156,7 +156,7 @@ namespace MQTTnet.Tests
|
||||
[TestMethod]
|
||||
public void Serialize_LargePacket()
|
||||
{
|
||||
var serializer = new MqttV311PacketFormatter();
|
||||
var serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
|
||||
|
||||
const int payloadLength = 80000;
|
||||
|
||||
@@ -560,11 +560,11 @@ namespace MQTTnet.Tests
|
||||
IMqttPacketFormatter serializer;
|
||||
if (protocolVersion == MqttProtocolVersion.V311)
|
||||
{
|
||||
serializer = new MqttV311PacketFormatter();
|
||||
serializer = new MqttV311PacketFormatter(new MqttPacketWriter());
|
||||
}
|
||||
else if (protocolVersion == MqttProtocolVersion.V310)
|
||||
{
|
||||
serializer = new MqttV310PacketFormatter();
|
||||
serializer = new MqttV310PacketFormatter(new MqttPacketWriter());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -54,12 +54,12 @@ namespace MQTTnet.TestApp.NetCore
|
||||
}
|
||||
}
|
||||
|
||||
public static void RunClientAndServer()
|
||||
public static async Task RunClientAndServer()
|
||||
{
|
||||
try
|
||||
{
|
||||
var mqttServer = new MqttFactory().CreateMqttServer();
|
||||
mqttServer.StartAsync(new MqttServerOptions()).GetAwaiter().GetResult();
|
||||
await mqttServer.StartAsync(new MqttServerOptions()).ConfigureAwait(false);
|
||||
|
||||
var options = new MqttClientOptions
|
||||
{
|
||||
@@ -67,11 +67,12 @@ namespace MQTTnet.TestApp.NetCore
|
||||
{
|
||||
Server = "127.0.0.1"
|
||||
},
|
||||
CleanSession = true
|
||||
CleanSession = true,
|
||||
//KeepAlivePeriod = TimeSpan.FromSeconds(1)
|
||||
};
|
||||
|
||||
var client = new MqttFactory().CreateMqttClient();
|
||||
client.ConnectAsync(options).GetAwaiter().GetResult();
|
||||
await client.ConnectAsync(options).ConfigureAwait(false);
|
||||
|
||||
var message = CreateMessage();
|
||||
var stopwatch = new Stopwatch();
|
||||
@@ -83,7 +84,7 @@ namespace MQTTnet.TestApp.NetCore
|
||||
var sentMessagesCount = 0;
|
||||
while (stopwatch.ElapsedMilliseconds < 1000)
|
||||
{
|
||||
client.PublishAsync(message).GetAwaiter().GetResult();
|
||||
await client.PublishAsync(message, CancellationToken.None).ConfigureAwait(false);
|
||||
sentMessagesCount++;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@ namespace MQTTnet.TestApp.NetCore
|
||||
{
|
||||
public static void Main()
|
||||
{
|
||||
//MqttNetConsoleLogger.ForwardToConsole();
|
||||
|
||||
Console.WriteLine($"MQTTnet - TestApp.{TargetFrameworkProvider.TargetFramework}");
|
||||
Console.WriteLine("1 = Start client");
|
||||
Console.WriteLine("2 = Start server");
|
||||
@@ -40,8 +42,7 @@ namespace MQTTnet.TestApp.NetCore
|
||||
}
|
||||
else if (pressedKey.KeyChar == '3')
|
||||
{
|
||||
PerformanceTest.RunClientAndServer();
|
||||
return;
|
||||
Task.Run(PerformanceTest.RunClientAndServer);
|
||||
}
|
||||
else if (pressedKey.KeyChar == '4')
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user