fix: prevent QUIC heartbeat stalls and isolate TCP retransmission counters [CI] [SKIP TESTS]
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/dev-image Pipeline was successful

This commit is contained in:
justme committed 2026-10-20 18:23:31 +08:00
1 parent 0066a947da
commit 0fd38b2367
14 files changed
+299 -50

No files matched your search

@@ -0,0 +1,30 @@
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);
}
}
}