Skip to content

Commit 7bc67f3

Browse files
committed
Harden tests.
1 parent 48205c7 commit 7bc67f3

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/Renci.SshNet.Tests/Classes/Channels/ChannelTest_Dispose_SessionIsConnectedAndChannelIsOpen_EofNotReceived.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class ChannelTest_Dispose_SessionIsConnectedAndChannelIsOpen_EofNotReceiv
2121
private uint _remotePacketSize;
2222
private ChannelStub _channel;
2323
private Stopwatch _closeTimer;
24+
private ManualResetEvent _channelClosedWaitHandle;
2425
private List<ChannelEventArgs> _channelClosedRegister;
2526
private IList<ExceptionEventArgs> _channelExceptionRegister;
2627

@@ -42,6 +43,7 @@ private void Arrange()
4243
_remotePacketSize = (uint)random.Next(0, int.MaxValue);
4344
_closeTimer = new Stopwatch();
4445
_channelClosedRegister = new List<ChannelEventArgs>();
46+
_channelClosedWaitHandle = new ManualResetEvent(false);
4547
_channelExceptionRegister = new List<ExceptionEventArgs>();
4648

4749
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
@@ -61,8 +63,7 @@ private void Arrange()
6163
// SSH_MSG_CHANNEL_CLOSE message from server which is waited on after
6264
// sending the SSH_MSG_CHANNEL_CLOSE message to the server
6365
_sessionMock.Raise(s => s.ChannelCloseReceived += null,
64-
new MessageEventArgs<ChannelCloseMessage>(
65-
new ChannelCloseMessage(_localChannelNumber)));
66+
new MessageEventArgs<ChannelCloseMessage>(new ChannelCloseMessage(_localChannelNumber)));
6667
}).Start();
6768
_closeTimer.Start();
6869
try
@@ -76,7 +77,11 @@ private void Arrange()
7677
});
7778

7879
_channel = new ChannelStub(_sessionMock.Object, _localChannelNumber, _localWindowSize, _localPacketSize);
79-
_channel.Closed += (sender, args) => _channelClosedRegister.Add(args);
80+
_channel.Closed += (sender, args) =>
81+
{
82+
_channelClosedRegister.Add(args);
83+
_channelClosedWaitHandle.Set();
84+
};
8085
_channel.Exception += (sender, args) => _channelExceptionRegister.Add(args);
8186
_channel.InitializeRemoteChannelInfo(_remoteChannelNumber, _remoteWindowSize, _remotePacketSize);
8287
_channel.SetIsOpen(true);
@@ -124,6 +129,8 @@ public void WaitOnHandleOnSessionShouldWaitForChannelCloseMessageToBeReceived()
124129
[TestMethod]
125130
public void ClosedEventShouldHaveFiredOnce()
126131
{
132+
_channelClosedWaitHandle.WaitOne(100);
133+
127134
Assert.AreEqual(1, _channelClosedRegister.Count);
128135
Assert.AreEqual(_localChannelNumber, _channelClosedRegister[0].ChannelNumber);
129136
}

src/Renci.SshNet.Tests/Classes/Channels/ChannelTest_Dispose_SessionIsConnectedAndChannelIsOpen_EofNotReceived_SendEofInvoked.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class ChannelTest_Dispose_SessionIsConnectedAndChannelIsOpen_EofNotReceiv
2121
private uint _remotePacketSize;
2222
private ChannelStub _channel;
2323
private Stopwatch _closeTimer;
24+
private ManualResetEvent _channelClosedWaitHandle;
2425
private List<ChannelEventArgs> _channelClosedRegister;
2526
private IList<ExceptionEventArgs> _channelExceptionRegister;
2627

@@ -41,6 +42,7 @@ private void Arrange()
4142
_remoteWindowSize = (uint)random.Next(0, int.MaxValue);
4243
_remotePacketSize = (uint)random.Next(0, int.MaxValue);
4344
_closeTimer = new Stopwatch();
45+
_channelClosedWaitHandle = new ManualResetEvent(false);
4446
_channelClosedRegister = new List<ChannelEventArgs>();
4547
_channelExceptionRegister = new List<ExceptionEventArgs>();
4648

@@ -75,7 +77,11 @@ private void Arrange()
7577
});
7678

7779
_channel = new ChannelStub(_sessionMock.Object, _localChannelNumber, _localWindowSize, _localPacketSize);
78-
_channel.Closed += (sender, args) => _channelClosedRegister.Add(args);
80+
_channel.Closed += (sender, args) =>
81+
{
82+
_channelClosedRegister.Add(args);
83+
_channelClosedWaitHandle.Set();
84+
};
7985
_channel.Exception += (sender, args) => _channelExceptionRegister.Add(args);
8086
_channel.InitializeRemoteChannelInfo(_remoteChannelNumber, _remoteWindowSize, _remotePacketSize);
8187
_channel.SetIsOpen(true);
@@ -124,6 +130,8 @@ public void WaitOnHandleOnSessionShouldWaitForChannelCloseMessageToBeReceived()
124130
[TestMethod]
125131
public void ClosedEventShouldHaveFiredOnce()
126132
{
133+
_channelClosedWaitHandle.WaitOne(100);
134+
127135
Assert.AreEqual(1, _channelClosedRegister.Count);
128136
Assert.AreEqual(_localChannelNumber, _channelClosedRegister[0].ChannelNumber);
129137
}

0 commit comments

Comments
 (0)