UploadDownloadTest.NET40.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using Renci.SshNet.Tests.Properties;
  7. using System.IO;
  8. using System.Security.Cryptography;
  9. using System.Threading.Tasks;
  10. using Renci.SshNet.Common;
  11. namespace Renci.SshNet.Tests.ScpClientTests
  12. {
  13. public partial class UploadDownloadTest
  14. {
  15. [TestMethod]
  16. [TestCategory("Scp")]
  17. public void Test_Scp_File_20_Parallel_Upload_Download()
  18. {
  19. using (var scp = new ScpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  20. {
  21. scp.Connect();
  22. var uploadFilenames = new string[20];
  23. for (int i = 0; i < uploadFilenames.Length; i++)
  24. {
  25. uploadFilenames[i] = Path.GetTempFileName();
  26. this.CreateTestFile(uploadFilenames[i], 1);
  27. }
  28. Parallel.ForEach(uploadFilenames,
  29. (filename) =>
  30. {
  31. scp.Upload(new FileInfo(filename), Path.GetFileName(filename));
  32. });
  33. Parallel.ForEach(uploadFilenames,
  34. (filename) =>
  35. {
  36. scp.Download(Path.GetFileName(filename), new FileInfo(string.Format("{0}.down", filename)));
  37. });
  38. var result = from file in uploadFilenames
  39. where
  40. CalculateMD5(file) == CalculateMD5(string.Format("{0}.down", file))
  41. select file;
  42. scp.Disconnect();
  43. Assert.IsTrue(result.Count() == uploadFilenames.Length);
  44. }
  45. }
  46. [TestMethod]
  47. [TestCategory("Scp")]
  48. public void Test_Scp_File_Upload_Download_Events()
  49. {
  50. using (var scp = new ScpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
  51. {
  52. scp.Connect();
  53. var uploadFilenames = new string[10];
  54. for (int i = 0; i < uploadFilenames.Length; i++)
  55. {
  56. uploadFilenames[i] = Path.GetTempFileName();
  57. this.CreateTestFile(uploadFilenames[i], 1);
  58. }
  59. var uploadedFiles = uploadFilenames.ToDictionary((filename) => Path.GetFileName(filename), (filename) => 0L);
  60. var downloadedFiles = uploadFilenames.ToDictionary((filename) => string.Format("{0}.down", Path.GetFileName(filename)), (filename) => 0L);
  61. scp.Uploading += delegate(object sender, ScpUploadEventArgs e)
  62. {
  63. uploadedFiles[e.Filename] = e.Uploaded;
  64. };
  65. scp.Downloading += delegate(object sender, ScpDownloadEventArgs e)
  66. {
  67. downloadedFiles[string.Format("{0}.down", e.Filename)] = e.Downloaded;
  68. };
  69. Parallel.ForEach(uploadFilenames,
  70. (filename) =>
  71. {
  72. scp.Upload(new FileInfo(filename), Path.GetFileName(filename));
  73. });
  74. Parallel.ForEach(uploadFilenames,
  75. (filename) =>
  76. {
  77. scp.Download(Path.GetFileName(filename), new FileInfo(string.Format("{0}.down", filename)));
  78. });
  79. var result = from uf in uploadedFiles
  80. from df in downloadedFiles
  81. where
  82. string.Format("{0}.down", uf.Key) == df.Key
  83. && uf.Value == df.Value
  84. select uf;
  85. scp.Disconnect();
  86. Assert.IsTrue(result.Count() == uploadFilenames.Length && uploadFilenames.Length == uploadedFiles.Count && uploadedFiles.Count == downloadedFiles.Count);
  87. }
  88. }
  89. }
  90. }