Skip to content

Commit e489cc6

Browse files
committed
Significantly improved performance and fixed bug with ShellStream's Expect methods.
1 parent 1c7166a commit e489cc6

22 files changed

+216
-52
lines changed

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private SshException _channelOpenException;
2627
private SshException _actualException;
2728

@@ -36,6 +37,7 @@ private void SetupData()
3637
_height = (uint) random.Next();
3738
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3839
_bufferSize = random.Next();
40+
_expectSize = _bufferSize;
3941
_channelOpenException = new SshException();
4042

4143
_actualException = null;
@@ -95,7 +97,8 @@ private void Act()
9597
_width,
9698
_height,
9799
_terminalModeValues,
98-
_bufferSize);
100+
_bufferSize,
101+
_expectSize);
99102
Assert.Fail();
100103
}
101104
catch (SshException ex)

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestReturnsFalse.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestRetur
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private SshException _actualException;
2627

2728
private void SetupData()
@@ -35,6 +36,7 @@ private void SetupData()
3536
_height = (uint)random.Next();
3637
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3738
_bufferSize = random.Next();
39+
_expectSize = _bufferSize;
3840
_actualException = null;
3941
}
4042

@@ -94,7 +96,8 @@ private void Act()
9496
_width,
9597
_height,
9698
_terminalModeValues,
97-
_bufferSize);
99+
_bufferSize,
100+
_expectSize);
98101
Assert.Fail();
99102
}
100103
catch (SshException ex)

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrowsException.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrow
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private SshException _sendPseudoTerminalRequestException;
2627
private SshException _actualException;
2728

@@ -36,6 +37,7 @@ private void SetupData()
3637
_height = (uint) random.Next();
3738
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3839
_bufferSize = random.Next();
40+
_expectSize = _bufferSize;
3941
_sendPseudoTerminalRequestException = new SshException();
4042

4143
_actualException = null;
@@ -97,7 +99,8 @@ private void Act()
9799
_width,
98100
_height,
99101
_terminalModeValues,
100-
_bufferSize);
102+
_bufferSize,
103+
_expectSize);
101104
Assert.Fail();
102105
}
103106
catch (SshException ex)

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private SshException _actualException;
2627

2728
private void SetupData()
@@ -35,6 +36,7 @@ private void SetupData()
3536
_height = (uint) random.Next();
3637
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3738
_bufferSize = random.Next();
39+
_expectSize = _bufferSize;
3840
_actualException = null;
3941
}
4042

@@ -97,7 +99,8 @@ private void Act()
9799
_width,
98100
_height,
99101
_terminalModeValues,
100-
_bufferSize);
102+
_bufferSize,
103+
_expectSize);
101104
Assert.Fail();
102105
}
103106
catch (SshException ex)

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsException.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsExceptio
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private SshException _sendShellRequestException;
2627
private SshException _actualException;
2728

@@ -36,6 +37,7 @@ private void SetupData()
3637
_height = (uint) random.Next();
3738
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3839
_bufferSize = random.Next();
40+
_expectSize = _bufferSize;
3941
_sendShellRequestException = new SshException();
4042
_actualException = null;
4143
}
@@ -99,7 +101,8 @@ private void Act()
99101
_width,
100102
_height,
101103
_terminalModeValues,
102-
_bufferSize);
104+
_bufferSize,
105+
_expectSize);
103106
Assert.Fail();
104107
}
105108
catch (SshException ex)

src/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_Success.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class ServiceFactoryTest_CreateShellStream_Success
2222
private uint _height;
2323
private IDictionary<TerminalModes, uint> _terminalModeValues;
2424
private int _bufferSize;
25+
private int _expectSize;
2526
private ShellStream _shellStream;
2627

2728
private void SetupData()
@@ -35,6 +36,7 @@ private void SetupData()
3536
_height = (uint) random.Next();
3637
_terminalModeValues = new Dictionary<TerminalModes, uint>();
3738
_bufferSize = random.Next();
39+
_expectSize = _bufferSize;
3840
}
3941

4042
private void CreateMocks()
@@ -97,7 +99,8 @@ private void Act()
9799
_width,
98100
_height,
99101
_terminalModeValues,
100-
_bufferSize);
102+
_bufferSize,
103+
_expectSize);
101104
}
102105

103106
[TestMethod]

src/Renci.SshNet.Tests/Classes/ShellStreamTest.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class ShellStreamTest : TestBase
2727
private uint _heightPixels;
2828
private Dictionary<TerminalModes, uint> _terminalModes;
2929
private int _bufferSize;
30+
private int _expectSize;
3031
private Mock<IChannelSession> _channelSessionMock;
3132

3233
protected override void OnInit()
@@ -41,6 +42,7 @@ protected override void OnInit()
4142
_heightPixels = (uint)random.Next();
4243
_terminalModes = new Dictionary<TerminalModes, uint>();
4344
_bufferSize = random.Next(100, 500);
45+
_expectSize = random.Next(100, _bufferSize);
4446

4547
_encoding = Encoding.UTF8;
4648
_sessionMock = new Mock<ISession>(MockBehavior.Strict);
@@ -120,7 +122,8 @@ private ShellStream CreateShellStream()
120122
_widthPixels,
121123
_heightPixels,
122124
_terminalModes,
123-
_bufferSize);
125+
_bufferSize,
126+
_expectSize);
124127
}
125128
}
126129
}

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferEmptyAndWriteLessBytesThanBufferSize.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ShellStreamTest_Write_WriteBufferEmptyAndWriteLessBytesThanBufferSi
2323
private Dictionary<TerminalModes, uint> _terminalModes;
2424
private ShellStream _shellStream;
2525
private int _bufferSize;
26+
private int _expectSize;
2627

2728
private byte[] _data;
2829
private int _offset;
@@ -47,6 +48,7 @@ private void SetupData()
4748
_heightPixels = (uint) random.Next();
4849
_terminalModes = new Dictionary<TerminalModes, uint>();
4950
_bufferSize = random.Next(100, 1000);
51+
_expectSize = random.Next(100, _bufferSize);
5052

5153
_data = CryptoAbstraction.GenerateRandom(_bufferSize - 10);
5254
_offset = random.Next(1, 5);
@@ -101,7 +103,8 @@ private void Arrange()
101103
_widthPixels,
102104
_heightPixels,
103105
_terminalModes,
104-
_bufferSize);
106+
_bufferSize,
107+
_expectSize);
105108
}
106109

107110
private void Act()

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferEmptyAndWriteMoreBytesThanBufferSize.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class ShellStreamTest_Write_WriteBufferEmptyAndWriteMoreBytesThanBufferSi
2424
private Dictionary<TerminalModes, uint> _terminalModes;
2525
private ShellStream _shellStream;
2626
private int _bufferSize;
27+
private int _expectSize;
2728

2829
private byte[] _data;
2930
private int _offset;
@@ -50,6 +51,7 @@ private void SetupData()
5051
_heightPixels = (uint)random.Next();
5152
_terminalModes = new Dictionary<TerminalModes, uint>();
5253
_bufferSize = random.Next(100, 1000);
54+
_expectSize = random.Next(100, _bufferSize);
5355

5456
_data = CryptoAbstraction.GenerateRandom((_bufferSize * 2) + 10);
5557
_offset = 0;
@@ -111,7 +113,8 @@ private void Arrange()
111113
_widthPixels,
112114
_heightPixels,
113115
_terminalModes,
114-
_bufferSize);
116+
_bufferSize,
117+
_expectSize);
115118
}
116119

117120
private void Act()

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferEmptyAndWriteNumberOfBytesEqualToBufferSize.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ShellStreamTest_Write_WriteBufferEmptyAndWriteNumberOfBytesEqualToB
2323
private Dictionary<TerminalModes, uint> _terminalModes;
2424
private ShellStream _shellStream;
2525
private int _bufferSize;
26+
private int _expectSize;
2627

2728
private byte[] _data;
2829
private int _offset;
@@ -47,6 +48,7 @@ private void SetupData()
4748
_heightPixels = (uint)random.Next();
4849
_terminalModes = new Dictionary<TerminalModes, uint>();
4950
_bufferSize = random.Next(100, 1000);
51+
_expectSize = random.Next(100, _bufferSize);
5052

5153
_data = CryptoAbstraction.GenerateRandom(_bufferSize);
5254
_offset = 0;
@@ -101,7 +103,8 @@ private void Arrange()
101103
_widthPixels,
102104
_heightPixels,
103105
_terminalModes,
104-
_bufferSize);
106+
_bufferSize,
107+
_expectSize);
105108
}
106109

107110
private void Act()

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferEmptyAndWriteZeroBytes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ShellStreamTest_Write_WriteBufferEmptyAndWriteZeroBytes
2525
private Dictionary<TerminalModes, uint> _terminalModes;
2626
private ShellStream _shellStream;
2727
private int _bufferSize;
28+
private int _expectSize;
2829

2930
private byte[] _data;
3031
private int _offset;
@@ -49,6 +50,7 @@ private void SetupData()
4950
_heightPixels = (uint)random.Next();
5051
_terminalModes = new Dictionary<TerminalModes, uint>();
5152
_bufferSize = random.Next(100, 1000);
53+
_expectSize = random.Next(100, _bufferSize);
5254

5355
_data = new byte[0];
5456
_offset = 0;
@@ -103,7 +105,8 @@ private void Arrange()
103105
_widthPixels,
104106
_heightPixels,
105107
_terminalModes,
106-
_bufferSize);
108+
_bufferSize,
109+
_expectSize);
107110
}
108111

109112
private void Act()

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferFullAndWriteLessBytesThanBufferSize.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ShellStreamTest_Write_WriteBufferFullAndWriteLessBytesThanBufferSiz
2323
private Dictionary<TerminalModes, uint> _terminalModes;
2424
private ShellStream _shellStream;
2525
private int _bufferSize;
26+
private int _expectSize;
2627

2728
private byte[] _data;
2829
private int _offset;
@@ -48,6 +49,7 @@ private void SetupData()
4849
_heightPixels = (uint)random.Next();
4950
_terminalModes = new Dictionary<TerminalModes, uint>();
5051
_bufferSize = random.Next(100, 1000);
52+
_expectSize = random.Next(100, _bufferSize);
5153

5254
_bufferData = CryptoAbstraction.GenerateRandom(_bufferSize);
5355
_data = CryptoAbstraction.GenerateRandom(_bufferSize - 10);
@@ -105,7 +107,8 @@ private void Arrange()
105107
_widthPixels,
106108
_heightPixels,
107109
_terminalModes,
108-
_bufferSize);
110+
_bufferSize,
111+
_expectSize);
109112

110113
_shellStream.Write(_bufferData, 0, _bufferData.Length);
111114
}

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferFullAndWriteZeroBytes.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ShellStreamTest_Write_WriteBufferFullAndWriteZeroBytes
2323
private Dictionary<TerminalModes, uint> _terminalModes;
2424
private ShellStream _shellStream;
2525
private int _bufferSize;
26+
private int _expectSize;
2627

2728
private byte[] _data;
2829
private int _offset;
@@ -48,6 +49,7 @@ private void SetupData()
4849
_heightPixels = (uint) random.Next();
4950
_terminalModes = new Dictionary<TerminalModes, uint>();
5051
_bufferSize = random.Next(100, 1000);
52+
_expectSize = random.Next(100, _bufferSize);
5153

5254
_bufferData = CryptoAbstraction.GenerateRandom(_bufferSize);
5355
_data = new byte[0];
@@ -103,7 +105,8 @@ private void Arrange()
103105
_widthPixels,
104106
_heightPixels,
105107
_terminalModes,
106-
_bufferSize);
108+
_bufferSize,
109+
_expectSize);
107110

108111
_shellStream.Write(_bufferData, 0, _bufferData.Length);
109112
}

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferNotEmptyAndWriteLessBytesThanBufferCanContain.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class ShellStreamTest_Write_WriteBufferNotEmptyAndWriteLessBytesThanBuffe
2323
private Dictionary<TerminalModes, uint> _terminalModes;
2424
private ShellStream _shellStream;
2525
private int _bufferSize;
26+
private int _expectSize;
2627

2728
private byte[] _data;
2829
private int _offset;
@@ -48,6 +49,7 @@ private void SetupData()
4849
_heightPixels = (uint) random.Next();
4950
_terminalModes = new Dictionary<TerminalModes, uint>();
5051
_bufferSize = random.Next(100, 1000);
52+
_expectSize = random.Next(100, _bufferSize);
5153

5254
_bufferData = CryptoAbstraction.GenerateRandom(_bufferSize - 60);
5355
_data = CryptoAbstraction.GenerateRandom(_bufferSize + 100);
@@ -103,7 +105,8 @@ private void Arrange()
103105
_widthPixels,
104106
_heightPixels,
105107
_terminalModes,
106-
_bufferSize);
108+
_bufferSize,
109+
_expectSize);
107110

108111
_shellStream.Write(_bufferData, 0, _bufferData.Length);
109112
}

src/Renci.SshNet.Tests/Classes/ShellStreamTest_Write_WriteBufferNotEmptyAndWriteMoreBytesThanBufferCanContain.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class ShellStreamTest_Write_WriteBufferNotEmptyAndWriteMoreBytesThanBuffe
2424
private Dictionary<TerminalModes, uint> _terminalModes;
2525
private ShellStream _shellStream;
2626
private int _bufferSize;
27+
private int _expectSize;
2728

2829
private byte[] _data;
2930
private int _offset;
@@ -50,6 +51,7 @@ private void SetupData()
5051
_heightPixels = (uint) random.Next();
5152
_terminalModes = new Dictionary<TerminalModes, uint>();
5253
_bufferSize = random.Next(100, 1000);
54+
_expectSize = random.Next(100, _bufferSize);
5355

5456
_bufferData = CryptoAbstraction.GenerateRandom(_bufferSize - 60);
5557
_data = CryptoAbstraction.GenerateRandom(_bufferSize - _bufferData.Length + random.Next(1, 10));
@@ -111,7 +113,8 @@ private void Arrange()
111113
_widthPixels,
112114
_heightPixels,
113115
_terminalModes,
114-
_bufferSize);
116+
_bufferSize,
117+
_expectSize);
115118

116119
_shellStream.Write(_bufferData, 0, _bufferData.Length);
117120
}

0 commit comments

Comments
 (0)