From 7b58819537798bec53e4193a3e5f395bcf018023 Mon Sep 17 00:00:00 2001 From: Rob Hague Date: Sat, 6 Apr 2024 21:37:59 +0200 Subject: [PATCH] Remove enormous array allocations in tests causing instability in CI (#1367) * debugging CI * apt-get * print memory * x * x * Remove some unbounded random.Next() calls Some of which are causing giant array allocations unnecessarily. Should stabilise CI. * cleanup --- ...eShellStream_ChannelOpenThrowsException.cs | 19 ++++++++----------- ...m_SendPseudoTerminalRequestReturnsFalse.cs | 19 ++++++++----------- ...endPseudoTerminalRequestThrowsException.cs | 19 ++++++++----------- ...hellStream_SendShellRequestReturnsFalse.cs | 19 ++++++++----------- ...lStream_SendShellRequestThrowsException.cs | 19 ++++++++----------- ...ceFactoryTest_CreateShellStream_Success.cs | 19 ++++++++----------- ...est_Read_ReadAheadExceptionInBeginRead.cs} | 2 +- ...xceptionInWaitOnHandle_NoChunkAvailable.cs | 2 +- ...FileStreamTest_SetLength_SessionNotOpen.cs | 2 +- ...t_SetLength_SessionOpen_FileAccessRead.cs} | 4 ++-- ...Length_SessionOpen_FileAccessReadWrite.cs} | 4 ++-- ..._SetLength_SessionOpen_FileAccessWrite.cs} | 4 ++-- ...tGreatherThanTwoTimesTheWriteBufferSize.cs | 8 ++++---- 13 files changed, 61 insertions(+), 79 deletions(-) rename test/Renci.SshNet.Tests/Classes/Sftp/{SftpFileReaderTest_Read_ReahAheadExceptionInBeginRead.cs => SftpFileReaderTest_Read_ReadAheadExceptionInBeginRead.cs} (99%) rename test/Renci.SshNet.Tests/Classes/Sftp/{SftpFileStreamTest_SetLength_SessionOpen_FIleAccessRead.cs => SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead.cs} (95%) rename test/Renci.SshNet.Tests/Classes/Sftp/{SftpFileStreamTest_SetLength_SessionOpen_FIleAccessReadWrite.cs => SftpFileStreamTest_SetLength_SessionOpen_FileAccessReadWrite.cs} (98%) rename test/Renci.SshNet.Tests/Classes/Sftp/{SftpFileStreamTest_SetLength_SessionOpen_FIleAccessWrite.cs => SftpFileStreamTest_SetLength_SessionOpen_FileAccessWrite.cs} (97%) diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException.cs index 651f2fbc..e39991b5 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_ChannelOpenThrowsException.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -27,15 +26,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint) random.Next(); - _rows = (uint) random.Next(); - _width = (uint) random.Next(); - _height = (uint) random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; _channelOpenException = new SshException(); _actualException = null; @@ -117,4 +114,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.Dispose(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestReturnsFalse.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestReturnsFalse.cs index 362351a5..c3147d56 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestReturnsFalse.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestReturnsFalse.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -26,15 +25,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint)random.Next(); - _rows = (uint)random.Next(); - _width = (uint)random.Next(); - _height = (uint)random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; _actualException = null; } @@ -117,4 +114,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.Dispose(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrowsException.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrowsException.cs index 67606992..c94b8029 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrowsException.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendPseudoTerminalRequestThrowsException.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -27,15 +26,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint) random.Next(); - _rows = (uint) random.Next(); - _width = (uint) random.Next(); - _height = (uint) random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; _sendPseudoTerminalRequestException = new SshException(); _actualException = null; @@ -119,4 +116,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.Dispose(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse.cs index 5a6d4387..97d44a93 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestReturnsFalse.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -26,15 +25,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint) random.Next(); - _rows = (uint) random.Next(); - _width = (uint) random.Next(); - _height = (uint) random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; _actualException = null; } @@ -120,4 +117,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.Dispose(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsException.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsException.cs index da9cd6be..b2ea49d3 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsException.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_SendShellRequestThrowsException.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -27,15 +26,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint) random.Next(); - _rows = (uint) random.Next(); - _width = (uint) random.Next(); - _height = (uint) random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; _sendShellRequestException = new SshException(); _actualException = null; } @@ -121,4 +118,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.Dispose(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_Success.cs b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_Success.cs index 3f2f92a7..7cf0c62c 100644 --- a/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_Success.cs +++ b/test/Renci.SshNet.Tests/Classes/ServiceFactoryTest_CreateShellStream_Success.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; @@ -26,15 +25,13 @@ namespace Renci.SshNet.Tests.Classes private void SetupData() { - var random = new Random(); - - _terminalName = random.Next().ToString(); - _columns = (uint) random.Next(); - _rows = (uint) random.Next(); - _width = (uint) random.Next(); - _height = (uint) random.Next(); + _terminalName = "test"; + _columns = 80; + _rows = 20; + _width = 300; + _height = 100; _terminalModeValues = new Dictionary(); - _bufferSize = random.Next(); + _bufferSize = 512; } private void CreateMocks() @@ -124,4 +121,4 @@ namespace Renci.SshNet.Tests.Classes _channelSessionMock.Verify(p => p.SendShellRequest(), Times.Once); } } -} \ No newline at end of file +} diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReahAheadExceptionInBeginRead.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInBeginRead.cs similarity index 99% rename from test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReahAheadExceptionInBeginRead.cs rename to test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInBeginRead.cs index 9d8092fb..a35803e6 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReahAheadExceptionInBeginRead.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInBeginRead.cs @@ -10,7 +10,7 @@ using BufferedRead = Renci.SshNet.Sftp.SftpFileReader.BufferedRead; namespace Renci.SshNet.Tests.Classes.Sftp { [TestClass] - public class SftpFileReaderTest_Read_ReahAheadExceptionInBeginRead : SftpFileReaderTestBase + public class SftpFileReaderTest_Read_ReadAheadExceptionInBeginRead : SftpFileReaderTestBase { private const int ChunkLength = 32 * 1024; diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInWaitOnHandle_NoChunkAvailable.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInWaitOnHandle_NoChunkAvailable.cs index f9d605a6..12991fb4 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInWaitOnHandle_NoChunkAvailable.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileReaderTest_Read_ReadAheadExceptionInWaitOnHandle_NoChunkAvailable.cs @@ -29,7 +29,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp var random = new Random(); _handle = CreateByteArray(random, 5); - _fileSize = random.Next(); + _fileSize = 1234; _waitHandleArray = new WaitHandle[2]; _operationTimeout = random.Next(10000, 20000); _closeAsyncResult = new SftpCloseAsyncResult(null, null); diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionNotOpen.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionNotOpen.cs index a7e70765..b4712c71 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionNotOpen.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionNotOpen.cs @@ -28,7 +28,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp _bufferSize = (uint) random.Next(1, 1000); _readBufferSize = (uint) random.Next(1, 1000); _writeBufferSize = (uint) random.Next(1, 1000); - _length = random.Next(); + _length = 5555; } protected override void SetupMocks() diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessRead.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead.cs similarity index 95% rename from test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessRead.cs rename to test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead.cs index e93017f5..9ed80464 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessRead.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead.cs @@ -7,7 +7,7 @@ using Renci.SshNet.Sftp; namespace Renci.SshNet.Tests.Classes.Sftp { [TestClass] - public class SftpFileStreamTest_SetLength_SessionOpen_FIleAccess : SftpFileStreamTestBase + public class SftpFileStreamTest_SetLength_SessionOpen_FileAccessRead : SftpFileStreamTestBase { private SftpFileStream _target; private string _path; @@ -28,7 +28,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp _bufferSize = (uint) random.Next(1, 1000); _readBufferSize = (uint) random.Next(1, 1000); _writeBufferSize = (uint) random.Next(1, 1000); - _length = random.Next(); + _length = 6666; } protected override void SetupMocks() diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessReadWrite.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessReadWrite.cs similarity index 98% rename from test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessReadWrite.cs rename to test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessReadWrite.cs index f1871176..a4a96eea 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessReadWrite.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessReadWrite.cs @@ -9,7 +9,7 @@ using Renci.SshNet.Sftp; namespace Renci.SshNet.Tests.Classes.Sftp { [TestClass] - public class SftpFileStreamTest_SetLength_SessionOpen_FIleAccessReadWrite + public class SftpFileStreamTest_SetLength_SessionOpen_FileAccessReadWrite { private Mock _sftpSessionMock; private string _path; @@ -46,7 +46,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp _bufferSize = (uint) random.Next(1, 1000); _readBufferSize = (uint) random.Next(1, 1000); _writeBufferSize = (uint) random.Next(1, 1000); - _length = random.Next(); + _length = 7777; _fileAttributesLastAccessTime = DateTime.UtcNow.AddSeconds(random.Next()); _fileAttributesLastWriteTime = DateTime.UtcNow.AddSeconds(random.Next()); diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessWrite.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessWrite.cs similarity index 97% rename from test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessWrite.cs rename to test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessWrite.cs index d741ad1f..1ac2be5f 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FIleAccessWrite.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_SetLength_SessionOpen_FileAccessWrite.cs @@ -9,7 +9,7 @@ using Renci.SshNet.Sftp; namespace Renci.SshNet.Tests.Classes.Sftp { [TestClass] - public class SftpFileStreamTest_SetLength_SessionOpen_FIleAccessWrite + public class SftpFileStreamTest_SetLength_SessionOpen_FileAccessWrite { private Mock _sftpSessionMock; private string _path; @@ -46,7 +46,7 @@ namespace Renci.SshNet.Tests.Classes.Sftp _bufferSize = (uint) random.Next(1, 1000); _readBufferSize = (uint) random.Next(1, 1000); _writeBufferSize = (uint) random.Next(1, 1000); - _length = random.Next(); + _length = 8888; _fileAttributesLastAccessTime = DateTime.UtcNow.AddSeconds(random.Next()); _fileAttributesLastWriteTime = DateTime.UtcNow.AddSeconds(random.Next()); diff --git a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_Write_SessionOpen_CountGreatherThanTwoTimesTheWriteBufferSize.cs b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_Write_SessionOpen_CountGreatherThanTwoTimesTheWriteBufferSize.cs index e7d53706..229714c3 100644 --- a/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_Write_SessionOpen_CountGreatherThanTwoTimesTheWriteBufferSize.cs +++ b/test/Renci.SshNet.Tests/Classes/Sftp/SftpFileStreamTest_Write_SessionOpen_CountGreatherThanTwoTimesTheWriteBufferSize.cs @@ -121,10 +121,10 @@ namespace Renci.SshNet.Tests.Classes.Sftp { var lengthFileAttributes = new SftpFileAttributes(DateTime.UtcNow, DateTime.UtcNow, - _random.Next(), - _random.Next(), - _random.Next(), - (uint) _random.Next(0, int.MaxValue), + 123, + 456, + 789, + 7, null); byte[] actualFlushedData = null;