From 2455d0d0662004b0c8e36911d5f81c0c8c52859b Mon Sep 17 00:00:00 2001 From: Luke Butters Date: Fri, 11 Aug 2023 13:06:17 +1000 Subject: [PATCH] Use lots of ports --- source/Halibut.Tests/UsageFixture.cs | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/source/Halibut.Tests/UsageFixture.cs b/source/Halibut.Tests/UsageFixture.cs index 4f158fc46..b7b780a3d 100644 --- a/source/Halibut.Tests/UsageFixture.cs +++ b/source/Halibut.Tests/UsageFixture.cs @@ -5,12 +5,14 @@ using System.Threading.Tasks; using FluentAssertions; using Halibut.Exceptions; +using Halibut.Tests.Support; using Halibut.Tests.Support.TestAttributes; using Halibut.Tests.Support.TestCases; using Halibut.Tests.TestServices.Async; using Halibut.Tests.Util; using Halibut.TestUtils.Contracts; using NUnit.Framework; +using Octopus.TestPortForwarder; namespace Halibut.Tests { @@ -34,6 +36,45 @@ public async Task OctopusCanSendMessagesToTentacle_WithEchoService(ClientAndServ } } + + [Test] + [LatestClientAndLatestServiceTestCases(testPolling: false, testWebSocket: false, testNetworkConditions: false, testAsyncAndSyncClients: false)] + public async Task AllThePorts(ClientAndServiceTestCase clientAndServiceTestCase) + { + using (var clientAndService = await clientAndServiceTestCase.CreateTestCaseBuilder() + .WithStandardServices() + .AsLatestClientAndLatestServiceBuilder() + .WithForcingClientProxyType(ForceClientProxyType.AsyncClient) + .Build(CancellationToken)) + { + var list = new List(); + try + { + var portForwarder = new PortForwarderBuilder(clientAndService.ServiceUri, Logger).Build(); + list.Add(portForwarder); + + for (int i = 0; i < 65000; i++) + { + portForwarder = new PortForwarderBuilder(portForwarder.PublicEndpoint, Logger).Build(); + list.Add(portForwarder); + } + + var service = new ServiceEndPoint(portForwarder.PublicEndpoint, clientAndService.ServiceEndPoint.RemoteThumbprint); + + var echo = clientAndService.Client.CreateAsyncClient(service); + await echo.SayHelloAsync("hello"); + } + finally + { + foreach (var portForwarder in list) + { + + Try.CatchingError(portForwarder.Dispose, exception => { }); + } + } + } + } + [Test] [LatestAndPreviousClientAndServiceVersionsTestCases(testNetworkConditions: false)] public async Task LargeMessages(ClientAndServiceTestCase clientAndServiceTestCase)