public void ClientConnect(int connectionCount, int interval) { const int Port = 10034; var probe = new TcpProbeEndpoint(IPAddress.Any, Port, null, null); var stopSuccess = false; var startSuccess = probe.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); var statusList = new List <bool>(); if (startSuccess) { var continueListening = true; var maximumTime = connectionCount * (interval + 10); var timeoutAt = DateTime.UtcNow.Add(TimeSpan.FromMilliseconds(maximumTime + 1000)); var collectionThread = new Thread(new ThreadStart(() => { while (continueListening && statusList.Count < connectionCount) { var success = false; try { using (var client = new TcpClient()) { client.Connect(IPAddress.Loopback, Port); success = true; client.Close(); } } catch (Exception) { } statusList.Add(success); if (statusList.Count < connectionCount) { Thread.Sleep(interval); } } })); collectionThread.Start(); while (DateTime.UtcNow < timeoutAt && collectionThread.IsAlive) { Task.Delay(1000).GetAwaiter().GetResult(); } continueListening = false; stopSuccess = probe.StopAsync(CancellationToken.None).GetAwaiter().GetResult(); } Assert.IsTrue(startSuccess, "Start was not successful"); Assert.IsTrue(stopSuccess, "Stop was not successful"); Assert.IsTrue(connectionCount == statusList.Count(), "Not enough connections were performed"); Assert.IsFalse(statusList.Any(item => !item), "Failure to connect found"); }
public void StartStop() { var probe = new TcpProbeEndpoint(IPAddress.Any, 10034, null, null); var stopSuccess = false; var startSuccess = probe.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); if (startSuccess) { Task.Delay(2000).GetAwaiter().GetResult(); stopSuccess = probe.StopAsync(CancellationToken.None).GetAwaiter().GetResult(); } Assert.IsTrue(startSuccess, "Start was not successful"); Assert.IsTrue(stopSuccess, "Stop was not successful"); }
public void DoubleStartStop() { var probe = new TcpProbeEndpoint(IPAddress.Any, 10035, null, null); var stopSuccess = false; bool?secondStart = null; var startSuccess = probe.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); if (startSuccess) { secondStart = probe.StartAsync(CancellationToken.None).GetAwaiter().GetResult(); Task.Delay(2000).GetAwaiter().GetResult(); stopSuccess = probe.StopAsync(CancellationToken.None).GetAwaiter().GetResult(); } Assert.IsTrue(startSuccess, "Start was not successful"); Assert.IsTrue(stopSuccess, "Stop was not successful"); Assert.IsTrue(secondStart.HasValue, "Second start should have a value"); Assert.IsFalse(secondStart.Value, "Second start should be false"); }