Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 536956f

Browse files
safernstephentoub
authored andcommitted
Enable System.Net.Requests.Tests to run in parallel again (#19525)
* Enable System.Net.Requests.Tests to run in parallel again as it was causing them to hang/timeout * Revert Changes * Remove skip on target attribute as it is no longer needed * Isolated Requests tests to use RemoteInvoke * Removed duplicate code cause of merge & addressed PR feedback * Removed some theories where memberdata wasn't used
1 parent bf5ffea commit 536956f

File tree

3 files changed

+103
-83
lines changed

3 files changed

+103
-83
lines changed

src/System.Net.Requests/tests/AssemblyInfo.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/System.Net.Requests/tests/AuthenticationManagerTest.cs

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System.Collections;
6-
using System.Net.Security;
6+
using System.Diagnostics;
77
using Xunit;
88

99
#pragma warning disable CS0618 // obsolete warnings
1010

1111
namespace System.Net.Tests
1212
{
13-
public class AuthenticationManagerTest
13+
public class AuthenticationManagerTest : RemoteExecutorTestBase
1414
{
1515
[SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "AuthenticationManager supported on NETFX")]
1616
[Fact]
@@ -29,20 +29,30 @@ public void Register_Null_Throws()
2929
[Fact]
3030
public void Register_Unregister_ModuleCountUnchanged()
3131
{
32-
int initialCount = GetModuleCount();
33-
IAuthenticationModule module = new CustomModule();
34-
AuthenticationManager.Register(module);
35-
AuthenticationManager.Unregister(module);
36-
Assert.Equal(initialCount, GetModuleCount());
32+
RemoteInvoke(() =>
33+
{
34+
int initialCount = GetModuleCount();
35+
IAuthenticationModule module = new CustomModule();
36+
AuthenticationManager.Register(module);
37+
AuthenticationManager.Unregister(module);
38+
Assert.Equal(initialCount, GetModuleCount());
39+
40+
return SuccessExitCode;
41+
}).Dispose();
3742
}
3843

3944
public void Register_UnregisterByScheme_ModuleCountUnchanged()
4045
{
41-
int initialCount = GetModuleCount();
42-
IAuthenticationModule module = new CustomModule();
43-
AuthenticationManager.Register(module);
44-
AuthenticationManager.Unregister("custom");
45-
Assert.Equal(initialCount, GetModuleCount());
46+
RemoteInvoke(() =>
47+
{
48+
int initialCount = GetModuleCount();
49+
IAuthenticationModule module = new CustomModule();
50+
AuthenticationManager.Register(module);
51+
AuthenticationManager.Unregister("custom");
52+
Assert.Equal(initialCount, GetModuleCount());
53+
54+
return SuccessExitCode;
55+
}).Dispose();
4656
}
4757

4858
[Fact]
@@ -59,12 +69,17 @@ public void CredentialPolicy_Roundtrip()
5969
{
6070
Assert.Null(AuthenticationManager.CredentialPolicy);
6171

62-
ICredentialPolicy cp = new DummyCredentialPolicy();
63-
AuthenticationManager.CredentialPolicy = cp;
64-
Assert.Same(cp, AuthenticationManager.CredentialPolicy);
72+
RemoteInvoke(() =>
73+
{
74+
ICredentialPolicy cp = new DummyCredentialPolicy();
75+
AuthenticationManager.CredentialPolicy = cp;
76+
Assert.Same(cp, AuthenticationManager.CredentialPolicy);
6577

66-
AuthenticationManager.CredentialPolicy = null;
67-
Assert.Null(AuthenticationManager.CredentialPolicy);
78+
AuthenticationManager.CredentialPolicy = null;
79+
Assert.Null(AuthenticationManager.CredentialPolicy);
80+
81+
return SuccessExitCode;
82+
}).Dispose();
6883
}
6984

7085
[Fact]
@@ -74,16 +89,21 @@ public void CustomTargetNameDictionary_ValidCollection()
7489
Assert.Empty(AuthenticationManager.CustomTargetNameDictionary);
7590
Assert.Same(AuthenticationManager.CustomTargetNameDictionary, AuthenticationManager.CustomTargetNameDictionary);
7691

77-
string theKey = "http://www.contoso.com";
78-
string theValue = "HTTP/www.contoso.com";
79-
AuthenticationManager.CustomTargetNameDictionary.Add(theKey, theValue);
80-
Assert.Equal(theValue, AuthenticationManager.CustomTargetNameDictionary[theKey]);
92+
RemoteInvoke(() =>
93+
{
94+
string theKey = "http://www.contoso.com";
95+
string theValue = "HTTP/www.contoso.com";
96+
AuthenticationManager.CustomTargetNameDictionary.Add(theKey, theValue);
97+
Assert.Equal(theValue, AuthenticationManager.CustomTargetNameDictionary[theKey]);
98+
99+
AuthenticationManager.CustomTargetNameDictionary.Clear();
100+
Assert.Equal(0, AuthenticationManager.CustomTargetNameDictionary.Count);
81101

82-
AuthenticationManager.CustomTargetNameDictionary.Clear();
83-
Assert.Equal(0, AuthenticationManager.CustomTargetNameDictionary.Count);
102+
return SuccessExitCode;
103+
}).Dispose();
84104
}
85105

86-
private int GetModuleCount()
106+
private static int GetModuleCount()
87107
{
88108
int count = 0;
89109
IEnumerator modules = AuthenticationManager.RegisteredModules;
@@ -125,6 +145,5 @@ public Authorization PreAuthenticate(WebRequest request, ICredentials credential
125145
throw new NotImplementedException();
126146
}
127147
}
128-
}
129-
148+
}
130149
}

src/System.Net.Requests/tests/HttpWebRequestTest.cs

Lines changed: 58 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
using System.IO;
77
using System.Net.Cache;
88
using System.Net.Http;
9-
using System.Net.Sockets;
109
using System.Net.Test.Common;
1110
using System.Runtime.Serialization.Formatters.Binary;
1211
using System.Text;
@@ -17,7 +16,7 @@
1716

1817
namespace System.Net.Tests
1918
{
20-
public partial class HttpWebRequestTest
19+
public partial class HttpWebRequestTest : RemoteExecutorTestBase
2120
{
2221
private const string RequestBody = "This is data to POST.";
2322
private readonly byte[] _requestBodyBytes = Encoding.UTF8.GetBytes(RequestBody);
@@ -526,8 +525,7 @@ public void AllowAutoRedirect_SetAndGetBoolean_ValuesMatch(Uri remoteServer)
526525
[SkipOnTargetFramework(TargetFrameworkMonikers.Netcoreapp, "ConnectionGroupName isn't implemented in Core")]
527526
public void ConnectionGroupName_SetAndGetGroup_ValuesMatch(Uri remoteServer)
528527
{
529-
HttpWebRequest request = WebRequest.CreateHttp(remoteServer);
530-
528+
HttpWebRequest request = WebRequest.CreateHttp(remoteServer);
531529

532530
if (!PlatformDetection.IsFullFramework)
533531
{
@@ -600,55 +598,70 @@ public void Expect_Set100Continue_ThrowsArgumentException(Uri remoteServer)
600598
Assert.Throws<ArgumentException>("value", () => request.Expect = "100-continue");
601599
}
602600

603-
[Theory, MemberData(nameof(EchoServers))]
604-
public void DefaultMaximumResponseHeadersLength_SetAndGetLength_ValuesMatch(Uri remoteServer)
601+
[Fact]
602+
public void DefaultMaximumResponseHeadersLength_SetAndGetLength_ValuesMatch()
605603
{
606-
int defaultMaximumResponseHeadersLength = HttpWebRequest.DefaultMaximumResponseHeadersLength;
607-
const int NewDefaultMaximumResponseHeadersLength = 255;
608-
609-
try
610-
{
611-
HttpWebRequest.DefaultMaximumResponseHeadersLength = NewDefaultMaximumResponseHeadersLength;
612-
Assert.Equal(NewDefaultMaximumResponseHeadersLength, HttpWebRequest.DefaultMaximumResponseHeadersLength);
613-
}
614-
finally
604+
RemoteInvoke(() =>
615605
{
616-
HttpWebRequest.DefaultMaximumResponseHeadersLength = defaultMaximumResponseHeadersLength;
617-
}
606+
int defaultMaximumResponseHeadersLength = HttpWebRequest.DefaultMaximumResponseHeadersLength;
607+
const int NewDefaultMaximumResponseHeadersLength = 255;
608+
609+
try
610+
{
611+
HttpWebRequest.DefaultMaximumResponseHeadersLength = NewDefaultMaximumResponseHeadersLength;
612+
Assert.Equal(NewDefaultMaximumResponseHeadersLength, HttpWebRequest.DefaultMaximumResponseHeadersLength);
613+
}
614+
finally
615+
{
616+
HttpWebRequest.DefaultMaximumResponseHeadersLength = defaultMaximumResponseHeadersLength;
617+
}
618+
619+
return SuccessExitCode;
620+
}).Dispose();
618621
}
619622

620-
[Theory, MemberData(nameof(EchoServers))]
621-
public void DefaultMaximumErrorResponseLength_SetAndGetLength_ValuesMatch(Uri remoteServer)
623+
[Fact]
624+
public void DefaultMaximumErrorResponseLength_SetAndGetLength_ValuesMatch()
622625
{
623-
int defaultMaximumErrorsResponseLength = HttpWebRequest.DefaultMaximumErrorResponseLength;
624-
const int NewDefaultMaximumErrorsResponseLength = 255;
625-
626-
try
626+
RemoteInvoke(() =>
627627
{
628-
HttpWebRequest.DefaultMaximumErrorResponseLength = NewDefaultMaximumErrorsResponseLength;
629-
Assert.Equal(NewDefaultMaximumErrorsResponseLength, HttpWebRequest.DefaultMaximumErrorResponseLength);
630-
}
631-
finally
632-
{
633-
HttpWebRequest.DefaultMaximumErrorResponseLength = defaultMaximumErrorsResponseLength;
634-
}
628+
int defaultMaximumErrorsResponseLength = HttpWebRequest.DefaultMaximumErrorResponseLength;
629+
const int NewDefaultMaximumErrorsResponseLength = 255;
630+
631+
try
632+
{
633+
HttpWebRequest.DefaultMaximumErrorResponseLength = NewDefaultMaximumErrorsResponseLength;
634+
Assert.Equal(NewDefaultMaximumErrorsResponseLength, HttpWebRequest.DefaultMaximumErrorResponseLength);
635+
}
636+
finally
637+
{
638+
HttpWebRequest.DefaultMaximumErrorResponseLength = defaultMaximumErrorsResponseLength;
639+
}
640+
641+
return SuccessExitCode;
642+
}).Dispose();
635643
}
636644

637-
[Theory, MemberData(nameof(EchoServers))]
638-
public void DefaultCachePolicy_SetAndGetPolicyReload_ValuesMatch(Uri remoteServer)
645+
[Fact]
646+
public void DefaultCachePolicy_SetAndGetPolicyReload_ValuesMatch()
639647
{
640-
RequestCachePolicy requestCachePolicy = HttpWebRequest.DefaultCachePolicy;
641-
642-
try
643-
{
644-
RequestCachePolicy newRequestCachePolicy = new RequestCachePolicy(RequestCacheLevel.Reload);
645-
HttpWebRequest.DefaultCachePolicy = newRequestCachePolicy;
646-
Assert.Equal(newRequestCachePolicy.Level, HttpWebRequest.DefaultCachePolicy.Level);
647-
}
648-
finally
648+
RemoteInvoke(() =>
649649
{
650-
HttpWebRequest.DefaultCachePolicy = requestCachePolicy;
651-
}
650+
RequestCachePolicy requestCachePolicy = HttpWebRequest.DefaultCachePolicy;
651+
652+
try
653+
{
654+
RequestCachePolicy newRequestCachePolicy = new RequestCachePolicy(RequestCacheLevel.Reload);
655+
HttpWebRequest.DefaultCachePolicy = newRequestCachePolicy;
656+
Assert.Equal(newRequestCachePolicy.Level, HttpWebRequest.DefaultCachePolicy.Level);
657+
}
658+
finally
659+
{
660+
HttpWebRequest.DefaultCachePolicy = requestCachePolicy;
661+
}
662+
663+
return SuccessExitCode;
664+
}).Dispose();
652665
}
653666

654667
[Theory, MemberData(nameof(EchoServers))]
@@ -966,6 +979,7 @@ public async Task GetResponseAsync_GetResponseStream_ContainsHost(Uri remoteServ
966979
{
967980
HttpWebRequest request = WebRequest.CreateHttp(remoteServer);
968981
request.Method = HttpMethod.Get.Method;
982+
969983
using (WebResponse response = await request.GetResponseAsync())
970984
using (Stream myStream = response.GetResponseStream())
971985
{
@@ -974,8 +988,7 @@ public async Task GetResponseAsync_GetResponseStream_ContainsHost(Uri remoteServ
974988
{
975989
string strContent = sr.ReadToEnd();
976990
Assert.True(strContent.Contains("\"Host\": \"" + System.Net.Test.Common.Configuration.Http.Host + "\""));
977-
}
978-
991+
}
979992
}
980993
}
981994

@@ -1037,7 +1050,6 @@ public void GetResponseAsync_ServerNameNotInDns_ThrowsWebException()
10371050
HttpWebRequest request = WebRequest.CreateHttp(serverUrl);
10381051
WebException ex = Assert.Throws<WebException>(() => request.GetResponseAsync().GetAwaiter().GetResult());
10391052
Assert.Equal(WebExceptionStatus.NameResolutionFailure, ex.Status);
1040-
10411053
}
10421054

10431055
public static object[][] StatusCodeServers = {
@@ -1049,10 +1061,8 @@ public void GetResponseAsync_ServerNameNotInDns_ThrowsWebException()
10491061
public async Task GetResponseAsync_ResourceNotFound_ThrowsWebException(Uri remoteServer)
10501062
{
10511063
HttpWebRequest request = WebRequest.CreateHttp(remoteServer);
1052-
10531064
WebException ex = await Assert.ThrowsAsync<WebException>(() => request.GetResponseAsync());
10541065
Assert.Equal(WebExceptionStatus.ProtocolError, ex.Status);
1055-
10561066
}
10571067

10581068
[Theory, MemberData(nameof(EchoServers))]

0 commit comments

Comments
 (0)