| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- using Renci.SshNet.Common;
- using Renci.SshNet.Tests.Properties;
- using System.IO;
- using System.Linq;
- using System.Threading.Tasks;
- namespace Renci.SshNet.Tests.Classes
- {
- /// <summary>
- /// Provides SCP client functionality.
- /// </summary>
- public partial class ScpClientTest
- {
- [TestMethod]
- [TestCategory("Scp")]
- public void Test_Scp_File_20_Parallel_Upload_Download()
- {
- using (var scp = new ScpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
- {
- scp.Connect();
- var uploadFilenames = new string[20];
- for (int i = 0; i < uploadFilenames.Length; i++)
- {
- uploadFilenames[i] = Path.GetTempFileName();
- this.CreateTestFile(uploadFilenames[i], 1);
- }
- Parallel.ForEach(uploadFilenames,
- (filename) =>
- {
- scp.Upload(new FileInfo(filename), Path.GetFileName(filename));
- });
- Parallel.ForEach(uploadFilenames,
- (filename) =>
- {
- scp.Download(Path.GetFileName(filename), new FileInfo(string.Format("{0}.down", filename)));
- });
- var result = from file in uploadFilenames
- where
- CalculateMD5(file) == CalculateMD5(string.Format("{0}.down", file))
- select file;
- scp.Disconnect();
- Assert.IsTrue(result.Count() == uploadFilenames.Length);
- }
- }
- [TestMethod]
- [TestCategory("Scp")]
- public void Test_Scp_File_Upload_Download_Events()
- {
- using (var scp = new ScpClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
- {
- scp.Connect();
- var uploadFilenames = new string[10];
- for (int i = 0; i < uploadFilenames.Length; i++)
- {
- uploadFilenames[i] = Path.GetTempFileName();
- this.CreateTestFile(uploadFilenames[i], 1);
- }
- var uploadedFiles = uploadFilenames.ToDictionary((filename) => Path.GetFileName(filename), (filename) => 0L);
- var downloadedFiles = uploadFilenames.ToDictionary((filename) => string.Format("{0}.down", Path.GetFileName(filename)), (filename) => 0L);
- scp.Uploading += delegate(object sender, ScpUploadEventArgs e)
- {
- uploadedFiles[e.Filename] = e.Uploaded;
- };
- scp.Downloading += delegate(object sender, ScpDownloadEventArgs e)
- {
- downloadedFiles[string.Format("{0}.down", e.Filename)] = e.Downloaded;
- };
- Parallel.ForEach(uploadFilenames,
- (filename) =>
- {
- scp.Upload(new FileInfo(filename), Path.GetFileName(filename));
- });
- Parallel.ForEach(uploadFilenames,
- (filename) =>
- {
- scp.Download(Path.GetFileName(filename), new FileInfo(string.Format("{0}.down", filename)));
- });
- var result = from uf in uploadedFiles
- from df in downloadedFiles
- where
- string.Format("{0}.down", uf.Key) == df.Key
- && uf.Value == df.Value
- select uf;
- scp.Disconnect();
- Assert.IsTrue(result.Count() == uploadFilenames.Length && uploadFilenames.Length == uploadedFiles.Count && uploadedFiles.Count == downloadedFiles.Count);
- }
- }
- }
- }
|