From 33427fe0806544cffb1beb94bf59f09d3faf4611 Mon Sep 17 00:00:00 2001 From: Hao Kung Date: Wed, 19 Dec 2018 16:33:16 -0800 Subject: [PATCH] Improve cdn test reliability --- .../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 b9a65a320cb8..d9a6e57929b1 100644 --- a/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs +++ b/src/Identity/test/Identity.Test/CdnScriptTaghelperTests.cs @@ -7,6 +7,7 @@ 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 @@ public async Task IdentityUI_ScriptTags_SubresourceIntegrityCheck() Assert.NotEmpty(scriptTags); var shasum = new Dictionary(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 @@ public async Task IdentityUI_ScriptTags_SubresourceIntegrityCheck() }); } + class RetryHandler : DelegatingHandler + { + public RetryHandler(HttpMessageHandler innerHandler) : base(innerHandler) { } + protected override async Task 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;