Skip to content

Commit 9177b6a

Browse files
committed
Fix Unit Tests
1 parent f0ea5c9 commit 9177b6a

File tree

5 files changed

+60
-52
lines changed

5 files changed

+60
-52
lines changed

Source/MQTTnet.AspNetCore.Tests/MQTTnet.AspNetCore.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
13-
<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
14-
<PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
13+
<PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
14+
<PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
1515
</ItemGroup>
1616

1717
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp3.1' ">

Source/MQTTnet.Tests/MQTTnet.Tests.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
16-
<PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
17-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
15+
<PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
16+
<PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
17+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
1818
</ItemGroup>
1919

2020
<ItemGroup>

Source/MQTTnet.Tests/MqttTcpChannel_Tests.cs

+50-44
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5-
using Microsoft.VisualStudio.TestTools.UnitTesting;
6-
using MQTTnet.Implementations;
75
using System;
86
using System.Net;
97
using System.Net.Sockets;
108
using System.Threading;
119
using System.Threading.Tasks;
10+
using Microsoft.VisualStudio.TestTools.UnitTesting;
11+
using MQTTnet.Implementations;
1212

1313
namespace MQTTnet.Tests
1414
{
@@ -18,62 +18,68 @@ public class MqttTcpChannel_Tests
1818
[TestMethod]
1919
public async Task Dispose_Channel_While_Used()
2020
{
21-
var ct = new CancellationTokenSource();
22-
var serverSocket = new CrossPlatformSocket(AddressFamily.InterNetwork, ProtocolType.Tcp);
23-
24-
try
21+
using (var ct = new CancellationTokenSource())
2522
{
26-
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 50001));
27-
serverSocket.Listen(0);
23+
using (var serverSocket = new CrossPlatformSocket(AddressFamily.InterNetwork, ProtocolType.Tcp))
24+
{
25+
try
26+
{
27+
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 50001));
28+
serverSocket.Listen(0);
2829

2930
#pragma warning disable 4014
30-
Task.Run(async () =>
31+
Task.Run(
32+
async () =>
3133
#pragma warning restore 4014
32-
{
33-
while (!ct.IsCancellationRequested)
34-
{
35-
var client = await serverSocket.AcceptAsync();
36-
var data = new byte[] { 128 };
37-
await client.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
38-
}
39-
}, ct.Token);
34+
{
35+
while (!ct.IsCancellationRequested)
36+
{
37+
var client = await serverSocket.AcceptAsync(ct.Token);
38+
var data = new byte[] { 128 };
39+
await client.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
40+
}
41+
},
42+
ct.Token);
4043

41-
var clientSocket = new CrossPlatformSocket(AddressFamily.InterNetwork, ProtocolType.Tcp);
42-
await clientSocket.ConnectAsync("localhost", 50001, CancellationToken.None);
44+
var clientSocket = new CrossPlatformSocket(AddressFamily.InterNetwork, ProtocolType.Tcp);
45+
await clientSocket.ConnectAsync("localhost", 50001, CancellationToken.None);
4346

44-
var tcpChannel = new MqttTcpChannel(clientSocket.GetStream(), "test", null);
47+
var tcpChannel = new MqttTcpChannel(clientSocket.GetStream(), "test", null);
4548

46-
await Task.Delay(100, ct.Token);
49+
await Task.Delay(100, ct.Token);
4750

48-
var buffer = new byte[1];
49-
await tcpChannel.ReadAsync(buffer, 0, 1, ct.Token);
51+
var buffer = new byte[1];
52+
await tcpChannel.ReadAsync(buffer, 0, 1, ct.Token);
5053

51-
Assert.AreEqual(128, buffer[0]);
54+
Assert.AreEqual(128, buffer[0]);
5255

53-
// This block should fail after dispose.
56+
// This block should fail after dispose.
5457
#pragma warning disable 4014
55-
Task.Run(() =>
58+
Task.Run(
59+
() =>
5660
#pragma warning restore 4014
57-
{
58-
Task.Delay(200, ct.Token);
59-
tcpChannel.Dispose();
60-
}, ct.Token);
61+
{
62+
Task.Delay(200, ct.Token);
63+
tcpChannel.Dispose();
64+
},
65+
ct.Token);
6166

62-
try
63-
{
64-
await tcpChannel.ReadAsync(buffer, 0, 1, CancellationToken.None);
65-
}
66-
catch (Exception exception)
67-
{
68-
Assert.IsInstanceOfType(exception, typeof(SocketException));
69-
Assert.AreEqual(SocketError.OperationAborted, ((SocketException)exception).SocketErrorCode);
67+
try
68+
{
69+
await tcpChannel.ReadAsync(buffer, 0, 1, CancellationToken.None);
70+
}
71+
catch (Exception exception)
72+
{
73+
Assert.IsInstanceOfType(exception, typeof(SocketException));
74+
Assert.AreEqual(SocketError.OperationAborted, ((SocketException)exception).SocketErrorCode);
75+
}
76+
}
77+
finally
78+
{
79+
ct.Cancel(false);
80+
}
7081
}
7182
}
72-
finally
73-
{
74-
ct.Cancel(false);
75-
serverSocket.Dispose();
76-
}
7783
}
7884
}
79-
}
85+
}

Source/MQTTnet/Implementations/CrossPlatformSocket.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,14 @@ public int SendTimeout
142142
set => _socket.SendTimeout = value;
143143
}
144144

145-
public async Task<CrossPlatformSocket> AcceptAsync()
145+
public async Task<CrossPlatformSocket> AcceptAsync(CancellationToken cancellationToken)
146146
{
147147
try
148148
{
149149
#if NET452 || NET461
150150
var clientSocket = await Task.Factory.FromAsync(_socket.BeginAccept, _socket.EndAccept, null).ConfigureAwait(false);
151+
#elif NET7_0_OR_GREATER
152+
var clientSocket = await _socket.AcceptAsync(cancellationToken).ConfigureAwait(false);
151153
#else
152154
var clientSocket = await _socket.AcceptAsync().ConfigureAwait(false);
153155
#endif

Source/MQTTnet/Implementations/MqttTcpServerListener.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ async Task AcceptClientConnectionsAsync(CancellationToken cancellationToken)
141141
{
142142
try
143143
{
144-
var clientSocket = await _socket.AcceptAsync().ConfigureAwait(false);
144+
var clientSocket = await _socket.AcceptAsync(cancellationToken).ConfigureAwait(false);
145145
if (clientSocket == null)
146146
{
147147
continue;

0 commit comments

Comments
 (0)