From efe9b95b14442f336519cf31c8649b0a658292ae Mon Sep 17 00:00:00 2001
From: Hao Kung <HaoK@users.noreply.github.com>
Date: Thu, 20 Dec 2018 12:21:30 -0800
Subject: [PATCH] Improve cdn test reliability (#6044)

---
 .../Identity.Test/CdnScriptTaghelperTests.cs  | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs b/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs
index b9a65a320cb..d9a6e57929b 100644
--- a/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs
+++ b/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs
@@ -7,6 +7,7 @@ using System.IO;
 using System.Net.Http;
 using System.Security.Cryptography;
 using System.Text.RegularExpressions;
+using System.Threading;
 using System.Threading.Tasks;
 using Xunit;
 using Xunit.Abstractions;
@@ -38,7 +39,7 @@ namespace Microsoft.AspNetCore.Identity.Test
             Assert.NotEmpty(scriptTags);
 
             var shasum = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
-            using (var client = new HttpClient())
+            using (var client = new HttpClient(new RetryHandler(new HttpClientHandler() { })))
             {
                 foreach (var script in scriptTags)
                 {
@@ -62,6 +63,25 @@ namespace Microsoft.AspNetCore.Identity.Test
             });
         }
 
+        class RetryHandler : DelegatingHandler
+        {
+            public RetryHandler(HttpMessageHandler innerHandler) : base(innerHandler) { }
+            protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
+            {
+                HttpResponseMessage result = null;
+                for (var i = 0; i < 10; i++)
+                {
+                    result = await base.SendAsync(request, cancellationToken);
+                    if (result.IsSuccessStatusCode)
+                    {
+                        return result;
+                    }
+                    await Task.Delay(1000);
+                }
+                return result;
+            }
+        }
+
         private struct ScriptTag
         {
             public string Src;
-- 
GitLab