| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using System.Text;
- using BenchmarkDotNet.Attributes;
- using Renci.SshNet.IntegrationTests.TestsFixtures;
- using Renci.SshNet.Sftp;
- namespace Renci.SshNet.IntegrationBenchmarks
- {
- [MemoryDiagnoser]
- [SimpleJob]
- public class SftpClientBenchmark : IntegrationBenchmarkBase
- {
- private readonly InfrastructureFixture _infrastructureFixture;
- private readonly string _file = $"/tmp/{Guid.NewGuid()}.txt";
- private SftpClient? _sftpClient;
- private MemoryStream? _uploadStream;
- public SftpClientBenchmark()
- {
- _infrastructureFixture = InfrastructureFixture.Instance;
- }
- [GlobalSetup]
- public async Task Setup()
- {
- await GlobalSetup().ConfigureAwait(false);
- _sftpClient = new SftpClient(_infrastructureFixture.SshServerHostName, _infrastructureFixture.SshServerPort, _infrastructureFixture.User.UserName, _infrastructureFixture.User.Password);
- await _sftpClient.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
- var fileContent = "File content !@#$%^&*()_+{}:,./<>[];'\\|";
- _uploadStream = new MemoryStream(Encoding.UTF8.GetBytes(fileContent));
- }
- [GlobalCleanup]
- public async Task Cleanup()
- {
- await GlobalCleanup().ConfigureAwait(false);
- await _uploadStream!.DisposeAsync().ConfigureAwait(false);
- }
- [Benchmark]
- public void Connect()
- {
- using var sftpClient = new SftpClient(_infrastructureFixture.SshServerHostName, _infrastructureFixture.SshServerPort, _infrastructureFixture.User.UserName, _infrastructureFixture.User.Password);
- sftpClient.Connect();
- }
- [Benchmark]
- public async Task ConnectAsync()
- {
- using var sftpClient = new SftpClient(_infrastructureFixture.SshServerHostName, _infrastructureFixture.SshServerPort, _infrastructureFixture.User.UserName, _infrastructureFixture.User.Password);
- await sftpClient.ConnectAsync(CancellationToken.None).ConfigureAwait(false);
- }
- public IEnumerable<ISftpFile> ListDirectory()
- {
- return _sftpClient!.ListDirectory("/root");
- }
- public IAsyncEnumerable<ISftpFile> ListDirectoryAsync()
- {
- return _sftpClient!.ListDirectoryAsync("/root", CancellationToken.None);
- }
- [Benchmark]
- public string UploadAndDownload()
- {
- _uploadStream!.Position = 0;
- _sftpClient!.UploadFile(_uploadStream, _file);
- using var downloadStream = new MemoryStream();
- _sftpClient.DownloadFile(_file, downloadStream);
- return Encoding.UTF8.GetString(downloadStream.ToArray());
- }
- }
- }
|