diff --git a/Sphagnum.Server.Tests/Services/TestConnection.cs b/Sphagnum.Server.Tests/Services/TestConnection.cs new file mode 100644 index 0000000..3acad27 --- /dev/null +++ b/Sphagnum.Server.Tests/Services/TestConnection.cs @@ -0,0 +1,109 @@ +using Sphagnum.Common.Infrastructure.Contracts; +using System.Net; +using System.Net.Sockets; +using System.Threading.Channels; + +namespace Sphagnum.Server.Tests.Services +{ + /// + /// Класс имитирующий передачу данных через сокет. + /// + internal class TestConnection : IConnection + { + public CancellationTokenSource CancellationTokenSource { get; set; } = new CancellationTokenSource(); + public Guid ConnectionId { get; private set; } + + public bool Connected { get; set; } + + public event Action? ConnectionClosed; + + public Channel _channel = Channel.CreateUnbounded(); + public Channel _newConnectionsChannel = Channel.CreateUnbounded(); + + public TestConnection(Guid id) + { + ConnectionId = id; + } + + public TestConnection() + { + ConnectionId = Guid.NewGuid(); + } + + public void Bind(EndPoint endPoint) + { + } + + public void Close() + { + Connected = false; + CancellationTokenSource.Cancel(); + ConnectionClosed?.Invoke(ConnectionId); + } + + public Task ConnectAsync(string host, int port) + { + Connected = true; + return Task.CompletedTask; + } + + public void Dispose() + { + CancellationTokenSource.Cancel(); + ConnectionClosed?.Invoke(ConnectionId); + } + + public void Listen(int backlog) + { + + } + + public async ValueTask ReceiveAsync(Memory buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default) + { + var canRead = await _channel.Reader.WaitToReadAsync(cancellationToken); + if (canRead) + { + if (socketFlags == SocketFlags.Peek) + { + if (_channel.Reader.TryPeek(out var data)) + { + int i; + for (i = 0; i < buffer.Length && i < data.Length; i++) + { + buffer.Span[i] = data[i]; + } + return i; + } + } + else + { + var data = await _channel.Reader.ReadAsync(cancellationToken); + for (var i = 0; i < buffer.Length && i < data.Length; i++) + { + buffer.Span[i] = data[i]; + } + return data.Length; + } + } + return 0; + } + + public async ValueTask SendAsync(ReadOnlyMemory buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default) + { + var data = new byte[buffer.Length]; + buffer.CopyTo(data); + await _channel.Writer.WriteAsync(data, cancellationToken); + return data.Length; + } + + public async Task AcceptAsync() + { + return await _newConnectionsChannel.Reader.ReadAsync(); + } + + internal async Task AddInputConnection(Guid? connectionId = null) + { + await _newConnectionsChannel.Writer.WriteAsync(connectionId.HasValue ? new TestConnection(connectionId.Value) : new TestConnection()); + } + } +} diff --git a/Sphagnum.Server.Tests/Sphagnum.Server.Tests.csproj b/Sphagnum.Server.Tests/Sphagnum.Server.Tests.csproj new file mode 100644 index 0000000..82c544c --- /dev/null +++ b/Sphagnum.Server.Tests/Sphagnum.Server.Tests.csproj @@ -0,0 +1,29 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + + + + + diff --git a/Sphagnum.Server.Tests/TestConnectionTests.cs b/Sphagnum.Server.Tests/TestConnectionTests.cs new file mode 100644 index 0000000..39057f2 --- /dev/null +++ b/Sphagnum.Server.Tests/TestConnectionTests.cs @@ -0,0 +1,162 @@ +using AutoFixture; +using Sphagnum.Common.Messaging.Extensions; +using Sphagnum.Server.Tests.Services; +using System.Security.Cryptography; + +namespace Sphagnum.Server.Tests +{ + public class TestConnectionTests + { + + [Test] + public async Task IsNewConnectionCretesCorrect() + { + var connection = new TestConnection(); + var connectionTask = connection.AcceptAsync(); + var id = Guid.NewGuid(); + await Task.WhenAll(connection.AddInputConnection(id), connectionTask); + Assert.That(id, Is.EqualTo(connectionTask.Result.ConnectionId)); + } + + /// + /// , + /// peek - , . + /// + /// + [Test] + public async Task SendRecieveData_WithPeekSocketFlag_MultipleReading() + { + var connection = new TestConnection(); + var buffer1 = new byte[5]; + var recievingTask = connection.ReceiveAsync(buffer1, System.Net.Sockets.SocketFlags.Peek); + var fix = new Fixture(); + var data = fix.CreateMany(11).ToArray(); + var sendingTask = connection.SendAsync(data, System.Net.Sockets.SocketFlags.None); + await Task.WhenAll(sendingTask.AsTask(), recievingTask.AsTask()); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer1[i] == data[i]); + } + Assert.That(recievingTask.Result == 5); + var buffer2 = new byte[5]; + var count = await connection.ReceiveAsync(buffer2, System.Net.Sockets.SocketFlags.Peek); + Assert.That(recievingTask.Result == count); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer2[i] == data[i]); + } + + var buffer3 = new byte[5]; + var count3 = await connection.ReceiveAsync(buffer3, System.Net.Sockets.SocketFlags.Peek); + Assert.That(recievingTask.Result == count3); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer3[i] == data[i]); + } + } + + /// + /// , + /// peek - , . , . + /// + /// + [Test] + public async Task SendRecieveData_WithPeekSocketFlag_MultipleReadingWithWriting() + { + var connection = new TestConnection(); + var buffer1 = new byte[5]; + var recievingTask = connection.ReceiveAsync(buffer1, System.Net.Sockets.SocketFlags.Peek); + var fix = new Fixture(); + var data = fix.CreateMany(RandomNumberGenerator.GetInt32(5, 100)).ToArray(); + var sendingTask = connection.SendAsync(data, System.Net.Sockets.SocketFlags.None); + await Task.WhenAll(sendingTask.AsTask(), recievingTask.AsTask()); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer1[i] == data[i]); + } + Assert.That(recievingTask.Result == 5); + var buffer2 = new byte[5]; + var count = await connection.ReceiveAsync(buffer2, System.Net.Sockets.SocketFlags.Peek); + Assert.That(recievingTask.Result == count); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer2[i] == data[i]); + } + + for (int c = 0; c < 20; c++) + { + var data2 = fix.CreateMany(RandomNumberGenerator.GetInt32(5, 100)).ToArray(); + var sendingCount = await connection.SendAsync(data2, System.Net.Sockets.SocketFlags.None); + var buffer3 = new byte[5]; + var count3 = await connection.ReceiveAsync(buffer3, System.Net.Sockets.SocketFlags.Peek); + Assert.That(recievingTask.Result == count3); + for (int i = 0; i < 5; i++) + { + Assert.That(buffer3[i] == data[i]); + } + } + } + + /// + /// , - . + /// + /// + [Test] + public async Task SendRecieveData_WithNoneSocketFlag() + { + var fix = new Fixture(); + + var connection = new TestConnection(); + + for (int c = 0; c < 20; c++) + { + int dataSize = RandomNumberGenerator.GetInt32(5, 100); + var buffer1 = new byte[dataSize]; + var recievingTask = connection.ReceiveAsync(buffer1, System.Net.Sockets.SocketFlags.None); + var data = fix.CreateMany(dataSize).ToArray(); + + + var sendingTask = connection.SendAsync(data, System.Net.Sockets.SocketFlags.None); + + await Task.WhenAll(sendingTask.AsTask(), recievingTask.AsTask()); + for (int i = 0; i < dataSize; i++) + { + Assert.That(buffer1[i] == data[i]); + } + Assert.IsTrue(recievingTask.Result == sendingTask.Result); + } + } + + /// + /// , - c . + /// + /// + [Test] + public async Task SendRecieveData_WithExtensionMethod() + { + var fix = new Fixture(); + + var connection = new TestConnection(); + + for (int c = 0; c < 20; c++) + { + int dataSize = RandomNumberGenerator.GetInt32(5, 100); + + var recievingTask = connection.ReceiveAsync(CancellationToken.None); + var payload = fix.CreateMany(dataSize).ToArray(); + var length = BitConverter.GetBytes(dataSize); + var data = new byte[dataSize + 4]; + length.CopyTo(data, 0); + payload.CopyTo(data, 4); + + var sendingTask = connection.SendAsync(data, System.Net.Sockets.SocketFlags.None); + + await Task.WhenAll(sendingTask.AsTask(), recievingTask.AsTask()); + for (int i = 0; i < dataSize; i++) + { + Assert.That(recievingTask.Result[i] == data[i]); + } + } + } + } +} \ No newline at end of file diff --git a/development/Sphagnum.DebugClient/Controllers/TestController.cs b/development/Sphagnum.DebugClient/Controllers/TestController.cs index cbe0141..09506c3 100644 --- a/development/Sphagnum.DebugClient/Controllers/TestController.cs +++ b/development/Sphagnum.DebugClient/Controllers/TestController.cs @@ -9,7 +9,6 @@ namespace Sphagnum.DebugClient.Controllers public class TestController : ControllerBase { private readonly ClientDefault _connection; - private static readonly Task? rec; public TestController(ClientDefault connection) { @@ -17,7 +16,7 @@ namespace Sphagnum.DebugClient.Controllers } [HttpGet] - public string test() + public string Test() { return "Ok!"; } diff --git a/development/SphagnumDebug.sln b/development/SphagnumDebug.sln index 563e74e..e4d4586 100644 --- a/development/SphagnumDebug.sln +++ b/development/SphagnumDebug.sln @@ -23,6 +23,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Sphagnum.Common.UnitTests", EndProject Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{BF7E9B18-1C0F-4AA6-B4BD-F38617B72A1B}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Sphagnum.Server.Tests", "..\Sphagnum.Server.Tests\Sphagnum.Server.Tests.csproj", "{134442E7-CA62-4BE4-B7EB-63847385A98C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -57,6 +59,10 @@ Global {BF7E9B18-1C0F-4AA6-B4BD-F38617B72A1B}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF7E9B18-1C0F-4AA6-B4BD-F38617B72A1B}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF7E9B18-1C0F-4AA6-B4BD-F38617B72A1B}.Release|Any CPU.Build.0 = Release|Any CPU + {134442E7-CA62-4BE4-B7EB-63847385A98C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {134442E7-CA62-4BE4-B7EB-63847385A98C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {134442E7-CA62-4BE4-B7EB-63847385A98C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {134442E7-CA62-4BE4-B7EB-63847385A98C}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -68,6 +74,7 @@ Global {C344FDF3-3D4D-4BC6-B257-4AD907BE1BE4} = {71CDAFF8-7C3D-4915-8FAA-5C263857AD62} {77F76F27-D883-4392-90D5-8F441043F468} = {71CDAFF8-7C3D-4915-8FAA-5C263857AD62} {25865911-1F2D-4083-A99C-C65E13F05C14} = {8E76791F-BA23-44AD-BACB-E14DD5FCE750} + {134442E7-CA62-4BE4-B7EB-63847385A98C} = {8E76791F-BA23-44AD-BACB-E14DD5FCE750} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {42DA8F91-1667-49BC-971D-D83C0870393A} diff --git a/src/Sphagnum.Common/AssemblySettings.cs b/src/Sphagnum.Common/AssemblySettings.cs index 9eff541..130e54c 100644 --- a/src/Sphagnum.Common/AssemblySettings.cs +++ b/src/Sphagnum.Common/AssemblySettings.cs @@ -2,6 +2,6 @@ //Тесты [assembly: InternalsVisibleTo("Sphagnum.Common.UnitTests")] - +[assembly: InternalsVisibleTo("Sphagnum.Server.Tests")] [assembly: InternalsVisibleTo("Sphagnum.Client")] [assembly: InternalsVisibleTo("Sphagnum.Server")] \ No newline at end of file diff --git a/src/Sphagnum.Common/Infrastructure/Contracts/IConnection.cs b/src/Sphagnum.Common/Infrastructure/Contracts/IConnection.cs index 3dfb791..5ba0e2a 100644 --- a/src/Sphagnum.Common/Infrastructure/Contracts/IConnection.cs +++ b/src/Sphagnum.Common/Infrastructure/Contracts/IConnection.cs @@ -28,6 +28,6 @@ namespace Sphagnum.Common.Infrastructure.Contracts void Close(); bool Connected { get; } - public event Action ConnectionClosed; + public event Action? ConnectionClosed; } } diff --git a/src/Sphagnum.Common/Messaging/Extensions/IConntcrionExtensions.cs b/src/Sphagnum.Common/Messaging/Extensions/IConnectionExtensions.cs similarity index 85% rename from src/Sphagnum.Common/Messaging/Extensions/IConntcrionExtensions.cs rename to src/Sphagnum.Common/Messaging/Extensions/IConnectionExtensions.cs index 7501a66..4a1d058 100644 --- a/src/Sphagnum.Common/Messaging/Extensions/IConntcrionExtensions.cs +++ b/src/Sphagnum.Common/Messaging/Extensions/IConnectionExtensions.cs @@ -6,11 +6,11 @@ using System.Threading.Tasks; namespace Sphagnum.Common.Messaging.Extensions { - internal static class IConntcrionExtensions + internal static class IConnectionExtensions { public static async ValueTask ReceiveAsync(this IConnection connection, CancellationToken cancellationToken = default) { - var lengthBuffer = new byte[4]; + var lengthBuffer = new byte[5]; await connection.ReceiveAsync(lengthBuffer, SocketFlags.Peek, cancellationToken); var length = BitConverter.ToInt32(lengthBuffer, 0); var result = new byte[length]; diff --git a/src/Sphagnum.Server/Broker/Services/ConnectionsReciever.cs b/src/Sphagnum.Server/Broker/Services/ConnectionsReciever.cs index e659d05..80b74fd 100644 --- a/src/Sphagnum.Server/Broker/Services/ConnectionsReciever.cs +++ b/src/Sphagnum.Server/Broker/Services/ConnectionsReciever.cs @@ -9,7 +9,6 @@ namespace Sphagnum.Server.Broker.Services { private readonly int _port; private readonly CancellationTokenSource _cts = new(); - private Task _acceptationTask; private readonly IConnection _connection; private readonly ConnectionsManager _manager; private readonly MessagesProcessor _processor; @@ -43,7 +42,7 @@ namespace Sphagnum.Server.Broker.Services { _connection.Bind(new IPEndPoint(IPAddress.Any, _port)); _connection?.Listen(1000); //todo разобраться что делает этот параметр. - _acceptationTask = AcceptationWorker(); + var _ = AcceptationWorker(); return Task.CompletedTask; } diff --git a/src/Sphagnum.Server/Broker/Services/MessagesProcessor.cs b/src/Sphagnum.Server/Broker/Services/MessagesProcessor.cs index 7ca2c77..8a05ea1 100644 --- a/src/Sphagnum.Server/Broker/Services/MessagesProcessor.cs +++ b/src/Sphagnum.Server/Broker/Services/MessagesProcessor.cs @@ -14,7 +14,7 @@ namespace Sphagnum.Server.Broker.Services { Connections.TryRemove(id, out var conn); }; - ProcessMessages(connection); + var _ = ProcessMessages(connection); } internal static async Task ProcessMessages(IConnection connection) diff --git a/tests/Sphagnum.Common.UnitTests/MessageParserTests.cs b/tests/Sphagnum.Common.UnitTests/MessageParserTests.cs index 0c495c8..7554df3 100644 --- a/tests/Sphagnum.Common.UnitTests/MessageParserTests.cs +++ b/tests/Sphagnum.Common.UnitTests/MessageParserTests.cs @@ -18,8 +18,11 @@ namespace Sphagnum.Common.UnitTests var bytes2 = MessageParser.PackMessage(message2); var f1 = (MessageFlags)BitConverter.ToUInt16(bytes.AsSpan(5, 2)); var f2 = (MessageFlags)BitConverter.ToUInt16(bytes2.AsSpan(5, 2)); - Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); - + Assert.Multiple(() => + { + Assert.That(f1, Is.EqualTo(f2)); + Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); + }); count++; } } @@ -36,9 +39,11 @@ namespace Sphagnum.Common.UnitTests var bytes2 = MessageParser.PackMessage(message2); var f1 = (MessageFlags)BitConverter.ToUInt16(bytes.AsSpan(5, 2)); var f2 = (MessageFlags)BitConverter.ToUInt16(bytes2.AsSpan(5, 2)); - Assert.IsTrue(f1 == f2); - Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); - + Assert.Multiple(() => + { + Assert.That(f1, Is.EqualTo(f2)); + Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); + }); count++; } } @@ -56,8 +61,11 @@ namespace Sphagnum.Common.UnitTests var bytes2 = MessageParser.PackMessage(message2); var f1 = (MessageFlags)BitConverter.ToUInt16(bytes.AsSpan(5, 2)); var f2 = (MessageFlags)BitConverter.ToUInt16(bytes2.AsSpan(5, 2)); - Assert.IsTrue(f1 == f2); - Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); + Assert.Multiple(() => + { + Assert.That(f1, Is.EqualTo(f2)); + Assert.That(Comparers.MessagesComparer.Compare(message, message2), Is.True); + }); count++; } } diff --git a/tests/Sphagnum.Common.UnitTests/Old/ConnectionTests.cs b/tests/Sphagnum.Common.UnitTests/Old/ConnectionTests.cs deleted file mode 100644 index 40bd3fe..0000000 --- a/tests/Sphagnum.Common.UnitTests/Old/ConnectionTests.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Sphagnum.Common.UnitTests.Old -{ - public class ConnectionTests - { - [SetUp] - public void Setup() - { - } - - [Test] - public void Test1() - { - Assert.Pass(); - } - } - -} diff --git a/tests/Sphagnum.Common.UnitTests/Old/MessageParserTests.cs b/tests/Sphagnum.Common.UnitTests/Old/MessageParserTests.cs deleted file mode 100644 index 50e8499..0000000 --- a/tests/Sphagnum.Common.UnitTests/Old/MessageParserTests.cs +++ /dev/null @@ -1,160 +0,0 @@ -//using Sphagnum.Common.Messaging.Utils; -//using Sphagnum.Common.Old.Utils.Enums; -//using Sphagnum.Common.UnitTests.Comparers; -//using Sphagnum.Common.UnitTests.DataGenerators; - -//namespace Sphagnum.Common.UnitTests.Old -//{ -// public class MessageParserTests -// { -// [Test] -// public void PackUnpackIncomingMessage_WithPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandomIncommingMessage(); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackIncomingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); - -// count++; -// } -// } - -// [Test] -// public void PackUnpackIncomingMessage_WithEmptyPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandoIncommingMessage(true); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackIncomingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// Assert.IsTrue((MessageFlags)BitConverter.ToUInt16(bytes.AsSpan(5, 2)) == MessageFlags.HasPayload); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessageGetMessageId_WithRoutingKeyAndPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var id = Guid.NewGuid(); -// var message = MessagesGenerator.GetRandomOutgoingMessage(); -// var bytesForFlags = MessageParserold.PackMessage(message); -// var flags = (MessageFlags)BitConverter.ToUInt16(bytesForFlags.AsSpan(5, 2)); -// var bytes = MessageParserold.Pack(message, id, flags, bytesForFlags.Length); - -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var id2 = MessageParserold.GetMessageId(bytes); -// Assert.That(id, Is.EqualTo(id2)); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessageGetMessageId_WithEmptyRoutingKeyAndEmptyPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var id = Guid.NewGuid(); -// var message = MessagesGenerator.GetRandomOutgoingMessage(true, true); -// var bytesForFlags = MessageParserold.PackMessage(message); -// var flags = (MessageFlags)BitConverter.ToUInt16(bytesForFlags.AsSpan(5, 2)); -// var bytes = MessageParserold.Pack(message, id, flags, bytesForFlags.Length); - -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var id2 = MessageParserold.GetMessageId(bytes); -// Assert.That(id, Is.EqualTo(id2)); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessage_WithRoutingKeyAndPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandomOutgoingMessage(); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var bytes2 = MessageParserold.PackMessage(message2); -// var message3 = MessageParserold.UnpackOutgoingMessage(bytes2); -// Assert.That(MessagesComparer.ComparePayloads(message2, message3), Is.True); -// var bytes3 = MessageParserold.PackMessage(message2); -// var message4 = MessageParserold.UnpackOutgoingMessage(bytes3); -// Assert.That(MessagesComparer.ComparePayloads(message3, message4), Is.True); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessage_WithRoutingKeyAndEmptyPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandomOutgoingMessage(false, true); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var bytes2 = MessageParserold.PackMessage(message2); -// var message3 = MessageParserold.UnpackOutgoingMessage(bytes2); -// Assert.That(MessagesComparer.ComparePayloads(message2, message3), Is.True); -// var bytes3 = MessageParserold.PackMessage(message2); -// var message4 = MessageParserold.UnpackOutgoingMessage(bytes3); -// Assert.That(MessagesComparer.ComparePayloads(message3, message4), Is.True); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessage_WithEmptyRoutingKey() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandomOutgoingMessage(true); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var bytes2 = MessageParserold.PackMessage(message2); -// var message3 = MessageParserold.UnpackOutgoingMessage(bytes2); -// Assert.That(MessagesComparer.ComparePayloads(message2, message3), Is.True); -// var bytes3 = MessageParserold.PackMessage(message2); -// var message4 = MessageParserold.UnpackOutgoingMessage(bytes3); -// Assert.That(MessagesComparer.ComparePayloads(message3, message4), Is.True); -// count++; -// } -// } - -// [Test] -// public void PackUnpackOutgoingMessage_WithEmptyRoutingKeyAndEmptyPayload() -// { -// var count = 0; -// while (count < 100) -// { -// var message = MessagesGenerator.GetRandomOutgoingMessage(true, true); -// var bytes = MessageParserold.PackMessage(message); -// var message2 = MessageParserold.UnpackOutgoingMessage(bytes); -// Assert.That(MessagesComparer.Compare(message, message2), Is.True); -// var bytes2 = MessageParserold.PackMessage(message2); -// var message3 = MessageParserold.UnpackOutgoingMessage(bytes2); -// Assert.That(MessagesComparer.ComparePayloads(message2, message3), Is.True); -// var bytes3 = MessageParserold.PackMessage(message2); -// var message4 = MessageParserold.UnpackOutgoingMessage(bytes3); -// Assert.That(MessagesComparer.ComparePayloads(message3, message4), Is.True); -// count++; -// } -// } -// } -//} \ No newline at end of file diff --git a/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnection.cs b/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnection.cs deleted file mode 100644 index d5c8998..0000000 --- a/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnection.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Sphagnum.Common.Infrastructure.Contracts; -using System.Collections.Concurrent; -using System.Net; -using System.Net.Sockets; - -namespace Sphagnum.Common.UnitTests.Old.Services -{ - internal class TestConnection : IConnection - { - private readonly ConcurrentQueue _queue = new(); - public bool Connected => true; - - public IConnection Accept() - { - return new TestConnection(); - } - - public Task AcceptAsync() - { - return Task.FromResult(new TestConnection()); - } - - public void Bind(EndPoint endPoint) - { - } - - public void Close() - { - - } - - public Task ConnectAsync(string host, int port) - { - return Task.CompletedTask; - } - - public void Dispose() - { - - } - - public void Listen(int backlog) - { - - } - - public async ValueTask ReceiveAsync(Memory buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default) - { - var res = new byte[buffer.Length]; - await Receive(res, socketFlags, cancellationToken); - res.CopyTo(buffer); - return res.Length; - } - - public ValueTask SendAsync(ReadOnlyMemory buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default) - { - _queue.Enqueue(buffer.Span.ToArray()); - return ValueTask.FromResult(buffer.Length); - } - - private async ValueTask Receive(byte[] buffer, SocketFlags socketFlags, CancellationToken cancellationToken = default, int counter = 0) - { - if (counter > 200) - { - throw new TimeoutException(); - } - - if (socketFlags == SocketFlags.Peek ? _queue.TryPeek(out byte[]? result) : _queue.TryDequeue(out result)) - { - result.CopyTo(buffer, 0); - return result.Length; - } - else - { - await Task.Delay(100, cancellationToken); - counter++; - await Receive(buffer, socketFlags, cancellationToken, counter); - } - throw new TimeoutException(); - } - } -} diff --git a/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnectionFactory.cs b/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnectionFactory.cs deleted file mode 100644 index 1118efb..0000000 --- a/tests/Sphagnum.Common.UnitTests/Old/Services/TestConnectionFactory.cs +++ /dev/null @@ -1,18 +0,0 @@ -//using Sphagnum.Common.Old.Contracts.Login; -//using Sphagnum.Common.Old.Services; - -//namespace Sphagnum.Common.UnitTests.Old.Services -//{ -// internal class TestConnectionFactory : ConnectionFactory -// { -// internal override SphagnumConnectionOld CreateDefault(Func> messagesProcessorFactory) -// { -// return new SphagnumConnectionOld(() => new TestConnection(), messagesProcessorFactory); -// } - -// internal override Task CreateDefaultConnected(Func> messagesProcessorFactory) -// { -// return Task.FromResult(new SphagnumConnectionOld(() => new TestConnection(), messagesProcessorFactory)); -// } -// } -//} diff --git a/tests/Sphagnum.Common.UnitTests/Old/TestConnectionTests.cs b/tests/Sphagnum.Common.UnitTests/Old/TestConnectionTests.cs deleted file mode 100644 index e3f7f6c..0000000 --- a/tests/Sphagnum.Common.UnitTests/Old/TestConnectionTests.cs +++ /dev/null @@ -1,158 +0,0 @@ -//using Sphagnum.Common.UnitTests.Services; -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Text; -//using System.Threading.Tasks; - -//namespace Sphagnum.Common.UnitTests -//{ -// public class TestConnectionTests -// { -// [Test] -// public async Task SendRecieve8BytesWithBufferSize10() -// { -// var connection = new TestConnection -// { -// BufferSize = 10 -// }; -// var data = new byte[8]; -// Array.Fill(data, 1); -// _ = await connection.SendAsync(data); -// var forResult = new List(); -// for (int i = 0; i < 1; i++) -// { -// var buffer = new byte[connection.BufferSize]; -// _ = await connection.ReceiveAsync(buffer); -// for (int j = 0; j < buffer.Length; j++) -// { -// var el = buffer[j]; -// if (el == 1) -// { -// forResult.Add(el); -// } -// } -// Array.Clear(buffer); -// } - -// Assert.IsTrue(data.Length == forResult.Count); -// } - -// [Test] -// public async Task SendRecieve10BytesWithBufferSize10() -// { -// var connection = new TestConnection -// { -// BufferSize = 10 -// }; -// var data = new byte[10]; -// Array.Fill(data, 1); -// _ = await connection.SendAsync(data); -// var forResult = new List(); -// for (int i = 0; i < 1; i++) -// { -// var buffer = new byte[connection.BufferSize]; -// _ = await connection.ReceiveAsync(buffer); -// for (int j = 0; j < buffer.Length; j++) -// { -// var el = buffer[j]; -// if (el == 1) -// { -// forResult.Add(el); -// } -// } -// Array.Clear(buffer); -// } - -// Assert.IsTrue(data.Length == forResult.Count); -// } - -// [Test] -// public async Task SendRecieve11BytesWithBufferSize10() -// { -// var connection = new TestConnection -// { -// BufferSize = 10 -// }; -// var data = new byte[11]; -// Array.Fill(data, 1); -// _ = await connection.SendAsync(data); -// var forResult = new List(); -// for (int i = 0; i < 2; i++) -// { -// var buffer = new byte[connection.BufferSize]; -// _ = await connection.ReceiveAsync(buffer); -// for (int j = 0; j < buffer.Length; j++) -// { -// var el = buffer[j]; -// if (el==1) -// { -// forResult.Add(el); -// } -// } -// Array.Clear(buffer); -// } - -// Assert.IsTrue(data.Length == forResult.Count); -// } - -// [Test] -// public async Task SendRecieve31BytesWithBufferSize10() -// { -// var connection = new TestConnection -// { -// BufferSize = 10 -// }; -// var data = new byte[31]; -// Array.Fill(data, 1); -// _ = await connection.SendAsync(data); -// var forResult = new List(); -// for (int i = 0; i < 4; i++) -// { -// var buffer = new byte[connection.BufferSize]; -// _ = await connection.ReceiveAsync(buffer); -// for (int j = 0; j < buffer.Length; j++) -// { -// var el = buffer[j]; -// if (el == 1) -// { -// forResult.Add(el); -// } -// } -// Array.Clear(buffer); -// } - -// Assert.IsTrue(data.Length == forResult.Count); -// } - -// [Test] -// public async Task SendRecieve30BytesWithBufferSize10() -// { -// var connection = new TestConnection -// { -// BufferSize = 10 -// }; -// var data = new byte[30]; -// Array.Fill(data, 1); -// _ = await connection.SendAsync(data); -// var forResult = new List(); -// for (int i = 0; i < 3; i++) -// { -// var buffer = new byte[connection.BufferSize]; -// _ = await connection.ReceiveAsync(buffer); -// for (int j = 0; j < buffer.Length; j++) -// { -// var el = buffer[j]; -// if (el == 1) -// { -// forResult.Add(el); -// } -// } -// Array.Clear(buffer); -// } - -// Assert.IsTrue(data.Length == forResult.Count); -// } -// } - -//}