From 3b086a6948d7b68df75e684e782f5cc58f9bc6e7 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 1 Mar 2023 07:13:21 +0100 Subject: [PATCH 1/2] [tests] Adjust UrlSessionTests to ignore more failure scenarios in CI. Should fix random test failures like this: MonoTouchFixtures.Foundation.UrlSessionTest [FAIL] CreateDataTaskAsync : CreateDataTask a Exception Expected: null But was: {length = 16, capacity = 16, bytes = 0x100201bb6007a9b70000000000000000}, _kCFStreamErrorCodeKey=57, _kCFStreamErrorDomainKey=1}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <5E766082-B379-491A-BCB0-EA1B36E54A8B>.<15>, _NSURLErrorRelatedURLSessionTaskErrorKey=("LocalDataTask <5E766082-B379-491A-BCB0-EA1B36E54A8B>.<15>"), NSLocalizedDescription=The network connection was lost., NSErrorFailingURLStringKey=https://www.microsoft.com/, NSErrorFailingURLKey=https://www.microsoft.com/, _kCFStreamErrorDomainKey=1} at MonoTouchFixtures.Foundation.UrlSessionTest+<>c__DisplayClass1_0.b__0 () [0x00039] in /Users/builder/azdo/_work/1/s/xamarin-macios/tests/monotouch-test/Foundation/UrlSessionTest.cs:64 > at MonoTouchFixtures.Foundation.UrlSessionTest.CreateDataTaskAsync () [0x000b7] in /Users/builder/azdo/_work/1/s/xamarin-macios/tests/monotouch-test/Foundation/UrlSessionTest.cs:71 --- tests/common/TestRuntime.cs | 18 ++++++++++++- .../Foundation/UrlSessionTest.cs | 25 ++++++++----------- 2 files changed, 28 insertions(+), 15 deletions(-) diff --git a/tests/common/TestRuntime.cs b/tests/common/TestRuntime.cs index 58a1e9ba2840..9d22704d4815 100644 --- a/tests/common/TestRuntime.cs +++ b/tests/common/TestRuntime.cs @@ -1415,9 +1415,13 @@ public static bool IsCoreCLR { } } - public static void IgnoreInCIIfBadNetwork (Exception ex) + public static void IgnoreInCIIfBadNetwork (Exception? ex) { + if (ex is null) + return; + IgnoreInCIfHttpStatusCodes (ex, HttpStatusCode.BadGateway, HttpStatusCode.GatewayTimeout, HttpStatusCode.ServiceUnavailable); + IgnoreInCIIfNetworkConnectionLost (ex); } public static void IgnoreInCIIfForbidden (Exception ex) @@ -1449,6 +1453,18 @@ public static void IgnoreInCIfHttpStatusCodes (Exception ex, params HttpStatusCo IgnoreInCI ($"Ignored due to http status code '{status}': {ex.Message}"); } + public static void IgnoreInCIIfNetworkConnectionLost (Exception ex) + { + // completed), "CreateDataTask a"); - Assert.IsNull (ex, "CreateDataTask a Exception"); + }, () => completed), ref ex, "CreateDataTask a"); completed = false; AssertTrueOrIgnoreInCI (TestRuntime.RunAsync (DateTime.Now.AddSeconds (timeout), async () => { @@ -79,8 +81,7 @@ public void CreateDataTaskAsync () } finally { completed = true; } - }, () => completed), "CreateDataTask b"); - Assert.IsNull (ex, "CreateDataTask b Exception"); + }, () => completed), ref ex, "CreateDataTask b"); /* CreateDownloadTask */ completed = false; @@ -92,8 +93,7 @@ public void CreateDataTaskAsync () } finally { completed = true; } - }, () => completed), "CreateDownloadTask a"); - Assert.IsNull (ex, "CreateDownloadTask a Exception"); + }, () => completed), ref ex, "CreateDownloadTask a"); completed = false; @@ -105,8 +105,7 @@ public void CreateDataTaskAsync () } finally { completed = true; } - }, () => completed), "CreateDownloadTask b"); - Assert.IsNull (ex, "CreateDownloadTask b Exception"); + }, () => completed), ref ex, "CreateDownloadTask b"); /* CreateUploadTask */ completed = false; @@ -120,8 +119,7 @@ public void CreateDataTaskAsync () } finally { completed = true; } - }, () => completed), "CreateUploadTask a"); - Assert.IsNull (ex, "CreateUploadTask a Exception"); + }, () => completed), ref ex, "CreateUploadTask a"); completed = false; AssertTrueOrIgnoreInCI (TestRuntime.RunAsync (DateTime.Now.AddSeconds (timeout), async () => { @@ -134,8 +132,7 @@ public void CreateDataTaskAsync () } finally { completed = true; } - }, () => completed), "CreateUploadTask b"); - Assert.IsNull (ex, "CreateUploadTask b Exception"); + }, () => completed), ref ex, "CreateUploadTask b"); } [Test] From fae8ceb98659083faf4944cb696965041650a42f Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 1 Mar 2023 14:47:05 +0100 Subject: [PATCH 2/2] Handle another case. --- tests/monotouch-test/Foundation/UrlSessionTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/monotouch-test/Foundation/UrlSessionTest.cs b/tests/monotouch-test/Foundation/UrlSessionTest.cs index b0e203d02e79..6bb21fd64ce5 100644 --- a/tests/monotouch-test/Foundation/UrlSessionTest.cs +++ b/tests/monotouch-test/Foundation/UrlSessionTest.cs @@ -167,6 +167,7 @@ public void DownloadDataAsync () } }, () => completed); + TestRuntime.IgnoreInCIIfBadNetwork (ex); Assert.IsNull (ex, "Exception"); Assert.AreEqual (-1, failed_iteration, "Failed"); }