Files
MoShiro/backend/shared/tests/MoShiro.Protocol.Tests/TcpWireTests.cs
T
justme 0fd38b2367
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful
fix: prevent QUIC heartbeat stalls and isolate TCP retransmission counters [CI] [SKIP TESTS]
2026-10-20 18:23:31 +08:00

31 lines
1003 B
C#

namespace MoShiro.Protocol.Tests;
public sealed class TcpWireTests
{
[Theory]
[InlineData(0)]
[InlineData(64)]
[InlineData(16384)]
public async Task Message_UsesOneWriteForPrefixAndBody_AndPreservesFraming(int size)
{
using var stream = new CountingStream();
byte[] body = Enumerable.Range(0, size).Select(i => (byte)i).ToArray();
await TcpWire.WriteMessageAsync(stream, body, default);
Assert.Equal(1, stream.Writes);
stream.Position = 0;
Assert.Equal(body, await TcpWire.ReadMessageAsync(stream, default));
Assert.Null(await TcpWire.ReadMessageAsync(stream, default));
}
private sealed class CountingStream : MemoryStream
{
public int Writes { get; private set; }
public override ValueTask WriteAsync(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken = default)
{
Writes++;
return base.WriteAsync(buffer, cancellationToken);
}
}
}