mirror of
https://github.com/Readarr/Readarr
synced 2026-05-08 12:42:51 +02:00
Update HttpClientFixture.cs
This commit is contained in:
parent
46b1c933a3
commit
d1565b44e4
1 changed files with 50 additions and 0 deletions
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using FluentAssertions;
|
using FluentAssertions;
|
||||||
|
|
@ -25,8 +26,57 @@ public class HttpClientFixture<TDispatcher> : TestBase<HttpClient>
|
||||||
where TDispatcher : IHttpDispatcher
|
where TDispatcher : IHttpDispatcher
|
||||||
{
|
{
|
||||||
private static string[] _httpBinHosts = new[] { "eu.httpbin.org", "httpbin.org" };
|
private static string[] _httpBinHosts = new[] { "eu.httpbin.org", "httpbin.org" };
|
||||||
|
private int _httpBinSleep;
|
||||||
private static int _httpBinRandom;
|
private static int _httpBinRandom;
|
||||||
private string _httpBinHost;
|
private string _httpBinHost;
|
||||||
|
private string _httpBinHost2;
|
||||||
|
|
||||||
|
[OneTimeSetUp]
|
||||||
|
public void FixtureSetUp()
|
||||||
|
{
|
||||||
|
var candidates = new[] { "httpbin.servarr.com", "eu.httpbin.org", /*"httpbin.org",*/ "www.httpbin.org" };
|
||||||
|
|
||||||
|
// httpbin.org is broken right now, occassionally redirecting to https if it's unavailable.
|
||||||
|
_httpBinHosts = candidates.Where(IsTestSiteAvailable).ToArray();
|
||||||
|
|
||||||
|
TestLogger.Info($"{candidates.Length} TestSites available.");
|
||||||
|
|
||||||
|
_httpBinSleep = _httpBinHosts.Count() < 2 ? 100 : 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsTestSiteAvailable(string site)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var req = WebRequest.Create($"http://{site}/get") as HttpWebRequest;
|
||||||
|
var res = req.GetResponse() as HttpWebResponse;
|
||||||
|
if (res.StatusCode != HttpStatusCode.OK)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
req = WebRequest.Create($"http://{site}/status/429") as HttpWebRequest;
|
||||||
|
res = req.GetResponse() as HttpWebResponse;
|
||||||
|
}
|
||||||
|
catch (WebException ex)
|
||||||
|
{
|
||||||
|
res = ex.Response as HttpWebResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (res == null || res.StatusCode != (HttpStatusCode)429)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUp()
|
public void SetUp()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue