From e7a2d94f75e00c1f00ebe8bf02b67df7110a0b9a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexander=20K=C3=B6plinger?= Date: Thu, 31 Aug 2017 10:53:35 +0200 Subject: [PATCH] [bcl] Fix a few hardcoded socket ports in tests (#5471) * [System] Fix a few hardcoded socket ports in tests Those could've shown up as "address already in use" in CI. * [System.Runtime.Remoting] Fix a few hardcoded socket ports in tests Those could've shown up as "address already in use" in CI. Additionally remove a copy of RemotingServicesTest.cs from corlib which also exists in System.Runtime.Remoting in updated form. * [System.ServiceModel] Fix a few hardcoded socket ports in tests Those could've shown up as "address already in use" in CI. * [System.Net.Http] Fix a few hardcoded socket ports in tests Those could've shown up as "address already in use" in CI. The additional "keep-alive" header in Send_Complete_NoContent() and Send_Transfer_Encoding_Chunked() is because we were using the same port for all tests before so other tests would clear the header. This doesn't happen now that we use distinct test ports. * [System.ServiceModel.Web] Fix a few hardcoded socket ports in tests Those could've shown up as "address already in use" in CI. --- .../System.Net.Http_test.dll.sources | 1 + .../Test/System.Net.Http/HttpClientTest.cs | 239 ++++---- .../System.Runtime.Remoting_test.dll.sources | 1 + .../Test/ActivationTests.cs | 25 +- .../Test/GenericTest.cs | 7 +- .../Test/HttpBugTests.cs | 21 +- .../Test/RemotingServicesTest.cs | 66 ++- .../TcpChannelTest.cs | 9 +- .../WebScriptServiceHostFactoryTest.cs | 11 +- .../CustomPeerResolverService.cs | 11 +- .../Test/FeatureBased/TestFixtureBase.cs | 5 +- .../CustomPeerResolverServiceTest.cs | 4 + .../Test/System.Net.Sockets/SocketTest.cs | 39 +- .../Test/System.Net.Sockets/TcpClientTest.cs | 6 +- .../Test/System.Net.Sockets/UdpClientTest.cs | 86 ++- .../HttpListenerPrefixCollectionTest.cs | 10 +- .../RemotingServicesTest.cs | 529 ------------------ ...g_aot_full_corlib_test.dll.exclude.sources | 1 - mcs/class/test-helpers/NetworkHelpers.cs | 7 +- 19 files changed, 320 insertions(+), 758 deletions(-) delete mode 100644 mcs/class/corlib/Test/System.Runtime.Remoting/RemotingServicesTest.cs diff --git a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources index 9aa6dcb02e4..a623a96cef4 100644 --- a/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources +++ b/mcs/class/System.Net.Http/System.Net.Http_test.dll.sources @@ -1,3 +1,4 @@ +../../test-helpers/NetworkHelpers.cs System.Net.Http/DelegatingHandlerTest.cs System.Net.Http/ByteArrayContentTest.cs System.Net.Http/FormUrlEncodedContentTest.cs diff --git a/mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs b/mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs index 72508c48833..8344c26cc68 100644 --- a/mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs +++ b/mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs @@ -38,6 +38,8 @@ using System.Net; using System.Linq; using System.IO; +using MonoTests.Helpers; + namespace MonoTests.System.Net.Http { [TestFixture] @@ -175,22 +177,6 @@ namespace MonoTests.System.Net.Http const int WaitTimeout = 5000; - string TestHost, LocalServer; - int port; - - [SetUp] - public void SetupFixture () - { - if (Environment.OSVersion.Platform == PlatformID.Win32NT) { - port = 810; - } else { - port = 8810; - } - - TestHost = "localhost:" + port; - LocalServer = string.Format ("http://{0}/", TestHost); - } - [Test] public void Ctor_Default () { @@ -410,6 +396,7 @@ namespace MonoTests.System.Net.Http public void Send_Complete_Default () { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { try { var request = l.Request; @@ -419,7 +406,7 @@ namespace MonoTests.System.Net.Http Assert.IsNull (request.ContentType, "#3"); Assert.AreEqual (0, request.Cookies.Count, "#4"); Assert.IsFalse (request.HasEntityBody, "#5"); - Assert.AreEqual (TestHost, request.Headers["Host"], "#6b"); + Assert.AreEqual ($"localhost:{port}", request.Headers["Host"], "#6b"); Assert.AreEqual ("GET", request.HttpMethod, "#7"); Assert.IsFalse (request.IsAuthenticated, "#8"); Assert.IsTrue (request.IsLocal, "#9"); @@ -435,11 +422,11 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var client = new HttpClient (); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100"); @@ -458,6 +445,7 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { try { var request = l.Request; @@ -468,7 +456,7 @@ namespace MonoTests.System.Net.Http Assert.AreEqual (0, request.Cookies.Count, "#4"); Assert.IsFalse (request.HasEntityBody, "#5"); Assert.AreEqual (1, request.Headers.Count, "#6"); - Assert.AreEqual (TestHost, request.Headers["Host"], "#6a"); + Assert.AreEqual ($"localhost:{port}", request.Headers["Host"], "#6a"); Assert.AreEqual ("GET", request.HttpMethod, "#7"); Assert.IsFalse (request.IsAuthenticated, "#8"); Assert.IsTrue (request.IsLocal, "#9"); @@ -484,11 +472,11 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var client = new HttpClient (); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); request.Version = HttpVersion.Version10; var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -508,6 +496,7 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; @@ -519,7 +508,7 @@ namespace MonoTests.System.Net.Http Assert.AreEqual (new Cookie ("mycookie", "vv"), request.Cookies[0], "#4a"); Assert.IsFalse (request.HasEntityBody, "#5"); Assert.AreEqual (4, request.Headers.Count, "#6"); - Assert.AreEqual (TestHost, request.Headers["Host"], "#6a"); + Assert.AreEqual ($"localhost:{port}", request.Headers["Host"], "#6a"); Assert.AreEqual ("gzip", request.Headers["Accept-Encoding"], "#6b"); Assert.AreEqual ("mycookie=vv", request.Headers["Cookie"], "#6c"); Assert.AreEqual ("GET", request.HttpMethod, "#7"); @@ -537,7 +526,7 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var chandler = new HttpClientHandler (); @@ -546,14 +535,14 @@ namespace MonoTests.System.Net.Http chandler.MaxAutomaticRedirections = 33; chandler.MaxRequestContentBufferSize = 5555; chandler.PreAuthenticate = true; - chandler.CookieContainer.Add (new Uri (LocalServer), new Cookie ( "mycookie", "vv")); + chandler.CookieContainer.Add (new Uri ($"http://localhost:{port}/"), new Cookie ( "mycookie", "vv")); chandler.UseCookies = true; chandler.UseDefaultCredentials = true; chandler.Proxy = new WebProxy ("ee"); chandler.UseProxy = true; var client = new HttpClient (chandler); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); request.Version = HttpVersion.Version10; request.Headers.Add ("Keep-Alive", "false"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -575,6 +564,7 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; try { @@ -595,11 +585,11 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var client = new HttpClient (); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); Assert.IsTrue (request.Headers.TryAddWithoutValidation ("aa", "vv"), "#0"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -642,6 +632,7 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; @@ -651,14 +642,14 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var client = new HttpClient (); client.DefaultRequestHeaders.Add("User-Agent", "MLK Android Phone 1.1.9"); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -678,6 +669,7 @@ namespace MonoTests.System.Net.Http public void Send_Complete_CustomHeaders_Host () { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; @@ -687,14 +679,14 @@ namespace MonoTests.System.Net.Http } catch { failed = true; } - }); + }, port); try { var client = new HttpClient (); client.DefaultRequestHeaders.Add("Host", "customhost"); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -715,22 +707,26 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; try { - Assert.AreEqual (1, request.Headers.Count, "#1"); + Assert.AreEqual (2, request.Headers.Count, "#1"); + Assert.AreEqual ("keep-alive", request.Headers ["Connection"], "#2"); failed = false; - } catch { + } catch (Exception ex){ + Console.WriteLine (ex); + Console.WriteLine (String.Join ("#", l.Request.Headers.AllKeys)); failed = true; } - }); + }, port); try { var client = new HttpClient (); client.DefaultRequestHeaders.TransferEncodingChunked = true; - client.GetAsync (LocalServer).Wait (); + client.GetAsync ($"http://localhost:{port}/").Wait (); Assert.AreEqual (false, failed, "#102"); } finally { @@ -747,15 +743,16 @@ namespace MonoTests.System.Net.Http { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { failed = true; - }); + }, port); try { var client = new HttpClient (); client.DefaultRequestHeaders.TransferEncoding.Add (new TransferCodingHeaderValue ("chunked2")); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); try { client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Wait (); @@ -776,15 +773,16 @@ namespace MonoTests.System.Net.Http #endif public void Send_Complete_Content () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; l.Response.OutputStream.WriteByte (55); l.Response.OutputStream.WriteByte (75); - }); + }, port); try { var client = new HttpClient (); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); Assert.IsTrue (request.Headers.TryAddWithoutValidation ("aa", "vv"), "#0"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; @@ -806,16 +804,17 @@ namespace MonoTests.System.Net.Http #endif public void Send_Complete_Content_MaxResponseContentBufferSize () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; var b = new byte[4000]; l.Response.OutputStream.Write (b, 0, b.Length); - }); + }, port); try { var client = new HttpClient (); client.MaxResponseContentBufferSize = 1000; - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; Assert.AreEqual (4000, response.Content.ReadAsStringAsync ().Result.Length, "#100"); @@ -831,16 +830,17 @@ namespace MonoTests.System.Net.Http #endif public void Send_Complete_Content_MaxResponseContentBufferSize_Error () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; var b = new byte[4000]; l.Response.OutputStream.Write (b, 0, b.Length); - }); + }, port); try { var client = new HttpClient (); client.MaxResponseContentBufferSize = 1000; - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); try { client.SendAsync (request, HttpCompletionOption.ResponseContentRead).Wait (WaitTimeout); @@ -858,34 +858,60 @@ namespace MonoTests.System.Net.Http #if FEATURE_NO_BSD_SOCKETS [ExpectedException (typeof (PlatformNotSupportedException))] #endif - public void Send_Complete_NoContent () + public void Send_Complete_NoContent_Post () + { + Send_Complete_NoContent (HttpMethod.Post); + } + + [Test] +#if FEATURE_NO_BSD_SOCKETS + [ExpectedException (typeof (PlatformNotSupportedException))] +#endif + public void Send_Complete_NoContent_Put () { - foreach (var method in new HttpMethod[] { HttpMethod.Post, HttpMethod.Put, HttpMethod.Delete }) { - bool? failed = null; - var listener = CreateListener (l => { - try { - var request = l.Request; - - Assert.AreEqual (2, request.Headers.Count, "#1"); - Assert.AreEqual ("0", request.Headers ["Content-Length"], "#1b"); - Assert.AreEqual (method.Method, request.HttpMethod, "#2"); - failed = false; - } catch { - failed = true; - } - }); + Send_Complete_NoContent (HttpMethod.Put); + } + + [Test] +#if FEATURE_NO_BSD_SOCKETS + [ExpectedException (typeof (PlatformNotSupportedException))] +#endif + public void Send_Complete_NoContent_Delete () + { + Send_Complete_NoContent (HttpMethod.Delete); + } + void Send_Complete_NoContent (HttpMethod method) + { + bool? failed = null; + var port = NetworkHelpers.FindFreePort (); + var listener = CreateListener (l => { try { - var client = new HttpClient (); - var request = new HttpRequestMessage (method, LocalServer); - var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; + var request = l.Request; - Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100"); - Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101"); - Assert.AreEqual (false, failed, "#102"); - } finally { - listener.Close (); + Assert.AreEqual (3, request.Headers.Count, "#1"); + Assert.AreEqual ("0", request.Headers ["Content-Length"], "#1b"); + Assert.AreEqual ("keep-alive", request.Headers ["Connection"], "#1c"); + Assert.AreEqual (method.Method, request.HttpMethod, "#2"); + failed = false; + } catch (Exception ex){ + Console.WriteLine (ex); + Console.WriteLine (String.Join ("#", l.Request.Headers.AllKeys)); + + failed = true; } + }, port); + + try { + var client = new HttpClient (); + var request = new HttpRequestMessage (method, $"http://localhost:{port}/"); + var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; + + Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100"); + Assert.AreEqual (HttpStatusCode.OK, response.StatusCode, "#101"); + Assert.AreEqual (false, failed, "#102"); + } finally { + listener.Close (); } } @@ -895,14 +921,15 @@ namespace MonoTests.System.Net.Http #endif public void Send_Complete_Error () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var response = l.Response; response.StatusCode = 500; - }); + }, port); try { var client = new HttpClient (); - var request = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var request = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead).Result; Assert.AreEqual ("", response.Content.ReadAsStringAsync ().Result, "#100"); @@ -918,14 +945,15 @@ namespace MonoTests.System.Net.Http #endif public void Send_Content_Get () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; l.Response.OutputStream.WriteByte (72); - }); + }, port); try { var client = new HttpClient (); - var r = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var r = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (r).Result; Assert.AreEqual ("H", response.Content.ReadAsStringAsync ().Result); @@ -940,6 +968,7 @@ namespace MonoTests.System.Net.Http #endif public void Send_Content_BomEncoding () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; @@ -948,11 +977,11 @@ namespace MonoTests.System.Net.Http str.WriteByte (0xBB); str.WriteByte (0xBF); str.WriteByte (71); - }); + }, port); try { var client = new HttpClient (); - var r = new HttpRequestMessage (HttpMethod.Get, LocalServer); + var r = new HttpRequestMessage (HttpMethod.Get, $"http://localhost:{port}/"); var response = client.SendAsync (r).Result; Assert.AreEqual ("G", response.Content.ReadAsStringAsync ().Result); @@ -968,16 +997,17 @@ namespace MonoTests.System.Net.Http public void Send_Content_Put () { bool passed = false; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; passed = 7 == request.ContentLength64; passed &= request.ContentType == "text/plain; charset=utf-8"; passed &= request.InputStream.ReadByte () == 'm'; - }); + }, port); try { var client = new HttpClient (); - var r = new HttpRequestMessage (HttpMethod.Put, LocalServer); + var r = new HttpRequestMessage (HttpMethod.Put, $"http://localhost:{port}/"); r.Content = new StringContent ("my text"); var response = client.SendAsync (r).Result; @@ -996,15 +1026,16 @@ namespace MonoTests.System.Net.Http public void Send_Content_Put_CustomStream () { bool passed = false; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; passed = 44 == request.ContentLength64; passed &= request.ContentType == null; - }); + }, port); try { var client = new HttpClient (); - var r = new HttpRequestMessage (HttpMethod.Put, LocalServer); + var r = new HttpRequestMessage (HttpMethod.Put, $"http://localhost:{port}/"); r.Content = new StreamContent (new CustomStream ()); var response = client.SendAsync (r).Result; @@ -1100,6 +1131,7 @@ namespace MonoTests.System.Net.Http public void Post_TransferEncodingChunked () { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { try { var request = l.Request; @@ -1109,7 +1141,7 @@ namespace MonoTests.System.Net.Http Assert.IsNull (request.ContentType, "#3"); Assert.AreEqual (0, request.Cookies.Count, "#4"); Assert.IsTrue (request.HasEntityBody, "#5"); - Assert.AreEqual (TestHost, request.Headers ["Host"], "#6b"); + Assert.AreEqual ($"localhost:{port}", request.Headers ["Host"], "#6b"); Assert.AreEqual ("POST", request.HttpMethod, "#7"); Assert.IsFalse (request.IsAuthenticated, "#8"); Assert.IsTrue (request.IsLocal, "#9"); @@ -1128,7 +1160,7 @@ namespace MonoTests.System.Net.Http failed = true; Console.WriteLine (e); } - }); + }, port); try { var client = new HttpClient (); @@ -1137,7 +1169,7 @@ namespace MonoTests.System.Net.Http var imageContent = new StreamContent (new MemoryStream ()); - var response = client.PostAsync (LocalServer, imageContent).Result; + var response = client.PostAsync ($"http://localhost:{port}/", imageContent).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "#101"); Assert.AreEqual(false, failed, "#102"); @@ -1153,6 +1185,7 @@ namespace MonoTests.System.Net.Http public void Post_StreamCaching () { bool? failed = null; + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { try { var request = l.Request; @@ -1162,7 +1195,7 @@ namespace MonoTests.System.Net.Http Assert.IsNull (request.ContentType, "#3"); Assert.AreEqual (0, request.Cookies.Count, "#4"); Assert.IsFalse (request.HasEntityBody, "#5"); - Assert.AreEqual (TestHost, request.Headers ["Host"], "#6b"); + Assert.AreEqual ($"localhost:{port}", request.Headers ["Host"], "#6b"); Assert.AreEqual ("POST", request.HttpMethod, "#7"); Assert.IsFalse (request.IsAuthenticated, "#8"); Assert.IsTrue (request.IsLocal, "#9"); @@ -1181,14 +1214,14 @@ namespace MonoTests.System.Net.Http failed = true; Console.WriteLine (e); } - }); + }, port); try { var client = new HttpClient (); var imageContent = new StreamContent (new MemoryStream ()); - var response = client.PostAsync (LocalServer, imageContent).Result; + var response = client.PostAsync ($"http://localhost:{port}/", imageContent).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, "#101"); Assert.AreEqual(false, failed, "#102"); @@ -1214,13 +1247,14 @@ namespace MonoTests.System.Net.Http response.OutputStream.WriteByte (0x6f); }; - var listener = CreateListener (context); // creates a default request handler + var port = NetworkHelpers.FindFreePort (); + var listener = CreateListener (context, port); // creates a default request handler AddListenerContext (listener, context); // add another request handler for the second request try { var client = new HttpClient (); - var t1 = client.GetStringAsync (LocalServer); - var t2 = client.GetStringAsync (LocalServer); + var t1 = client.GetStringAsync ($"http://localhost:{port}/"); + var t2 = client.GetStringAsync ($"http://localhost:{port}/"); Assert.IsTrue (Task.WaitAll (new [] { t1, t2 }, WaitTimeout)); Assert.AreEqual ("hello", t1.Result, "#1"); Assert.AreEqual ("hello", t2.Result, "#2"); @@ -1236,16 +1270,17 @@ namespace MonoTests.System.Net.Http #endif public void GetByteArray_ServerError () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var response = l.Response; response.StatusCode = 500; l.Response.OutputStream.WriteByte (72); - }); + }, port); try { var client = new HttpClient (); try { - client.GetByteArrayAsync (LocalServer).Wait (WaitTimeout); + client.GetByteArrayAsync ($"http://localhost:{port}/").Wait (WaitTimeout); Assert.Fail ("#1"); } catch (AggregateException e) { Assert.IsTrue (e.InnerException is HttpRequestException , "#2"); @@ -1261,13 +1296,14 @@ namespace MonoTests.System.Net.Http #endif public void DisallowAutoRedirect () { + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var request = l.Request; var response = l.Response; response.StatusCode = (int)HttpStatusCode.Moved; response.RedirectLocation = "http://xamarin.com/"; - }); + }, port); try { var chandler = new HttpClientHandler (); @@ -1275,7 +1311,7 @@ namespace MonoTests.System.Net.Http var client = new HttpClient (chandler); try { - client.GetStringAsync (LocalServer).Wait (WaitTimeout); + client.GetStringAsync ($"http://localhost:{port}/").Wait (WaitTimeout); Assert.Fail ("#1"); } catch (AggregateException e) { Assert.IsTrue (e.InnerException is HttpRequestException, "#2"); @@ -1292,13 +1328,16 @@ namespace MonoTests.System.Net.Http #endif public void RequestUriAfterRedirect () { + var port = NetworkHelpers.FindFreePort (); + var redirectPort = NetworkHelpers.FindFreePort (); + var listener = CreateListener (l => { var request = l.Request; var response = l.Response; response.StatusCode = (int)HttpStatusCode.Moved; - response.RedirectLocation = "http://localhost:8811/"; - }); + response.RedirectLocation = $"http://localhost:{redirectPort}/"; + }, port); var listener2 = CreateListener (l => { var response = l.Response; @@ -1309,17 +1348,17 @@ namespace MonoTests.System.Net.Http response.OutputStream.WriteByte (0x6c); response.OutputStream.WriteByte (0x6c); response.OutputStream.WriteByte (0x6f); - }, 8811); + }, redirectPort); try { var chandler = new HttpClientHandler (); chandler.AllowAutoRedirect = true; var client = new HttpClient (chandler); - var r = client.GetAsync (LocalServer); + var r = client.GetAsync ($"http://localhost:{port}/"); Assert.IsTrue (r.Wait (WaitTimeout), "#1"); var resp = r.Result; - Assert.AreEqual ("http://localhost:8811/", resp.RequestMessage.RequestUri.AbsoluteUri, "#2"); + Assert.AreEqual ($"http://localhost:{redirectPort}/", resp.RequestMessage.RequestUri.AbsoluteUri, "#2"); Assert.AreEqual ("hello", resp.Content.ReadAsStringAsync ().Result, "#3"); } finally { listener.Abort (); @@ -1342,14 +1381,15 @@ namespace MonoTests.System.Net.Http chandler.AllowAutoRedirect = true; var client = new HttpClient (chandler, true); + var port = NetworkHelpers.FindFreePort (); var listener = CreateListener (l => { var response = l.Response; response.StatusCode = 200; response.OutputStream.WriteByte (55); - }); + }, port); try { - client.GetStringAsync (LocalServer).Wait (WaitTimeout); + client.GetStringAsync ($"http://localhost:{port}/").Wait (WaitTimeout); try { chandler.AllowAutoRedirect = false; Assert.Fail ("#1"); @@ -1388,11 +1428,6 @@ namespace MonoTests.System.Net.Http ch.AllowAutoRedirect = false; } - HttpListener CreateListener (Action contextAssert) - { - return CreateListener (contextAssert, port); - } - HttpListener CreateListener (Action contextAssert, int port) { var l = new HttpListener (); diff --git a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting_test.dll.sources b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting_test.dll.sources index 8aae7d9e602..4d942c11997 100644 --- a/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting_test.dll.sources +++ b/mcs/class/System.Runtime.Remoting/System.Runtime.Remoting_test.dll.sources @@ -1,4 +1,5 @@ ../../test-helpers/NunitHelpers.cs +../../test-helpers/NetworkHelpers.cs System.Runtime.Remoting.Channels.Tcp/TcpChannelTest.cs ServerObject.cs ContextsTest.cs diff --git a/mcs/class/System.Runtime.Remoting/Test/ActivationTests.cs b/mcs/class/System.Runtime.Remoting/Test/ActivationTests.cs index b70409344f9..5ea68f21d5a 100644 --- a/mcs/class/System.Runtime.Remoting/Test/ActivationTests.cs +++ b/mcs/class/System.Runtime.Remoting/Test/ActivationTests.cs @@ -14,6 +14,8 @@ using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Channels.Http; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.Remoting { [TestFixture] @@ -40,12 +42,14 @@ namespace MonoTests.Remoting AppDomain domain = BaseCallTest.CreateDomain ("testdomain_activation"); server = (ActivationServer) domain.CreateInstanceAndUnwrap(GetType().Assembly.FullName,"MonoTests.Remoting.ActivationServer"); - RemotingConfiguration.RegisterActivatedClientType (typeof(CaObject1), "tcp://localhost:9433"); - RemotingConfiguration.RegisterActivatedClientType (typeof(CaObject2), "http://localhost:9434"); - RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSinglecall1), "tcp://localhost:9433/wkoSingleCall1"); - RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSingleton1), "tcp://localhost:9433/wkoSingleton1"); - RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSinglecall2), "http://localhost:9434/wkoSingleCall2"); - RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSingleton2), "http://localhost:9434/wkoSingleton2"); + var tcpUrlPrefix = $"tcp://localhost:{server.TcpPort}"; + var httpUrlPrefix = $"http://localhost:{server.HttpPort}"; + RemotingConfiguration.RegisterActivatedClientType (typeof(CaObject1), tcpUrlPrefix); + RemotingConfiguration.RegisterActivatedClientType (typeof(CaObject2), httpUrlPrefix); + RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSinglecall1), tcpUrlPrefix + "/wkoSingleCall1"); + RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSingleton1), tcpUrlPrefix + "/wkoSingleton1"); + RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSinglecall2), httpUrlPrefix + "/wkoSingleCall2"); + RemotingConfiguration.RegisterWellKnownClientType (typeof(WkObjectSingleton2), httpUrlPrefix + "/wkoSingleton2"); } catch (Exception ex) { @@ -163,8 +167,10 @@ namespace MonoTests.Remoting public ActivationServer () { - tcp = new TcpChannel (9433); - http = new HttpChannel (9434); + TcpPort = NetworkHelpers.FindFreePort (); + HttpPort = NetworkHelpers.FindFreePort (); + tcp = new TcpChannel (TcpPort); + http = new HttpChannel (HttpPort); ChannelServices.RegisterChannel (tcp); ChannelServices.RegisterChannel (http); @@ -182,6 +188,9 @@ namespace MonoTests.Remoting ChannelServices.UnregisterChannel (tcp); ChannelServices.UnregisterChannel (http); } + + public int TcpPort { get; private set; } + public int HttpPort { get; private set; } } public class BaseObject: MarshalByRefObject diff --git a/mcs/class/System.Runtime.Remoting/Test/GenericTest.cs b/mcs/class/System.Runtime.Remoting/Test/GenericTest.cs index 519686785c9..a8a9a7bfead 100644 --- a/mcs/class/System.Runtime.Remoting/Test/GenericTest.cs +++ b/mcs/class/System.Runtime.Remoting/Test/GenericTest.cs @@ -16,6 +16,8 @@ using System.Runtime.Remoting.Channels.Ipc; using System.Threading; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.Remoting { public interface INested @@ -166,15 +168,16 @@ namespace MonoTests.Remoting [Test] public void TestTcpChannel () { + var port = NetworkHelpers.FindFreePort (); IDictionary props = new Hashtable (); props ["name"] = Guid.NewGuid ().ToString("N"); - props ["port"] = 18191; + props ["port"] = port; TcpChannel chan = new TcpChannel (props, null, null); ChannelServices.RegisterChannel (chan); try { Register > ("gentcptest.rem"); - RunTests (Connect > ("tcp://localhost:18191/gentcptest.rem")); + RunTests (Connect > ($"tcp://localhost:{port}/gentcptest.rem")); } finally { ChannelServices.UnregisterChannel (chan); } diff --git a/mcs/class/System.Runtime.Remoting/Test/HttpBugTests.cs b/mcs/class/System.Runtime.Remoting/Test/HttpBugTests.cs index c809f96c940..553c58a580b 100644 --- a/mcs/class/System.Runtime.Remoting/Test/HttpBugTests.cs +++ b/mcs/class/System.Runtime.Remoting/Test/HttpBugTests.cs @@ -7,6 +7,8 @@ using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Http; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.Remoting.Http { //Test for Bug 324362 - SoapFormatter cannot deserialize the same MBR twice @@ -67,13 +69,14 @@ namespace MonoTests.Remoting.Http [Test] public void Main () { - channel = new HttpChannel (3344); + var port = NetworkHelpers.FindFreePort (); + channel = new HttpChannel (port); ChannelServices.RegisterChannel (channel); RemotingConfiguration.RegisterWellKnownServiceType (typeof (Bug321420),"Server.soap", WellKnownObjectMode.Singleton); Bug321420 s = (Bug321420) Activator.GetObject (typeof - (Bug321420), "http://localhost:3344/Server.soap"); + (Bug321420), $"http://localhost:{port}/Server.soap"); // this works: s.Method ("a", "b"); s.Method ("a", "a"); @@ -98,7 +101,7 @@ namespace MonoTests.Remoting.Http public void Main () { Foo foo = (Foo) Activator.GetObject (typeof (Foo), - "http://localhost:4321/Test"); + $"http://localhost:{server.HttpPort}/Test"); Bar bar = foo.Login (); if (bar != null) @@ -142,7 +145,8 @@ namespace MonoTests.Remoting.Http public void Start () { - c = new HttpChannel (4321); + HttpPort = NetworkHelpers.FindFreePort (); + c = new HttpChannel (HttpPort); ChannelServices.RegisterChannel (c); Type t = typeof(Foo); @@ -155,6 +159,8 @@ namespace MonoTests.Remoting.Http c.StopListening (null); ChannelServices.UnregisterChannel (c); } + + public int HttpPort { get; private set; } } } @@ -172,7 +178,7 @@ namespace MonoTests.Remoting.Http ChannelServices.RegisterChannel (channel); MarshalByRefObject obj = (MarshalByRefObject) RemotingServices.Connect ( typeof (IFactorial), - "http://localhost:60000/MyEndPoint"); + $"http://localhost:{server.HttpPort}/MyEndPoint"); IFactorial cal = (IFactorial) obj; Assert.AreEqual (cal.CalculateFactorial (4), 24); } @@ -209,7 +215,8 @@ namespace MonoTests.Remoting.Http public void Start () { - c = new HttpChannel (60000); + HttpPort = NetworkHelpers.FindFreePort (); + c = new HttpChannel (HttpPort); ChannelServices.RegisterChannel (c); Type t = typeof(Calculator); @@ -222,6 +229,8 @@ namespace MonoTests.Remoting.Http c.StopListening (null); ChannelServices.UnregisterChannel (c); } + + public int HttpPort { get; private set; } } public class Calculator : MarshalByRefObject, IFactorial diff --git a/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs b/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs index 02c6a532c00..0dd58aa38cb 100644 --- a/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs +++ b/mcs/class/System.Runtime.Remoting/Test/RemotingServicesTest.cs @@ -18,6 +18,8 @@ using System.Runtime.Remoting.Proxies; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; +using MonoTests.Helpers; + namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal { // We need our own proxy to intercept messages to remote object @@ -286,17 +288,18 @@ namespace MonoTests.Remoting [Test] public void Connect () { + var port = NetworkHelpers.FindFreePort (); MarshalObject objMarshal = NewMarshalObject (); IDictionary props = new Hashtable (); props ["name"] = objMarshal.Uri; - props ["port"] = 1236; + props ["port"] = port; TcpChannel chn = new TcpChannel (props, null, null); ChannelServices.RegisterChannel (chn); try { RemotingServices.Marshal (objMarshal, objMarshal.Uri); - MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1236/" + objMarshal.Uri); + MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), $"tcp://localhost:{port}/" + objMarshal.Uri); Assert.IsTrue (RemotingServices.IsTransparentProxy (objRem), "#A08"); } finally { ChannelServices.UnregisterChannel (chn); @@ -308,17 +311,18 @@ namespace MonoTests.Remoting [Test] public void MarshalThrowException () { + var port = NetworkHelpers.FindFreePort (); MarshalObject objMarshal = NewMarshalObject (); IDictionary props = new Hashtable (); props ["name"] = objMarshal.Uri; - props ["port"] = 1237; + props ["port"] = port; TcpChannel chn = new TcpChannel (props, null, null); ChannelServices.RegisterChannel (chn); try { RemotingServices.Marshal (objMarshal, objMarshal.Uri); - MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), "tcp://localhost:1237/" + objMarshal.Uri); + MarshalObject objRem = (MarshalObject) RemotingServices.Connect (typeof (MarshalObject), $"tcp://localhost:{port}/" + objMarshal.Uri); // This line should throw a RemotingException // It is forbidden to export an object which is not // a real object @@ -341,14 +345,15 @@ namespace MonoTests.Remoting [Test] public void ExecuteMessage () { - TcpChannel chn = new TcpChannel (1235); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { MarshalObject objMarshal = NewMarshalObject (); RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall); // use a proxy to catch the Message - MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri)); + MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/" + objMarshal.Uri)); MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy (); @@ -373,12 +378,13 @@ namespace MonoTests.Remoting [Test] public void IsOneWay () { - TcpChannel chn = new TcpChannel (1238); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject.rem", WellKnownObjectMode.Singleton); - MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1238/MarshalObject.rem"); + MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/MarshalObject.rem"); Assert.IsTrue (RemotingServices.IsTransparentProxy (objRem), "#A10.1"); @@ -396,13 +402,14 @@ namespace MonoTests.Remoting [Test] public void GetObjRefForProxy () { - TcpChannel chn = new TcpChannel (1239); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { // Register le factory as a SAO RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObjectFactory), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap", WellKnownObjectMode.Singleton); - MarshalObjectFactory objFactory = (MarshalObjectFactory) Activator.GetObject (typeof (MarshalObjectFactory), "tcp://localhost:1239/MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap"); + MarshalObjectFactory objFactory = (MarshalObjectFactory) Activator.GetObject (typeof (MarshalObjectFactory), $"tcp://localhost:{port}/MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap"); // Get a new "CAO" MarshalObject objRem = objFactory.GetNewMarshalObject (); @@ -419,12 +426,13 @@ namespace MonoTests.Remoting [Test] public void GetRealProxy () { - TcpChannel chn = new TcpChannel (1241); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton); - MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalByRefObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap")); + MyProxy proxy = new MyProxy (typeof (MarshalObject), (MarshalByRefObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap")); MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy (); RealProxy rp = RemotingServices.GetRealProxy (objRem); @@ -440,14 +448,15 @@ namespace MonoTests.Remoting [Test] public void SetObjectUriForMarshal () { - TcpChannel chn = new TcpChannel (1242); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { MarshalObject objRem = NewMarshalObject (); RemotingServices.SetObjectUriForMarshal (objRem, objRem.Uri); RemotingServices.Marshal (objRem); - objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1242/" + objRem.Uri); + objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/" + objRem.Uri); Assert.IsNotNull (objRem, "#A14"); } finally { ChannelServices.UnregisterChannel (chn); @@ -459,7 +468,8 @@ namespace MonoTests.Remoting [Test] public void GetServeurTypeForUri () { - TcpChannel chn = new TcpChannel (1243); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); Type type = typeof (MarshalObject); ChannelServices.RegisterChannel (chn); try { @@ -480,12 +490,13 @@ namespace MonoTests.Remoting [Category ("NotWorking")] public void IsObjectOutOf () { - TcpChannel chn = new TcpChannel (1245); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "MarshalObject2.rem", WellKnownObjectMode.Singleton); - MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1245/MarshalObject2.rem"); + MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/MarshalObject2.rem"); Assert.IsTrue (RemotingServices.IsObjectOutOfAppDomain (objRem), "#A16"); Assert.IsTrue (RemotingServices.IsObjectOutOfContext (objRem), "#A17"); @@ -501,14 +512,15 @@ namespace MonoTests.Remoting [Test] public void ApplicationNameTest () { + var port = NetworkHelpers.FindFreePort (); RemotingConfiguration.ApplicationName = "app"; - TcpChannel chn = new TcpChannel (1246); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "obj3.rem", WellKnownObjectMode.Singleton); - MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/app/obj3.rem"); - MarshalObject objRem2 = (MarshalObject) Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1246/obj3.rem"); + MarshalObject objRem = (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/app/obj3.rem"); + MarshalObject objRem2 = (MarshalObject) Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/obj3.rem"); Assert.IsTrue (RemotingServices.IsTransparentProxy (objRem), "#AN1"); Assert.IsTrue (RemotingServices.IsTransparentProxy (objRem2), "#AN2"); @@ -528,13 +540,14 @@ namespace MonoTests.Remoting [Test] public void GetObjectWithChannelDataTest () { - TcpChannel chn = new TcpChannel (1247); + var port = NetworkHelpers.FindFreePort (); + TcpChannel chn = new TcpChannel (port); ChannelServices.RegisterChannel (chn); try { RemotingConfiguration.RegisterWellKnownServiceType (typeof (MarshalObject), "getobjectwithchanneldata.rem", WellKnownObjectMode.Singleton); string channelData = "test"; - Assert.IsNotNull (Activator.GetObject (typeof (MarshalObject), "tcp://localhost:1247/getobjectwithchanneldata.rem", channelData), "#01"); + Assert.IsNotNull (Activator.GetObject (typeof (MarshalObject), $"tcp://localhost:{port}/getobjectwithchanneldata.rem", channelData), "#01"); } finally { ChannelServices.UnregisterChannel (chn); } @@ -544,28 +557,29 @@ namespace MonoTests.Remoting [Ignore ("We cannot test RemotingConfiguration.Configure() because it keeps channels registered. If we really need to test it, do it as a standalone case")] public void ConnectProxyCast () { + var port = NetworkHelpers.FindFreePort (); object o; RemotingConfiguration.Configure (null); - o = RemotingServices.Connect (typeof (MarshalByRefObject), "tcp://localhost:3434/ff1.rem"); + o = RemotingServices.Connect (typeof (MarshalByRefObject), $"tcp://localhost:{port}/ff1.rem"); Assert.IsInstanceOfType (typeof (DD), o, "#m1"); Assert.IsInstanceOfType (typeof (A), o, "#m2"); Assert.IsInstanceOfType (typeof (B), o, "#m3"); AssertHelper.IsNotInstanceOfType (typeof (CC), !(o is CC), "#m4"); - o = RemotingServices.Connect (typeof (A), "tcp://localhost:3434/ff3.rem"); + o = RemotingServices.Connect (typeof (A), $"tcp://localhost:{port}/ff3.rem"); Assert.IsInstanceOfType (typeof (DD), o, "#a1"); Assert.IsInstanceOfType (typeof (A), o, "#a2"); Assert.IsInstanceOfType (typeof (B), o, "#a3"); AssertHelper.IsNotInstanceOfType (typeof (CC), o, "#a4"); - o = RemotingServices.Connect (typeof (DD), "tcp://localhost:3434/ff4.rem"); + o = RemotingServices.Connect (typeof (DD), $"tcp://localhost:{port}/ff4.rem"); Assert.IsInstanceOfType (typeof (DD), o, "#d1"); Assert.IsInstanceOfType (typeof (A), o, "#d2"); Assert.IsInstanceOfType (typeof (B), o, "#d3"); AssertHelper.IsNotInstanceOfType (typeof (CC), o, "#d4"); - o = RemotingServices.Connect (typeof (CC), "tcp://localhost:3434/ff5.rem"); + o = RemotingServices.Connect (typeof (CC), $"tcp://localhost:{port}/ff5.rem"); AssertHelper.IsNotInstanceOfType (typeof (DD), o, "#c1"); Assert.IsInstanceOfType (typeof (A), o, "#c2"); Assert.IsInstanceOfType (typeof (B), o, "#c3"); diff --git a/mcs/class/System.Runtime.Remoting/Test/System.Runtime.Remoting.Channels.Tcp/TcpChannelTest.cs b/mcs/class/System.Runtime.Remoting/Test/System.Runtime.Remoting.Channels.Tcp/TcpChannelTest.cs index 9074921c78d..c49df5bd0dc 100644 --- a/mcs/class/System.Runtime.Remoting/Test/System.Runtime.Remoting.Channels.Tcp/TcpChannelTest.cs +++ b/mcs/class/System.Runtime.Remoting/Test/System.Runtime.Remoting.Channels.Tcp/TcpChannelTest.cs @@ -35,6 +35,8 @@ using System.Runtime.Remoting.Channels.Tcp; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.Remoting { [TestFixture] @@ -50,9 +52,10 @@ namespace MonoTests.Remoting MarshalObject marshal = new MarshalObject (); + var port = NetworkHelpers.FindFreePort (); IDictionary props = new Hashtable (); props ["name"] = "marshal channel"; - props ["port"] = 1236; + props ["port"] = port; props ["bindTo"] = IPAddress.Loopback.ToString (); chn = new TcpChannel (props, null, null); @@ -62,11 +65,11 @@ namespace MonoTests.Remoting urls = chn.GetUrlsForUri (SERVICE_URI); Assert.IsNotNull (urls, "#A2"); Assert.AreEqual (1, urls.Length, "#A3"); - Assert.AreEqual ("tcp://" + IPAddress.Loopback.ToString () + ":1236/" + SERVICE_URI, urls [0], "#A6"); + Assert.AreEqual ($"tcp://{IPAddress.Loopback.ToString ()}:{port}/{SERVICE_URI}", urls [0], "#A6"); ds = chn.ChannelData as ChannelDataStore; Assert.IsNotNull (ds, "#A4"); Assert.AreEqual (1, ds.ChannelUris.Length, "#A5"); - Assert.AreEqual ("tcp://" + IPAddress.Loopback.ToString () + ":1236", ds.ChannelUris [0], "#A6"); + Assert.AreEqual ($"tcp://{IPAddress.Loopback.ToString ()}:{port}", ds.ChannelUris [0], "#A6"); ChannelServices.UnregisterChannel (chn); diff --git a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs index e2af0ca1f76..8f7365939eb 100644 --- a/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs +++ b/mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs @@ -7,6 +7,8 @@ using System.ServiceModel.Channels; using System.ServiceModel.Web; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.System.ServiceModel.Activation { class MyHostFactory : WebScriptServiceHostFactory @@ -23,8 +25,9 @@ namespace MonoTests.System.ServiceModel.Activation [Test] public void CreateServiceHost () { + var port = NetworkHelpers.FindFreePort (); var f = new MyHostFactory (); - var host = f.DoCreateServiceHost (typeof (TestService), new Uri [] {new Uri ("http://localhost:37564")}); + var host = f.DoCreateServiceHost (typeof (TestService), new Uri [] {new Uri ($"http://localhost:{port}")}); Assert.IsFalse (host is WebServiceHost, "#1"); host.Open (); host.Close (); @@ -34,8 +37,9 @@ namespace MonoTests.System.ServiceModel.Activation [ExpectedException (typeof (NotSupportedException))] public void ResponseWrappedIsInvalid () { + var port = NetworkHelpers.FindFreePort (); var f = new MyHostFactory (); - var host = f.DoCreateServiceHost (typeof (TestService2), new Uri [] {new Uri ("http://localhost:37564")}); + var host = f.DoCreateServiceHost (typeof (TestService2), new Uri [] {new Uri ($"http://localhost:{port}")}); host.Open (); // should raise an error here. } @@ -43,8 +47,9 @@ namespace MonoTests.System.ServiceModel.Activation [ExpectedException (typeof (InvalidOperationException))] public void MultipleContract () { + var port = NetworkHelpers.FindFreePort (); var f = new MyHostFactory (); - var host = f.DoCreateServiceHost (typeof (TestServiceMultiple), new Uri [] {new Uri ("http://localhost:37564")}); + var host = f.DoCreateServiceHost (typeof (TestServiceMultiple), new Uri [] {new Uri ($"http://localhost:{port}")}); host.Open (); } diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/CustomPeerResolverService.cs b/mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/CustomPeerResolverService.cs index 8807873a86d..6a225a25f52 100644 --- a/mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/CustomPeerResolverService.cs +++ b/mcs/class/System.ServiceModel/System.ServiceModel.PeerResolvers/CustomPeerResolverService.cs @@ -45,11 +45,16 @@ namespace System.ServiceModel.PeerResolvers public class CustomPeerResolverService : IPeerResolverContract { static ServiceHost localhost; + static int port; static void SetupCustomPeerResolverServiceHost () { + string customPort = Environment.GetEnvironmentVariable ("MONO_CUSTOMPEERRESOLVERSERVICE_PORT"); + if (customPort == null || !int.TryParse (customPort, out port)) + port = 8931; + // launch peer resolver service locally only when it does not seem to be running ... - var t = new TcpListener (8931); + var t = new TcpListener (port); try { t.Start (); t.Stop (); @@ -59,7 +64,7 @@ namespace System.ServiceModel.PeerResolvers Console.WriteLine ("WARNING: it is running peer resolver service locally. This means, the node registration is valid only within this application domain..."); var host = new ServiceHost (new LocalPeerResolverService (TextWriter.Null)); host.Description.Behaviors.Find ().InstanceContextMode = InstanceContextMode.Single; - host.AddServiceEndpoint (typeof (ICustomPeerResolverContract), new BasicHttpBinding (), "http://localhost:8931"); + host.AddServiceEndpoint (typeof (ICustomPeerResolverContract), new BasicHttpBinding (), $"http://localhost:{port}"); localhost = host; host.Open (); } @@ -70,7 +75,7 @@ namespace System.ServiceModel.PeerResolvers public CustomPeerResolverService () { - client = ChannelFactory.CreateChannel (new BasicHttpBinding (), new EndpointAddress ("http://localhost:8931")); + client = ChannelFactory.CreateChannel (new BasicHttpBinding (), new EndpointAddress ($"http://localhost:{port}")); refresh_interval = new TimeSpan (0, 10, 0); cleanup_interval = new TimeSpan (0, 1, 0); diff --git a/mcs/class/System.ServiceModel/Test/FeatureBased/TestFixtureBase.cs b/mcs/class/System.ServiceModel/Test/FeatureBased/TestFixtureBase.cs index 211627b39c6..80513455ec1 100644 --- a/mcs/class/System.ServiceModel/Test/FeatureBased/TestFixtureBase.cs +++ b/mcs/class/System.ServiceModel/Test/FeatureBased/TestFixtureBase.cs @@ -14,14 +14,17 @@ using MonoTests.stand_alone.WebHarness; using System.ServiceModel.Dispatcher; using System.Collections.ObjectModel; +using MonoTests.Helpers; + namespace MonoTests.Features { public class Configuration { static Configuration() { + var port = NetworkHelpers.FindFreePort (); onlyServers = Boolean.Parse (ConfigurationManager.AppSettings ["onlyServers"] ?? "false"); onlyClients = Boolean.Parse (ConfigurationManager.AppSettings ["onlyClients"] ?? "false"); - endpointBase = ConfigurationManager.AppSettings ["endpointBase"] ?? "http://localhost:9999/"; + endpointBase = ConfigurationManager.AppSettings ["endpointBase"] ?? $"http://localhost:{port}/"; if (!endpointBase.EndsWith ("/")) endpointBase = endpointBase + '/'; logMessages = Boolean.Parse (ConfigurationManager.AppSettings ["logMessages"] ?? "false"); diff --git a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs index 593ded1b011..398a29a9847 100644 --- a/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs +++ b/mcs/class/System.ServiceModel/Test/System.ServiceModel.PeerResolvers/CustomPeerResolverServiceTest.cs @@ -16,6 +16,8 @@ using System.Text; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.System.ServiceModel.PeerResolvers { [TestFixture] @@ -26,6 +28,8 @@ namespace MonoTests.System.ServiceModel.PeerResolvers [SetUp] protected void SetUp () { + var port = NetworkHelpers.FindFreePort (); + Environment.SetEnvironmentVariable ("MONO_CUSTOMPEERRESOLVERSERVICE_PORT", port.ToString ()); cprs = new CustomPeerResolverService (); } diff --git a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs index 4bdfd61de26..5925388413a 100755 --- a/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs +++ b/mcs/class/System/Test/System.Net.Sockets/SocketTest.cs @@ -30,9 +30,7 @@ namespace MonoTests.System.Net.Sockets [TestFixture] public class SocketTest { - // note: also used in SocketCas tests public const string BogusAddress = "192.168.244.244"; - public const int BogusPort = 23483; [Test] #if FEATURE_NO_BSD_SOCKETS @@ -94,7 +92,7 @@ namespace MonoTests.System.Net.Sockets public void BogusEndConnect () { IPAddress ipOne = IPAddress.Parse (BogusAddress); - IPEndPoint ipEP = new IPEndPoint (ipOne, BogusPort); + IPEndPoint ipEP = new IPEndPoint (ipOne, NetworkHelpers.FindFreePort ()); Socket sock = new Socket (ipEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp); IAsyncResult ar = sock.BeginConnect (ipEP, null, null); @@ -501,8 +499,7 @@ namespace MonoTests.System.Net.Sockets Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, - BogusPort); + IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint (); SocketError_event.Reset (); @@ -745,8 +742,7 @@ namespace MonoTests.System.Net.Sockets Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, - BogusPort); + IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint (); Assert.AreEqual (false, sock.IsBound, "IsBoundTcp #1"); @@ -780,8 +776,7 @@ namespace MonoTests.System.Net.Sockets Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); - IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, - BogusPort); + IPEndPoint ep = NetworkHelpers.LocalEphemeralEndPoint (); Assert.AreEqual (false, sock.IsBound, "IsBoundUdp #1"); @@ -1739,13 +1734,14 @@ namespace MonoTests.System.Net.Sockets [Test] public void BeginConnectAddressPortNull () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = null; try { - sock.BeginConnect (ip, 1244, BCCallback, + sock.BeginConnect (ip, port, BCCallback, sock); Assert.Fail ("BeginConnectAddressPortNull #1"); } catch (ArgumentNullException) { @@ -1782,6 +1778,7 @@ namespace MonoTests.System.Net.Sockets [ExpectedException (typeof(ObjectDisposedException))] public void BeginConnectAddressPortClosed () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -1789,7 +1786,7 @@ namespace MonoTests.System.Net.Sockets sock.Close (); - sock.BeginConnect (ip, 1244, BCCallback, sock); + sock.BeginConnect (ip, port, BCCallback, sock); } [Test] @@ -1911,13 +1908,14 @@ namespace MonoTests.System.Net.Sockets [Test] public void BeginConnectMultipleNull () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress[] ips = null; try { - sock.BeginConnect (ips, 1246, BCCallback, + sock.BeginConnect (ips, port, BCCallback, sock); Assert.Fail ("BeginConnectMultipleNull #1"); } catch (ArgumentNullException) { @@ -1961,6 +1959,7 @@ namespace MonoTests.System.Net.Sockets [ExpectedException (typeof(ObjectDisposedException))] public void BeginConnectMultipleClosed () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -1973,7 +1972,7 @@ namespace MonoTests.System.Net.Sockets sock.Close (); - sock.BeginConnect (ips, 1247, BCCallback, sock); + sock.BeginConnect (ips, port, BCCallback, sock); } [Test] @@ -2248,13 +2247,14 @@ namespace MonoTests.System.Net.Sockets [Test] public void ConnectAddressPortNull () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = null; try { - sock.Connect (ip, 1249); + sock.Connect (ip, port); Assert.Fail ("ConnectAddressPortNull #1"); } catch (ArgumentNullException) { } finally { @@ -2290,6 +2290,7 @@ namespace MonoTests.System.Net.Sockets [ExpectedException (typeof(ObjectDisposedException))] public void ConnectAddressPortClosed () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -2297,7 +2298,7 @@ namespace MonoTests.System.Net.Sockets sock.Close (); - sock.Connect (ip, 1250); + sock.Connect (ip, port); } [Test] @@ -2397,13 +2398,14 @@ namespace MonoTests.System.Net.Sockets [Test] public void ConnectMultipleNull () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress[] ips = null; try { - sock.Connect (ips, 1251); + sock.Connect (ips, port); Assert.Fail ("ConnectMultipleNull #1"); } catch (ArgumentNullException) { } finally { @@ -2445,6 +2447,7 @@ namespace MonoTests.System.Net.Sockets [ExpectedException (typeof(ObjectDisposedException))] public void ConnectMultipleClosed () { + var port = NetworkHelpers.FindFreePort (); Socket sock = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -2457,7 +2460,7 @@ namespace MonoTests.System.Net.Sockets sock.Close (); - sock.Connect (ips, 1252); + sock.Connect (ips, port); } [Test] @@ -4301,7 +4304,7 @@ namespace MonoTests.System.Net.Sockets IPv6MulticastOption option = new IPv6MulticastOption ( IPAddress.Parse ("ff02::1")); - s.Bind (new IPEndPoint (IPAddress.IPv6Any, 1902)); + s.Bind (new IPEndPoint (IPAddress.IPv6Any, 0)); s.SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.AddMembership, option); s.SetSocketOption (SocketOptionLevel.IPv6, SocketOptionName.DropMembership, diff --git a/mcs/class/System/Test/System.Net.Sockets/TcpClientTest.cs b/mcs/class/System/Test/System.Net.Sockets/TcpClientTest.cs index cefe3bebc59..d827ae4de36 100644 --- a/mcs/class/System/Test/System.Net.Sockets/TcpClientTest.cs +++ b/mcs/class/System/Test/System.Net.Sockets/TcpClientTest.cs @@ -155,7 +155,7 @@ namespace MonoTests.System.Net.Sockets TcpClient client = new TcpClient (); IPAddress[] ipAddresses = null; - client.Connect (ipAddresses, 1234); + client.Connect (ipAddresses, NetworkHelpers.FindFreePort ()); } [Test] @@ -170,7 +170,7 @@ namespace MonoTests.System.Net.Sockets ipAddresses[0] = IPAddress.Any; try { - client.Connect (ipAddresses, 1234); + client.Connect (ipAddresses, NetworkHelpers.FindFreePort ()); Assert.Fail ("ConnectMultiAny #1"); } catch (SocketException ex) { Assert.AreEqual (10049, ex.ErrorCode, "ConnectMultiAny #2"); @@ -191,7 +191,7 @@ namespace MonoTests.System.Net.Sockets ipAddresses[0] = IPAddress.Loopback; try { - client.Connect (ipAddresses, 1234); + client.Connect (ipAddresses, NetworkHelpers.FindFreePort ()); Assert.Fail ("ConnectMultiRefused #1"); } catch (SocketException ex) { Assert.AreEqual (10061, ex.ErrorCode, "ConnectMultiRefused #2"); diff --git a/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs b/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs index 29ab8ef2ca6..1d2373b6215 100644 --- a/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs +++ b/mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs @@ -13,6 +13,8 @@ using System.Threading.Tasks; using NUnit.Framework; +using MonoTests.Helpers; + namespace MonoTests.System.Net.Sockets { [TestFixture] public class UdpClientTest { @@ -212,7 +214,7 @@ namespace MonoTests.System.Net.Sockets { IPEndPoint localEP; IPEndPoint clientEP; - clientEP = new IPEndPoint (IPAddress.Loopback, 8001); + clientEP = new IPEndPoint (IPAddress.Loopback, NetworkHelpers.FindFreePort ()); using (MyUdpClient client = new MyUdpClient (clientEP)) { s = client.Client; @@ -381,9 +383,7 @@ namespace MonoTests.System.Net.Sockets { Socket s; IPEndPoint localEP; - // Bug #5503 - // UDP port 0 doesn't seem to be valid. - using (MyUdpClient client = new MyUdpClient ("127.0.0.1", 53)) + using (MyUdpClient client = new MyUdpClient ("127.0.0.1", NetworkHelpers.FindFreePort ())) { s = client.Client; Assert.IsNotNull (s, "#A:Client"); @@ -481,7 +481,7 @@ namespace MonoTests.System.Net.Sockets { byte[] bytes = new byte[] {10, 11, 12, 13}; try { - client.Send (bytes, bytes.Length, new IPEndPoint (IPAddress.Broadcast, 1235)); + client.Send (bytes, bytes.Length, new IPEndPoint (IPAddress.Broadcast, NetworkHelpers.FindFreePort ())); } finally { client.Close (); } @@ -495,7 +495,7 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = IPAddress.Parse ("224.0.0.23"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0))) { client.JoinMulticastGroup (mcast_addr); } } @@ -511,7 +511,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = IPAddress.Parse ("ff02::1"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0))) { client.JoinMulticastGroup (mcast_addr); } } @@ -522,7 +522,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void JoinMulticastGroup1_MulticastAddr_Null () { - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0))) { try { client.JoinMulticastGroup ((IPAddress) null); Assert.Fail ("#1"); @@ -543,7 +543,7 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = null; - UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234)); + UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0)); client.Close (); try { client.JoinMulticastGroup (mcast_addr); @@ -578,7 +578,7 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = IPAddress.Parse ("224.0.0.23"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0))) { try { client.JoinMulticastGroup (0, mcast_addr); Assert.Fail ("#1"); @@ -606,7 +606,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = IPAddress.Parse ("ff02::1"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0))) { client.JoinMulticastGroup (0, mcast_addr); } } @@ -617,7 +617,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void JoinMulticastGroup2_MulticastAddr_Null () { - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0))) { try { client.JoinMulticastGroup (0, (IPAddress) null); Assert.Fail ("#1"); @@ -641,7 +641,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = null; - UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234)); + UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0)); client.Close (); try { client.JoinMulticastGroup (0, mcast_addr); @@ -676,11 +676,11 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = IPAddress.Parse ("224.0.0.23"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0))) { client.JoinMulticastGroup (mcast_addr, 0); } - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0))) { client.JoinMulticastGroup (mcast_addr, 255); } } @@ -696,11 +696,11 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = IPAddress.Parse ("ff02::1"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0))) { client.JoinMulticastGroup (mcast_addr, 0); } - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0))) { client.JoinMulticastGroup (mcast_addr, 255); } } @@ -711,7 +711,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void JoinMulticastGroup3_MulticastAddr_Null () { - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0))) { try { client.JoinMulticastGroup ((IPAddress) null, int.MaxValue); Assert.Fail ("#1"); @@ -732,7 +732,7 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = null; - UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234)); + UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0)); client.Close (); try { client.JoinMulticastGroup (mcast_addr, 0); @@ -768,7 +768,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = IPAddress.Parse ("224.0.0.23"); IPAddress local_addr = IPAddress.Any; - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0))) { client.JoinMulticastGroup (mcast_addr, local_addr); } } @@ -785,7 +785,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = IPAddress.Parse ("ff02::1"); IPAddress local_addr = IPAddress.IPv6Any; - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.IPv6Any, 0))) { try { client.JoinMulticastGroup (mcast_addr, local_addr); Assert.Fail ("#1"); @@ -810,7 +810,7 @@ namespace MonoTests.System.Net.Sockets { { IPAddress mcast_addr = IPAddress.Parse ("224.0.0.23"); - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0))) { try { client.JoinMulticastGroup (mcast_addr, (IPAddress) null); Assert.Fail ("#1"); @@ -829,7 +829,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void JoinMulticastGroup4_MulticastAddr_Null () { - using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 1234))) { + using (UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Loopback, 0))) { try { client.JoinMulticastGroup ((IPAddress) null, IPAddress.Loopback); Assert.Fail ("#1"); @@ -851,7 +851,7 @@ namespace MonoTests.System.Net.Sockets { IPAddress mcast_addr = null; IPAddress local_addr = null; - UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 1234)); + UdpClient client = new UdpClient (new IPEndPoint (IPAddress.Any, 0)); client.Close (); try { client.JoinMulticastGroup (mcast_addr, local_addr); @@ -885,18 +885,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void CloseInReceive () { - UdpClient client = null; - var rnd = new Random (); - for (int i = 0, max = 5; i < max; i++) { - int port = rnd.Next (1025, 65534); - try { - client = new UdpClient (port); - break; - } catch (Exception) { - if (i == max - 1) - throw; - } - } + UdpClient client = new UdpClient (NetworkHelpers.FindFreePort ()); ManualResetEvent ready = new ManualResetEvent (false); bool got_exc = false; @@ -928,7 +917,7 @@ namespace MonoTests.System.Net.Sockets { #endif public void JoinMulticastGroupWithLocal () { - UdpClient client = new UdpClient (9001); + UdpClient client = new UdpClient (0); IPAddress mcast_addr = IPAddress.Parse ("224.0.0.24"); IPAddress local_addr = IPAddress.Any; @@ -995,7 +984,7 @@ namespace MonoTests.System.Net.Sockets { IPEndPoint ep = null; foreach (IPAddress a in addresses) { if (a.AddressFamily == AddressFamily.InterNetwork) { - ep = new IPEndPoint (a, 1236); + ep = new IPEndPoint (a, NetworkHelpers.FindFreePort ()); break; } } @@ -1035,13 +1024,14 @@ namespace MonoTests.System.Net.Sockets { #endif public void BeginReceive () { - UdpClient client = new UdpClient (1237); + var port = NetworkHelpers.FindFreePort (); + UdpClient client = new UdpClient (port); BRCalledBack.Reset (); client.BeginReceive (BRCallback, client); - IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1237); + IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, port); byte[] send_bytes = new byte[] {10, 11, 12, 13}; client.Send (send_bytes, send_bytes.Length, ep); @@ -1063,8 +1053,9 @@ namespace MonoTests.System.Net.Sockets { #endif public void Available () { - using (UdpClient client = new UdpClient (1238)) { - IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1238); + var port = NetworkHelpers.FindFreePort (); + using (UdpClient client = new UdpClient (port)) { + IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, port); byte[] bytes = new byte[] {10, 11, 12, 13}; int res = client.Send (bytes, bytes.Length, ep); @@ -1129,7 +1120,7 @@ namespace MonoTests.System.Net.Sockets { [Category ("NotWorking")] // Not supported on Linux public void ExclusiveAddressUseBound () { - UdpClient client = new UdpClient (1239); + UdpClient client = new UdpClient (0); client.ExclusiveAddressUse = true; @@ -1158,12 +1149,13 @@ namespace MonoTests.System.Net.Sockets { if (!Socket.OSSupportsIPv6) Assert.Ignore ("IPv6 not enabled."); - int PORT = 9997; - using(var udpClient = new UdpClient (PORT, AddressFamily.InterNetworkV6)) - using(var udpClient2 = new UdpClient (PORT+1, AddressFamily.InterNetworkV6)) + int port1 = NetworkHelpers.FindFreePort (); + int port2 = NetworkHelpers.FindFreePort (); + using(var udpClient = new UdpClient (port1, AddressFamily.InterNetworkV6)) + using(var udpClient2 = new UdpClient (port2, AddressFamily.InterNetworkV6)) { var dataSent = new byte [] {1,2,3}; - udpClient2.SendAsync (dataSent, dataSent.Length, "::1", PORT); + udpClient2.SendAsync (dataSent, dataSent.Length, "::1", port1); IPEndPoint endPoint = new IPEndPoint (IPAddress.IPv6Any, 0); var data = udpClient.Receive (ref endPoint); diff --git a/mcs/class/System/Test/System.Net/HttpListenerPrefixCollectionTest.cs b/mcs/class/System/Test/System.Net/HttpListenerPrefixCollectionTest.cs index b09a8180eaf..20763df5802 100644 --- a/mcs/class/System/Test/System.Net/HttpListenerPrefixCollectionTest.cs +++ b/mcs/class/System/Test/System.Net/HttpListenerPrefixCollectionTest.cs @@ -31,6 +31,8 @@ using System.Net; using NUnit.Framework; using HLPC=System.Net.HttpListenerPrefixCollection; +using MonoTests.Helpers; + namespace MonoTests.System.Net { [TestFixture] public class HttpListenerPrefixCollectionTest { @@ -68,10 +70,11 @@ namespace MonoTests.System.Net { #endif public void AddOne () { + var port = NetworkHelpers.FindFreePort (); HttpListener listener = new HttpListener (); HLPC coll = listener.Prefixes; listener.Start (); - coll.Add ("http://127.0.0.1:8181/"); + coll.Add ($"http://127.0.0.1:{port}/"); Assert.AreEqual (1, coll.Count, "Count"); Assert.IsFalse (coll.IsReadOnly, "IsReadOnly"); Assert.IsFalse (coll.IsSynchronized, "IsSynchronized"); @@ -84,10 +87,11 @@ namespace MonoTests.System.Net { #endif public void Duplicate () { + var port = NetworkHelpers.FindFreePort (); HttpListener listener = new HttpListener (); HLPC coll = listener.Prefixes; - coll.Add ("http://127.0.0.1:8181/"); - coll.Add ("http://127.0.0.1:8181/"); + coll.Add ($"http://127.0.0.1:{port}/"); + coll.Add ($"http://127.0.0.1:{port}/"); listener.Start (); Assert.AreEqual (1, coll.Count, "Count"); Assert.IsFalse (coll.IsReadOnly, "IsReadOnly"); diff --git a/mcs/class/corlib/Test/System.Runtime.Remoting/RemotingServicesTest.cs b/mcs/class/corlib/Test/System.Runtime.Remoting/RemotingServicesTest.cs deleted file mode 100644 index 8582663a36b..00000000000 --- a/mcs/class/corlib/Test/System.Runtime.Remoting/RemotingServicesTest.cs +++ /dev/null @@ -1,529 +0,0 @@ -// -// System.Runtime.Remoting.RemotingServices NUnit V2.0 test class -// -// Author Jean-Marc ANDRE (jean-marc.andre@polymtl.ca) -// -// ToDo: I didn't write test functions for the method not yep -// implemented by Mono - -using System; -using System.Collections; -using NUnit.Framework; -using System.Reflection; -using System.Runtime.Remoting; -using System.Threading; -using System.Runtime.Remoting.Activation; -using System.Runtime.Remoting.Messaging; -using System.Runtime.Remoting.Proxies; -using System.Runtime.Remoting.Channels; -using System.Runtime.Remoting.Channels.Tcp; - -namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal -{ - // We need our own proxy to intercept messages to remote object - // and forward them using RemotingServices.ExecuteMessage - public class MyProxy: RealProxy - { - MarshalByRefObject target; - IMessageSink _sink; - MethodBase _mthBase; - bool methodOverloaded = false; - - public MethodBase MthBase - { - get{ return _mthBase;} - } - - public bool IsMethodOverloaded - { - get{return methodOverloaded;} - } - - public MyProxy(Type serverType, MarshalByRefObject target): base(serverType) - { - this.target = target; - - IChannel[] registeredChannels = ChannelServices.RegisteredChannels; - string ObjectURI; - - // A new IMessageSink chain has to be created - // since the RemotingServices.GetEnvoyChainForProxy() is not yet - // implemented. - foreach(IChannel channel in registeredChannels) - { - IChannelSender channelSender = channel as IChannelSender; - if(channelSender != null) - { - _sink = (IMessageSink) channelSender.CreateMessageSink(RemotingServices.GetObjectUri(target), null, out ObjectURI); - } - } - - } - - // Messages will be intercepted here and redirected - // to another object. - public override IMessage Invoke(IMessage msg) - { - if(msg is IConstructionCallMessage) - { - IActivator remActivator = (IActivator) RemotingServices.Connect(typeof(IActivator), "tcp://localhost:1234/RemoteActivationService.rem"); - IConstructionReturnMessage crm = remActivator.Activate((IConstructionCallMessage)msg); - return crm; - } - else - { - methodOverloaded = RemotingServices.IsMethodOverloaded((IMethodMessage)msg); - - _mthBase = RemotingServices.GetMethodBaseFromMethodMessage((IMethodMessage)msg); - MethodCallMessageWrapper mcm = new MethodCallMessageWrapper((IMethodCallMessage) msg); - mcm.Uri = RemotingServices.GetObjectUri((MarshalByRefObject)target); - MarshalByRefObject objRem = (MarshalByRefObject)Activator.CreateInstance(GetProxiedType()); - RemotingServices.ExecuteMessage((MarshalByRefObject)objRem, (IMethodCallMessage)msg); - IMessage rtnMsg = null; - - try - { - rtnMsg = _sink.SyncProcessMessage(msg); - } - catch(Exception e) - { - Console.WriteLine(e.Message); - } - - return rtnMsg; - } - } - } // end MyProxy - - // This class is used to create "CAO" - public class MarshalObjectFactory: MarshalByRefObject - { - public MarshalObject GetNewMarshalObject() - { - return new MarshalObject(); - } - } - - // A class used by the tests - public class MarshalObject: ContextBoundObject - { - public MarshalObject() - { - - } - - public MarshalObject(int id, string uri) - { - this.id = id; - this.uri = uri; - } - public int Id - { - get{return id;} - set{id = value;} - } - public string Uri - { - get{return uri;} - } - - public void Method1() - { - _called++; - methodOneWay = RemotingServices.IsOneWay(MethodBase.GetCurrentMethod()); - } - - public void Method2() - { - methodOneWay = RemotingServices.IsOneWay(MethodBase.GetCurrentMethod()); - } - - public void Method2(int i) - { - methodOneWay = RemotingServices.IsOneWay(MethodBase.GetCurrentMethod()); - - } - - [OneWay()] - public void Method3() - { - methodOneWay = RemotingServices.IsOneWay(MethodBase.GetCurrentMethod()); - - } - - public static int Called - { - get{return _called;} - } - - public static bool IsMethodOneWay - { - get{return methodOneWay;} - } - - - private static int _called; - private int id = 0; - private string uri; - private static bool methodOneWay = false; - } - - // Another class used by the tests - public class DerivedMarshalObject: MarshalObject - { - public DerivedMarshalObject(){} - - public DerivedMarshalObject(int id, string uri): base(id, uri) {} - } -} // namespace MonoTests.System.Runtime.Remoting.RemotingServicesInternal - -namespace MonoTests.System.Runtime.Remoting -{ - using MonoTests.System.Runtime.Remoting.RemotingServicesInternal; - - // The main test class - [TestFixture] - public class RemotingServicesTest - { - private static int MarshalObjectId = 0; - - public RemotingServicesTest() - { - MarshalObjectId = 0; - } - - // Helper function that create a new - // MarshalObject with an unique ID - private static MarshalObject NewMarshalObject() - { - string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject" + MarshalObjectId.ToString(); - MarshalObject objMarshal = new MarshalObject(MarshalObjectId, uri); - - MarshalObjectId++; - - return objMarshal; - } - - // Another helper function - private DerivedMarshalObject NewDerivedMarshalObject() - { - string uri = "MonoTests.System.Runtime.Remoting.RemotingServicesTest.DerivedMarshalObject" + MarshalObjectId.ToString(); - DerivedMarshalObject objMarshal = new DerivedMarshalObject(MarshalObjectId, uri); - - MarshalObjectId++; - - return objMarshal; - } - - // The two folling method test RemotingServices.Marshal() - [Test] - public void Marshal1() - { - - MarshalObject objMarshal = NewMarshalObject(); - ObjRef objRef = RemotingServices.Marshal(objMarshal); - - Assert.IsTrue(objRef.URI != null, "#A01"); - - MarshalObject objRem = (MarshalObject) RemotingServices.Unmarshal(objRef); - Assert.AreEqual(objMarshal.Id, objRem.Id, "#A02"); - - objRem.Id = 2; - Assert.AreEqual(objMarshal.Id, objRem.Id, "#A03"); - - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(objMarshal); - - objMarshal = NewMarshalObject(); - - objRef = RemotingServices.Marshal(objMarshal, objMarshal.Uri); - - Assert.IsTrue(objRef.URI.EndsWith(objMarshal.Uri), "#A04"); - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(objMarshal); - } - - [Test] - public void Marshal2() - { - DerivedMarshalObject derivedObjMarshal = NewDerivedMarshalObject(); - - ObjRef objRef = RemotingServices.Marshal(derivedObjMarshal, derivedObjMarshal.Uri, typeof(MarshalObject)); - - // Check that the type of the marshaled object is MarshalObject - Assert.IsTrue(objRef.TypeInfo.TypeName.StartsWith((typeof(MarshalObject)).ToString()), "#A05"); - - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(derivedObjMarshal); - } - - // Tests RemotingServices.GetObjectUri() - [Test] - public void GetObjectUri() - { - MarshalObject objMarshal = NewMarshalObject(); - - Assert.IsTrue(RemotingServices.GetObjectUri(objMarshal) == null, "#A06"); - - ObjRef objRef = RemotingServices.Marshal(objMarshal); - - Assert.IsTrue(RemotingServices.GetObjectUri(objMarshal) != null, "#A07"); - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(objMarshal); - } - - // Tests RemotingServices.Connect - [Test] - public void Connect() - { - MarshalObject objMarshal = NewMarshalObject(); - - IDictionary props = new Hashtable(); - props["name"] = objMarshal.Uri; - props["port"] = 1236; - TcpChannel chn = new TcpChannel(props, null, null); - ChannelServices.RegisterChannel(chn); - - RemotingServices.Marshal(objMarshal,objMarshal.Uri); - - MarshalObject objRem = (MarshalObject) RemotingServices.Connect(typeof(MarshalObject), "tcp://localhost:1236/" + objMarshal.Uri); - - Assert.IsTrue(RemotingServices.IsTransparentProxy(objRem), "#A08"); - - ChannelServices.UnregisterChannel(chn); - - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(objMarshal); - } - - // Tests RemotingServices.Marshal() - [Test] - [ExpectedException(typeof(RemotingException))] - public void MarshalThrowException() - { - MarshalObject objMarshal = NewMarshalObject(); - - IDictionary props = new Hashtable(); - props["name"] = objMarshal.Uri; - props["port"] = 1237; - TcpChannel chn = new TcpChannel(props, null, null); - ChannelServices.RegisterChannel(chn); - - RemotingServices.Marshal(objMarshal,objMarshal.Uri); - - MarshalObject objRem = (MarshalObject) RemotingServices.Connect(typeof(MarshalObject), "tcp://localhost:1237/" + objMarshal.Uri); - // This line sould throw a RemotingException - // It is forbidden to export an object which is not - // a real object - try - { - RemotingServices.Marshal(objRem, objMarshal.Uri); - } - catch(Exception e) - { - ChannelServices.UnregisterChannel(chn); - - // TODO: uncomment when RemotingServices.Disconnect is implemented - //RemotingServices.Disconnect(objMarshal); - - throw e; - } - } - - // Tests RemotingServices.ExecuteMessage() - // also tests GetMethodBaseFromMessage() - // IsMethodOverloaded() - [Test] - public void ExecuteMessage() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1235); - ChannelServices.RegisterChannel(chn); - - MarshalObject objMarshal = NewMarshalObject(); - RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), objMarshal.Uri, WellKnownObjectMode.SingleCall); - - // use a proxy to catch the Message - MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalObject) Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1235/" + objMarshal.Uri)); - - MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy(); - - objRem.Method1(); - - // Tests RemotingServices.GetMethodBaseFromMethodMessage() - AssertEquals("#A09","Method1",proxy.MthBase.Name); - Assert.IsTrue(!proxy.IsMethodOverloaded, "#A09.1"); - - objRem.Method2(); - Assert.IsTrue(proxy.IsMethodOverloaded, "#A09.2"); - - // Tests RemotingServices.ExecuteMessage(); - // If ExecuteMessage does it job well, Method1 should be called 2 times - Assert.AreEqual(2, MarshalObject.Called, "#A10"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - } - - // Tests the IsOneWay method - [Test] - public void IsOneWay() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1238); - ChannelServices.RegisterChannel(chn); - RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MarshalObject.rem", WellKnownObjectMode.Singleton); - - MarshalObject objRem = (MarshalObject) Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1238/MarshalObject.rem"); - - Assert.IsTrue(RemotingServices.IsTransparentProxy(objRem), "#A10.1"); - - objRem.Method1(); - Thread.Sleep(20); - Assert.IsTrue(!MarshalObject.IsMethodOneWay, "#A10.2"); - objRem.Method3(); - Thread.Sleep(20); - Assert.IsTrue(MarshalObject.IsMethodOneWay, "#A10.2"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - } - - [Test] - public void GetObjRefForProxy() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1239); - ChannelServices.RegisterChannel(chn); - - // Register le factory as a SAO - RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObjectFactory), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap", WellKnownObjectMode.Singleton); - - MarshalObjectFactory objFactory = (MarshalObjectFactory) Activator.GetObject(typeof(MarshalObjectFactory), "tcp://localhost:1239/MonoTests.System.Runtime.Remoting.RemotingServicesTest.Factory.soap"); - - // Get a new "CAO" - MarshalObject objRem = objFactory.GetNewMarshalObject(); - - ObjRef objRefRem = RemotingServices.GetObjRefForProxy((MarshalByRefObject)objRem); - - Assert.IsTrue(objRefRem != null, "#A11"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - } - - // Tests GetRealProxy - [Test] - public void GetRealProxy() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1241); - ChannelServices.RegisterChannel(chn); - - RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap", WellKnownObjectMode.Singleton); - - MyProxy proxy = new MyProxy(typeof(MarshalObject), (MarshalByRefObject)Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1241/MonoTests.System.Runtime.Remoting.RemotingServicesTest.MarshalObject.soap")); - MarshalObject objRem = (MarshalObject) proxy.GetTransparentProxy(); - - RealProxy rp = RemotingServices.GetRealProxy(objRem); - - Assert.IsTrue(rp != null, "#A12"); - Assert.AreEqual("MonoTests.System.Runtime.Remoting.RemotingServicesInternal.MyProxy", rp.GetType().ToString(), "#A13"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - } - - // Tests SetObjectUriForMarshal() - [Test] - public void SetObjectUriForMarshal() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1242); - ChannelServices.RegisterChannel(chn); - - MarshalObject objRem = NewMarshalObject(); - RemotingServices.SetObjectUriForMarshal(objRem, objRem.Uri); - RemotingServices.Marshal(objRem); - - objRem = (MarshalObject) Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1242/"+objRem.Uri); - Assert.IsTrue(objRem != null, "#A14"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - - } - - // Tests GetServeurTypeForUri() - [Test] - public void GetServeurTypeForUri() - { - TcpChannel chn = null; - Type type = typeof(MarshalObject); - try - { - chn = new TcpChannel(1243); - ChannelServices.RegisterChannel(chn); - - MarshalObject objRem = NewMarshalObject(); - RemotingServices.SetObjectUriForMarshal(objRem, objRem.Uri); - RemotingServices.Marshal(objRem); - - Type typeRem = RemotingServices.GetServerTypeForUri(RemotingServices.GetObjectUri(objRem)); - Assert.AreEqual(type, typeRem, "#A15"); - } - finally - { - if(chn != null) ChannelServices.UnregisterChannel(chn); - } - } - - // Tests IsObjectOutOfDomain - // Tests IsObjectOutOfContext - [Test] - public void IsObjectOutOf() - { - TcpChannel chn = null; - try - { - chn = new TcpChannel(1245); - ChannelServices.RegisterChannel(chn); - - RemotingConfiguration.RegisterWellKnownServiceType(typeof(MarshalObject), "MarshalObject.rem", WellKnownObjectMode.Singleton); - - MarshalObject objRem = (MarshalObject) Activator.GetObject(typeof(MarshalObject), "tcp://localhost:1245/MarshalObject.rem"); - - Assert.IsTrue(RemotingServices.IsObjectOutOfAppDomain(objRem), "#A16"); - Assert.IsTrue(RemotingServices.IsObjectOutOfContext(objRem), "#A17"); - - MarshalObject objMarshal = new MarshalObject(); - Assert.IsTrue(!RemotingServices.IsObjectOutOfAppDomain(objMarshal), "#A18"); - Assert.IsTrue(!RemotingServices.IsObjectOutOfContext(objMarshal), "#A19"); - } - finally - { - ChannelServices.UnregisterChannel(chn); - } - } - } // end class RemotingServicesTest -} // end of namespace MonoTests.System.Runtime.Remoting.RemotingServicesTest diff --git a/mcs/class/corlib/testing_aot_full_corlib_test.dll.exclude.sources b/mcs/class/corlib/testing_aot_full_corlib_test.dll.exclude.sources index 63b58916eae..8b08b22c32e 100644 --- a/mcs/class/corlib/testing_aot_full_corlib_test.dll.exclude.sources +++ b/mcs/class/corlib/testing_aot_full_corlib_test.dll.exclude.sources @@ -33,7 +33,6 @@ System.Reflection.Emit/TypeBuilderTest.cs System.Reflection.Emit/SaveTest.cs System.Runtime.Remoting/ContextTest.cs System.Runtime.Remoting/RemotingConfigurationTest.cs -System.Runtime.Remoting/RemotingServicesTest.cs System.Runtime.Remoting/SoapServicesTest.cs System.Runtime.Remoting/SynchronizationAttributeTest.cs System.Runtime.Remoting.Channels/ChannelServicesTest.cs diff --git a/mcs/class/test-helpers/NetworkHelpers.cs b/mcs/class/test-helpers/NetworkHelpers.cs index 7ebc1fc9c15..9d5eb114081 100644 --- a/mcs/class/test-helpers/NetworkHelpers.cs +++ b/mcs/class/test-helpers/NetworkHelpers.cs @@ -17,11 +17,12 @@ namespace MonoTests.Helpers { { while (true) { var ep = new IPEndPoint (IPAddress.Loopback, rndPort.Next (10000, 60000)); - var socket = new Socket (ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); try { - socket.Bind (ep); - socket.Close (); + using (var socket = new Socket (ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) { + socket.Bind (ep); + socket.Close (); + } return ep; } catch (SocketException) { } } -- 2.25.1