CompressionTests.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. #if NET6_0_OR_GREATER
  19. [TestMethod]
  20. public void ZlibOpenSsh()
  21. {
  22. DoTest(new KeyValuePair<string, Func<Compressor>>("zlib@openssh.com", () => new ZlibOpenSsh()));
  23. }
  24. #endif
  25. private void DoTest(KeyValuePair<string, Func<Compressor>> compressor)
  26. {
  27. using (var scpClient = new ScpClient(_connectionInfoFactory.Create()))
  28. {
  29. scpClient.ConnectionInfo.CompressionAlgorithms.Clear();
  30. scpClient.ConnectionInfo.CompressionAlgorithms.Add(compressor);
  31. scpClient.Connect();
  32. Assert.AreEqual(compressor.Key, scpClient.ConnectionInfo.CurrentClientCompressionAlgorithm);
  33. Assert.AreEqual(compressor.Key, scpClient.ConnectionInfo.CurrentServerCompressionAlgorithm);
  34. var file = $"/tmp/{Guid.NewGuid()}.txt";
  35. var sb = new StringBuilder();
  36. for (var i = 0; i < 100; i++)
  37. {
  38. _ = sb.Append("Repeating");
  39. }
  40. var fileContent = sb.ToString();
  41. using var uploadStream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent));
  42. scpClient.Upload(uploadStream, file);
  43. using var downloadStream = new MemoryStream();
  44. scpClient.Download(file, downloadStream);
  45. var result = Encoding.UTF8.GetString(downloadStream.ToArray());
  46. Assert.AreEqual(fileContent, result);
  47. }
  48. }
  49. }
  50. }