Add shared test utility library with TestPortAllocator.GetFreePort() and SocketTestHelper.ReadUntilAsync() to deduplicate helpers across test projects. This is the foundation for splitting the monolithic test project into feature-focused test projects.
22 lines
673 B
C#
22 lines
673 B
C#
using System.Net.Sockets;
|
|
using System.Text;
|
|
|
|
namespace NATS.Server.TestUtilities;
|
|
|
|
public static class SocketTestHelper
|
|
{
|
|
public static async Task<string> ReadUntilAsync(Socket sock, string expected, int timeoutMs = 5000)
|
|
{
|
|
using var cts = new CancellationTokenSource(timeoutMs);
|
|
var sb = new StringBuilder();
|
|
var buf = new byte[4096];
|
|
while (!sb.ToString().Contains(expected, StringComparison.Ordinal))
|
|
{
|
|
var n = await sock.ReceiveAsync(buf, SocketFlags.None, cts.Token);
|
|
if (n == 0) break;
|
|
sb.Append(Encoding.ASCII.GetString(buf, 0, n));
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
}
|