mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-23 22:04:43 +08:00
initial version
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.2" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="1.1.18" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="1.1.18" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using MQTTnet.Core.Adapter;
|
||||
using MQTTnet.Core.Channel;
|
||||
using MQTTnet.Core.Client;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
@@ -12,7 +13,12 @@ namespace MQTTnet.Core.Tests
|
||||
_adapter = adapter;
|
||||
}
|
||||
|
||||
public IMqttCommunicationAdapter CreateMqttCommunicationAdapter(IMqttClientOptions options)
|
||||
public IMqttCommunicationAdapter CreateClientMqttCommunicationAdapter(IMqttClientOptions options)
|
||||
{
|
||||
return _adapter;
|
||||
}
|
||||
|
||||
public IMqttCommunicationAdapter CreateServerMqttCommunicationAdapter(IMqttCommunicationChannel channel)
|
||||
{
|
||||
return _adapter;
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ using System.Threading.Tasks;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using MQTTnet.Core.Adapter;
|
||||
using MQTTnet.Core.Client;
|
||||
using MQTTnet.Core.Diagnostics;
|
||||
using MQTTnet.Core.Packets;
|
||||
using MQTTnet.Core.Protocol;
|
||||
using MQTTnet.Core.Server;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
@@ -52,7 +52,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_WillMessage()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var willMessage = new MqttApplicationMessageBuilder().WithTopic("My/last/will").WithAtMostOnceQoS().Build();
|
||||
@@ -76,7 +81,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_Unsubscribe()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -112,7 +122,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_Publish()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -135,7 +150,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_NoRetainedMessage()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -158,7 +178,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_RetainedMessage()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -181,7 +206,12 @@ namespace MQTTnet.Core.Tests
|
||||
public async Task MqttServer_ClearRetainedMessage()
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -207,7 +237,12 @@ namespace MQTTnet.Core.Tests
|
||||
var storage = new TestStorage();
|
||||
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions { Storage = storage }, new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -216,7 +251,7 @@ namespace MQTTnet.Core.Tests
|
||||
|
||||
await s.StopAsync();
|
||||
|
||||
s = new MqttServer(new MqttServerOptions { Storage = storage }, new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c2 = await serverAdapter.ConnectTestClient(s, "c2");
|
||||
@@ -244,7 +279,12 @@ namespace MQTTnet.Core.Tests
|
||||
};
|
||||
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(options, new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
@@ -290,7 +330,12 @@ namespace MQTTnet.Core.Tests
|
||||
int expectedReceivedMessagesCount)
|
||||
{
|
||||
var serverAdapter = new TestMqttServerAdapter();
|
||||
var s = new MqttServer(new MqttServerOptions(), new List<IMqttServerAdapter> { serverAdapter }, new MqttNetTrace());
|
||||
var services = new ServiceCollection()
|
||||
.AddMqttServer()
|
||||
.AddSingleton<IMqttServerAdapter>(serverAdapter)
|
||||
.BuildServiceProvider();
|
||||
|
||||
var s = services.GetRequiredService<IMqttServer>();
|
||||
await s.StartAsync();
|
||||
|
||||
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public class ServiceCollectionTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestCanConstructAllServices()
|
||||
{
|
||||
var services = new ServiceCollection()
|
||||
.AddLogging()
|
||||
.AddMqttServer()
|
||||
.AddMqttClient();
|
||||
|
||||
var serviceProvider = services
|
||||
.BuildServiceProvider();
|
||||
|
||||
foreach (var service in services)
|
||||
{
|
||||
if (service.ServiceType.IsGenericType)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
serviceProvider.GetRequiredService(service.ServiceType);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using MQTTnet.Core.Server;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
public class TestClientSessionFactory : IMqttClientSesssionFactory
|
||||
{
|
||||
public MqttClientSession CreateClientSession(string sessionId, MqttClientSessionsManager mqttClientSessionsManager)
|
||||
{
|
||||
return new MqttClientSession(sessionId, mqttClientSessionsManager, new TestLogger<MqttClientSession>(), new TestLogger<MqttClientPendingMessagesQueue>());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
public class TestLogger<T> : ILogger<T>
|
||||
{
|
||||
public IDisposable BeginScope<TState>(TState state)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public bool IsEnabled(LogLevel logLevel)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,6 @@ using System.Threading.Tasks;
|
||||
using MQTTnet.Core.Adapter;
|
||||
using MQTTnet.Core.Server;
|
||||
using MQTTnet.Core.Client;
|
||||
using MQTTnet.Core.Diagnostics;
|
||||
|
||||
namespace MQTTnet.Core.Tests
|
||||
{
|
||||
@@ -18,7 +17,7 @@ namespace MQTTnet.Core.Tests
|
||||
adapterA.Partner = adapterB;
|
||||
adapterB.Partner = adapterA;
|
||||
|
||||
var client = new MqttClient(new MqttCommunicationAdapterFactory(adapterA), new MqttNetTrace());
|
||||
var client = new MqttClient(new MqttCommunicationAdapterFactory(adapterA), new TestLogger<MqttClient>(), new MqttPacketDispatcher(new TestLogger<MqttPacketDispatcher>()));
|
||||
var connected = WaitForClientToConnect(server, clientId);
|
||||
|
||||
FireClientAcceptedEvent(adapterB);
|
||||
|
||||
Reference in New Issue
Block a user