From 0b169195b2db1bfe38a4c6c84983c071e8ad359d Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 16 May 2022 11:41:13 +0200 Subject: [PATCH] [tests] Adjust a few linker tests to cope with unreliable networks. (#15018) * Handle 502 and 503 errors in the TrustUsingOldPolicy and TrustUsingNewCallback tests. Fixes: [FAIL] TrustUsingOldPolicy : System.Net.WebException : The remote server returned an error: (503) Service Unavailable. [FAIL] TrustUsingNewCallback : System.Net.WebException : The remote server returned an error: (503) Service Unavailable. * Add more http and https urls to try (and don't use microsoft.com). Hopefully fixes: [FAIL] WebClient_SSL_Leak : At least one url should work This is a follow-up to #14943. --- tests/linker/ios/link all/LinkAllTest.cs | 6 ++++++ tests/linker/ios/link sdk/CryptoTest.cs | 6 ++++++ tests/monotouch-test/System.Net.Http/NetworkResources.cs | 3 +++ 3 files changed, 15 insertions(+) diff --git a/tests/linker/ios/link all/LinkAllTest.cs b/tests/linker/ios/link all/LinkAllTest.cs index 469630145289..d47c19fb6f7d 100644 --- a/tests/linker/ios/link all/LinkAllTest.cs +++ b/tests/linker/ios/link all/LinkAllTest.cs @@ -232,6 +232,12 @@ public void TrustUsingOldPolicy () // caching means it will be called at least for the first run, but it might not // be called again in subsequent requests (unless it expires) Assert.That (test_policy.CheckCount, Is.GreaterThan (0), "policy checked"); + } catch (WebException we) { + // The remote server returned an error: (502) Bad Gateway. + // The remote server returned an error: (503) Service Unavailable. + if (we.Message.Contains ("(502)") || we.Message.Contains ("(503)")) + Assert.Inconclusive (we.Message); + throw; } finally { ServicePointManager.CertificatePolicy = old; } diff --git a/tests/linker/ios/link sdk/CryptoTest.cs b/tests/linker/ios/link sdk/CryptoTest.cs index 9ac0ad4eba2f..af2e4caa96e2 100644 --- a/tests/linker/ios/link sdk/CryptoTest.cs +++ b/tests/linker/ios/link sdk/CryptoTest.cs @@ -68,6 +68,12 @@ public void TrustUsingNewCallback () // caching means it will be called at least for the first run, but it might not // be called again in subsequent requests (unless it expires) Assert.That (trust_validation_callback, Is.GreaterThan (0), "validation done"); + } catch (WebException we) { + // The remote server returned an error: (502) Bad Gateway. + // The remote server returned an error: (503) Service Unavailable. + if (we.Message.Contains ("(502)") || we.Message.Contains ("(503)")) + Assert.Inconclusive (we.Message); + throw; } finally { ServicePointManager.ServerCertificateValidationCallback = null; diff --git a/tests/monotouch-test/System.Net.Http/NetworkResources.cs b/tests/monotouch-test/System.Net.Http/NetworkResources.cs index c10b7a10cc6b..5dffef31f6c0 100644 --- a/tests/monotouch-test/System.Net.Http/NetworkResources.cs +++ b/tests/monotouch-test/System.Net.Http/NetworkResources.cs @@ -18,11 +18,13 @@ public static class NetworkResources public static readonly string [] HttpsUrls = { MicrosoftUrl, XamarinUrl, + Httpbin.Url, }; public static readonly string [] HttpUrls = { MicrosoftHttpUrl, XamarinHttpUrl, + Httpbin.HttpUrl, }; // Robots urls, useful when we want to get a small file @@ -51,6 +53,7 @@ public static class Httpbin { public static readonly string PostUrl = "https://httpbin.org/post"; public static readonly string PutUrl = "https://httpbin.org/put"; public static readonly string CookiesUrl = $"https://httpbin.org/cookies"; + public static readonly string HttpUrl = "http://httpbin.org"; public static string GetAbsoluteRedirectUrl (int count) => $"https://httpbin.org/absolute-redirect/{count}";