Skip to content

Commit 17f77ce

Browse files
committed
test: 更新单元测试
1 parent 9d82046 commit 17f77ce

File tree

1 file changed

+62
-2
lines changed

1 file changed

+62
-2
lines changed

test/UnitTest/Services/TcpSocketFactoryTest.cs

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public async Task CloseByRemote_Ok()
177177
[Fact]
178178
public async Task FixLengthDataPackageHandler_Ok()
179179
{
180-
var port = 8888;
180+
var port = 8884;
181181
var server = StartTcpServer(port, MockSplitPackageAsync);
182182
var client = CreateClient();
183183

@@ -219,7 +219,7 @@ public async Task FixLengthDataPackageHandler_Ok()
219219
[Fact]
220220
public async Task FixLengthDataPackageHandler_Sticky()
221221
{
222-
var port = 8899;
222+
var port = 8885;
223223
var server = StartTcpServer(port, MockStickyPackageAsync);
224224
var client = CreateClient();
225225

@@ -263,6 +263,45 @@ public async Task FixLengthDataPackageHandler_Sticky()
263263
StopTcpServer(server);
264264
}
265265

266+
[Fact]
267+
public async Task DelimiterDataPackageHandler_Ok()
268+
{
269+
var port = 8886;
270+
var server = StartTcpServer(port, MockDelimiterPackageAsync);
271+
var client = CreateClient();
272+
273+
// 连接 TCP Server
274+
var connect = await client.ConnectAsync("localhost", port);
275+
276+
var tcs = new TaskCompletionSource();
277+
Memory<byte> receivedBuffer = Memory<byte>.Empty;
278+
279+
// 增加数据库处理适配器
280+
client.SetDataHandler(new DelimiterDataPackageHandler(new byte[] { 0x13, 0x10 })
281+
{
282+
ReceivedCallBack = buffer =>
283+
{
284+
receivedBuffer = buffer;
285+
tcs.SetResult();
286+
return Task.CompletedTask;
287+
}
288+
});
289+
290+
// 发送数据
291+
var data = new Memory<byte>([1, 2, 3, 4, 5]);
292+
await client.SendAsync(data);
293+
294+
// 等待接收数据处理完成
295+
await tcs.Task;
296+
297+
// 验证接收到的数据
298+
Assert.Equal(receivedBuffer.ToArray(), [1, 2, 3, 4, 5, 0x13, 0x10]);
299+
300+
// 关闭连接
301+
client.Close();
302+
StopTcpServer(server);
303+
}
304+
266305
private static TcpListener StartTcpServer(int port, Func<TcpClient, Task> handler)
267306
{
268307
var server = new TcpListener(IPAddress.Loopback, port);
@@ -280,6 +319,27 @@ private static async Task AcceptClientsAsync(TcpListener server, Func<TcpClient,
280319
}
281320
}
282321

322+
private static async Task MockDelimiterPackageAsync(TcpClient client)
323+
{
324+
using var stream = client.GetStream();
325+
while (true)
326+
{
327+
var buffer = new byte[10240];
328+
var len = await stream.ReadAsync(buffer);
329+
if (len == 0)
330+
{
331+
break;
332+
}
333+
334+
// 回写数据到客户端
335+
var block = new Memory<byte>(buffer, 0, len);
336+
await stream.WriteAsync(block, CancellationToken.None);
337+
338+
// 模拟拆包发送第二段数据
339+
await stream.WriteAsync(new byte[] { 0x13, 0x10, 0x5, 0x6 }, CancellationToken.None);
340+
}
341+
}
342+
283343
private static async Task MockSplitPackageAsync(TcpClient client)
284344
{
285345
using var stream = client.GetStream();

0 commit comments

Comments
 (0)