fix: prevent QUIC heartbeat stalls and isolate TCP retransmission counters [CI] [SKIP TESTS]
This commit is contained in:
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user