From 5da38540906708f148587c9fb255e3803a36893a Mon Sep 17 00:00:00 2001 From: Marius Thesing Date: Fri, 17 May 2024 19:04:42 +0200 Subject: [PATCH 1/2] fix flaky ReceiveOnServerSocketShouldReturnZero test ReceiveOnServerSocketShouldReturnZero assumed that the disconnect already happened on the server side, but it never waits for this. This could cause ServerSocket.Receive to still return valid data and fail the test. example: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49836561/job/wen5tjd1c7wgxrfh --- .../Classes/SessionTest_Connected_Disconnect.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs b/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs index 444a8d51a..74ffb121e 100644 --- a/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs +++ b/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs @@ -15,7 +15,10 @@ public class SessionTest_Connected_Disconnect : SessionTest_ConnectedBase { protected override void Act() { + ManualResetEvent clientDisconnected = new ManualResetEvent(false); + ServerListener.Disconnected += (socket) => clientDisconnected.Set(); Session.Disconnect(); + clientDisconnected.WaitOne(10000); } [TestMethod] From 4c9d3f6f00a943c45543d3c0d65cd16f8d83a903 Mon Sep 17 00:00:00 2001 From: Rob Hague Date: Fri, 17 May 2024 22:32:06 +0200 Subject: [PATCH 2/2] Update test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs --- .../Classes/SessionTest_Connected_Disconnect.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs b/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs index 74ffb121e..c468bcea1 100644 --- a/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs +++ b/test/Renci.SshNet.Tests/Classes/SessionTest_Connected_Disconnect.cs @@ -15,10 +15,10 @@ public class SessionTest_Connected_Disconnect : SessionTest_ConnectedBase { protected override void Act() { - ManualResetEvent clientDisconnected = new ManualResetEvent(false); + using ManualResetEventSlim clientDisconnected = new ManualResetEventSlim(false); ServerListener.Disconnected += (socket) => clientDisconnected.Set(); Session.Disconnect(); - clientDisconnected.WaitOne(10000); + clientDisconnected.Wait(10000); } [TestMethod]