test(net): cover ElectrumClient's multi-segment response dispatch
DispatchLine's ArrayPool-copy path (for a JSON-RPC line spanning multiple PipeReader segments) only ran for small responses in existing tests, which stay single-segment. A 256 KB fake response forces the multi-segment branch and verifies the payload still arrives intact.
This commit is contained in:
@@ -98,6 +98,21 @@ public class ElectrumClientTests
|
|||||||
await disconnected.Task.WaitAsync(Timeout);
|
await disconnected.Task.WaitAsync(Timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task Una_risposta_molto_grande_arriva_integra()
|
||||||
|
{
|
||||||
|
// A payload far beyond the PipeReader's segment size forces the
|
||||||
|
// multi-segment dispatch path (ArrayPool copy) instead of the fast span.
|
||||||
|
var big = new string('x', 256 * 1024);
|
||||||
|
await using var server = new FakeElectrumServer();
|
||||||
|
server.Handle("blockchain.transaction.get", _ => big);
|
||||||
|
|
||||||
|
await using var client = await ElectrumClient.ConnectAsync(server.Host, server.Port, useSsl: false);
|
||||||
|
|
||||||
|
var result = await client.GetTransactionAsync("00").WaitAsync(Timeout);
|
||||||
|
Assert.Equal(big, result);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task La_cancellazione_del_token_annulla_la_richiesta_pendente()
|
public async Task La_cancellazione_del_token_annulla_la_richiesta_pendente()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user