var request = new HttpRequestMessage(HttpMethod.Post, uri) { Content = content, Version = UseVersion };
request.Headers.ExpectContinue = true;
- var sw = Stopwatch.StartNew();
+ long start = Environment.TickCount64;
(await invoker.SendAsync(TestAsync, request, default)).Dispose();
- sw.Stop();
-
- Assert.InRange(sw.Elapsed, delay - TimeSpan.FromSeconds(.5), delay * 20); // arbitrary wiggle room
+ long elapsed = content.Ticks - start;
+ Assert.True(elapsed >= delay.TotalMilliseconds);
}
}, async server =>
{
private sealed class SetTcsContent : StreamContent
{
private readonly TaskCompletionSource<bool> _tcs;
+ public long Ticks;
public SetTcsContent(Stream stream, TaskCompletionSource<bool> tcs) : base(stream) => _tcs = tcs;
protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)
{
+ Ticks = Environment.TickCount64;
_tcs.SetResult(true);
return base.SerializeToStreamAsync(stream, context);
}