CompressionTests.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Renci.SshNet.Compression;
  2. namespace Renci.SshNet.IntegrationTests
  3. {
  4. [TestClass]
  5. public class CompressionTests : IntegrationTestBase
  6. {
  7. private IConnectionInfoFactory _connectionInfoFactory;
  8. [TestInitialize]
  9. public void SetUp()
  10. {
  11. _connectionInfoFactory = new LinuxVMConnectionFactory(SshServerHostName, SshServerPort);
  12. }
  13. [TestMethod]
  14. public void None()
  15. {
  16. DoTest(new KeyValuePair<string, Func<Compressor>>("none", null));
  17. }
  18. [TestMethod]
  19. public void ZlibOpenSsh()
  20. {
  21. DoTest(new KeyValuePair<string, Func<Compressor>>("zlib@openssh.com", () => new ZlibOpenSsh()));
  22. }
  23. private void DoTest(KeyValuePair<string, Func<Compressor>> compressor)
  24. {
  25. using (var scpClient = new ScpClient(_connectionInfoFactory.Create()))
  26. {
  27. scpClient.ConnectionInfo.CompressionAlgorithms.Clear();
  28. scpClient.ConnectionInfo.CompressionAlgorithms.Add(compressor);
  29. scpClient.Connect();
  30. Assert.AreEqual(compressor.Key, scpClient.ConnectionInfo.CurrentClientCompressionAlgorithm);
  31. Assert.AreEqual(compressor.Key, scpClient.ConnectionInfo.CurrentServerCompressionAlgorithm);
  32. var file = $"/tmp/{Guid.NewGuid()}.txt";
  33. var sb = new StringBuilder();
  34. for (var i = 0; i < 100; i++)
  35. {
  36. _ = sb.Append("Repeating");
  37. }
  38. var fileContent = sb.ToString();
  39. using var uploadStream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent));
  40. scpClient.Upload(uploadStream, file);
  41. using var downloadStream = new MemoryStream();
  42. scpClient.Download(file, downloadStream);
  43. var result = Encoding.UTF8.GetString(downloadStream.ToArray());
  44. Assert.AreEqual(fileContent, result);
  45. }
  46. }
  47. }
  48. }