|
|
@@ -21,6 +21,7 @@ namespace Renci.SshNet.Tests.Classes.Channels
|
|
|
private uint _remotePacketSize;
|
|
|
private ChannelStub _channel;
|
|
|
private Stopwatch _closeTimer;
|
|
|
+ private ManualResetEvent _channelClosedWaitHandle;
|
|
|
private List<ChannelEventArgs> _channelClosedRegister;
|
|
|
private IList<ExceptionEventArgs> _channelExceptionRegister;
|
|
|
|
|
|
@@ -42,6 +43,7 @@ namespace Renci.SshNet.Tests.Classes.Channels
|
|
|
_remotePacketSize = (uint)random.Next(0, int.MaxValue);
|
|
|
_closeTimer = new Stopwatch();
|
|
|
_channelClosedRegister = new List<ChannelEventArgs>();
|
|
|
+ _channelClosedWaitHandle = new ManualResetEvent(false);
|
|
|
_channelExceptionRegister = new List<ExceptionEventArgs>();
|
|
|
|
|
|
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
|
|
|
@@ -61,8 +63,7 @@ namespace Renci.SshNet.Tests.Classes.Channels
|
|
|
// SSH_MSG_CHANNEL_CLOSE message from server which is waited on after
|
|
|
// sending the SSH_MSG_CHANNEL_CLOSE message to the server
|
|
|
_sessionMock.Raise(s => s.ChannelCloseReceived += null,
|
|
|
- new MessageEventArgs<ChannelCloseMessage>(
|
|
|
- new ChannelCloseMessage(_localChannelNumber)));
|
|
|
+ new MessageEventArgs<ChannelCloseMessage>(new ChannelCloseMessage(_localChannelNumber)));
|
|
|
}).Start();
|
|
|
_closeTimer.Start();
|
|
|
try
|
|
|
@@ -76,7 +77,11 @@ namespace Renci.SshNet.Tests.Classes.Channels
|
|
|
});
|
|
|
|
|
|
_channel = new ChannelStub(_sessionMock.Object, _localChannelNumber, _localWindowSize, _localPacketSize);
|
|
|
- _channel.Closed += (sender, args) => _channelClosedRegister.Add(args);
|
|
|
+ _channel.Closed += (sender, args) =>
|
|
|
+ {
|
|
|
+ _channelClosedRegister.Add(args);
|
|
|
+ _channelClosedWaitHandle.Set();
|
|
|
+ };
|
|
|
_channel.Exception += (sender, args) => _channelExceptionRegister.Add(args);
|
|
|
_channel.InitializeRemoteChannelInfo(_remoteChannelNumber, _remoteWindowSize, _remotePacketSize);
|
|
|
_channel.SetIsOpen(true);
|
|
|
@@ -124,6 +129,8 @@ namespace Renci.SshNet.Tests.Classes.Channels
|
|
|
[TestMethod]
|
|
|
public void ClosedEventShouldHaveFiredOnce()
|
|
|
{
|
|
|
+ _channelClosedWaitHandle.WaitOne(100);
|
|
|
+
|
|
|
Assert.AreEqual(1, _channelClosedRegister.Count);
|
|
|
Assert.AreEqual(_localChannelNumber, _channelClosedRegister[0].ChannelNumber);
|
|
|
}
|