Added third httpbin site.

pull/2567/merge
Taloth Saldono 7 years ago
parent 7241ca4ae9
commit 8b8bfb9bf0

@ -29,22 +29,40 @@ namespace NzbDrone.Common.Test.Http
private int _httpBinSleep; private int _httpBinSleep;
private int _httpBinRandom; private int _httpBinRandom;
private string _httpBinHost; private string _httpBinHost;
private string _httpBinHost2;
[OneTimeSetUp] [OneTimeSetUp]
public void FixtureSetUp() public void FixtureSetUp()
{ {
var candidates = new[] { "eu.httpbin.org", "httpbin.org" }; var candidates = new[] { "eu.httpbin.org", "httpbin.org", "www.httpbin.org" };
_httpBinHosts = candidates.Where(IsTestSiteAvailable).ToArray(); _httpBinHosts = candidates.Where(IsTestSiteAvailable).ToArray();
_httpBinSleep = _httpBinHosts.Count() < 2 ? 100 : 50; TestLogger.Info($"{candidates.Length} TestSites available.");
_httpBinSleep = _httpBinHosts.Count() < 2 ? 100 : 10;
} }
private bool IsTestSiteAvailable(string site) private bool IsTestSiteAvailable(string site)
{ {
try try
{ {
var result = new System.Net.WebClient().DownloadString($"http://{site}/get"); var req = WebRequest.Create($"http://{site}/get") as HttpWebRequest;
return result.StartsWith("{"); 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 catch
{ {
@ -57,7 +75,7 @@ namespace NzbDrone.Common.Test.Http
{ {
if (!_httpBinHosts.Any()) if (!_httpBinHosts.Any())
{ {
Assert.Inconclusive("No TestSite available"); Assert.Inconclusive("No TestSites available");
} }
Mocker.GetMock<IPlatformInfo>().Setup(c => c.Version).Returns(new Version("1.0.0")); Mocker.GetMock<IPlatformInfo>().Setup(c => c.Version).Returns(new Version("1.0.0"));
@ -79,6 +97,7 @@ namespace NzbDrone.Common.Test.Http
// Roundrobin over the two servers, to reduce the chance of hitting the ratelimiter. // Roundrobin over the two servers, to reduce the chance of hitting the ratelimiter.
_httpBinHost = _httpBinHosts[_httpBinRandom++ % _httpBinHosts.Length]; _httpBinHost = _httpBinHosts[_httpBinRandom++ % _httpBinHosts.Length];
_httpBinHost2 = _httpBinHosts[_httpBinRandom % _httpBinHosts.Length];
} }
[TearDown] [TearDown]
@ -280,12 +299,12 @@ namespace NzbDrone.Common.Test.Http
public void GivenOldCookie() public void GivenOldCookie()
{ {
if (!_httpBinHosts.Contains("httpbin.org") || !_httpBinHosts.Contains("eu.httpbin.org")) if (_httpBinHost == _httpBinHost2)
{ {
Assert.Inconclusive("Need both httpbin.org and eu.httpbin.org to run this test."); Assert.Inconclusive("Need both httpbin.org and eu.httpbin.org to run this test.");
} }
var oldRequest = new HttpRequest("http://eu.httpbin.org/get"); var oldRequest = new HttpRequest($"http://{_httpBinHost2}/get");
oldRequest.Cookies["my"] = "cookie"; oldRequest.Cookies["my"] = "cookie";
var oldClient = new HttpClient(new IHttpRequestInterceptor[0], Mocker.Resolve<ICacheManager>(), Mocker.Resolve<IRateLimitService>(), Mocker.Resolve<IHttpDispatcher>(), Mocker.GetMock<IUserAgentBuilder>().Object, Mocker.Resolve<Logger>()); var oldClient = new HttpClient(new IHttpRequestInterceptor[0], Mocker.Resolve<ICacheManager>(), Mocker.Resolve<IRateLimitService>(), Mocker.Resolve<IHttpDispatcher>(), Mocker.GetMock<IUserAgentBuilder>().Object, Mocker.Resolve<Logger>());
@ -302,7 +321,7 @@ namespace NzbDrone.Common.Test.Http
{ {
GivenOldCookie(); GivenOldCookie();
var request = new HttpRequest("http://eu.httpbin.org/get"); var request = new HttpRequest($"http://{_httpBinHost2}/get");
var response = Subject.Get<HttpBinResource>(request); var response = Subject.Get<HttpBinResource>(request);
@ -318,7 +337,7 @@ namespace NzbDrone.Common.Test.Http
{ {
GivenOldCookie(); GivenOldCookie();
var request = new HttpRequest("http://httpbin.org/get"); var request = new HttpRequest($"http://{_httpBinHost}/get");
var response = Subject.Get<HttpBinResource>(request); var response = Subject.Get<HttpBinResource>(request);

Loading…
Cancel
Save