mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 09:15:47 +00:00
c5c6f28d60
* Avoid rounding issues when checking Timeout values (#1700) AsTimeout is called from the SshCommand constructor with Timeout.InfiniteTimeSpan. In this scenario the range check should never fail, but unfortunately it does in certain scenarios, due to a runtime or compiler bug (as soon as optimizations are turned off the issue miraculously disappears). Closes #1700 * fix tests --------- Co-authored-by: Robert Hague <rh@johnstreetcapital.com>
102 lines
3.3 KiB
C#
102 lines
3.3 KiB
C#
using System;
|
|
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
using Renci.SshNet.Tests.Common;
|
|
|
|
namespace Renci.SshNet.Tests.Classes
|
|
{
|
|
/// <summary>
|
|
/// Implementation of the SSH File Transfer Protocol (SFTP) over SSH.
|
|
/// </summary>
|
|
[TestClass]
|
|
public partial class SftpClientTest : TestBase
|
|
{
|
|
private Random _random;
|
|
|
|
[TestInitialize]
|
|
public void SetUp()
|
|
{
|
|
_random = new Random();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_Default()
|
|
{
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo);
|
|
|
|
var actual = target.OperationTimeout;
|
|
|
|
Assert.AreEqual(TimeSpan.FromMilliseconds(-1), actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_InsideLimits()
|
|
{
|
|
var operationTimeout = TimeSpan.FromMilliseconds(_random.Next(0, int.MaxValue - 1));
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo)
|
|
{
|
|
OperationTimeout = operationTimeout
|
|
};
|
|
|
|
var actual = target.OperationTimeout;
|
|
|
|
Assert.AreEqual(operationTimeout, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_LowerLimit()
|
|
{
|
|
var operationTimeout = TimeSpan.FromMilliseconds(-1);
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo)
|
|
{
|
|
OperationTimeout = operationTimeout
|
|
};
|
|
|
|
var actual = target.OperationTimeout;
|
|
|
|
Assert.AreEqual(operationTimeout, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_UpperLimit()
|
|
{
|
|
var operationTimeout = TimeSpan.FromMilliseconds(int.MaxValue);
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo)
|
|
{
|
|
OperationTimeout = operationTimeout
|
|
};
|
|
|
|
var actual = target.OperationTimeout;
|
|
|
|
Assert.AreEqual(operationTimeout, actual);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_LessThanLowerLimit()
|
|
{
|
|
var operationTimeout = TimeSpan.FromMilliseconds(-2);
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo);
|
|
|
|
var ex = Assert.Throws<ArgumentOutOfRangeException>(() => target.OperationTimeout = operationTimeout);
|
|
Assert.AreEqual("OperationTimeout", ex.ParamName);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void OperationTimeout_GreaterThanLowerLimit()
|
|
{
|
|
var operationTimeout = TimeSpan.FromMilliseconds(int.MaxValue).Add(TimeSpan.FromMilliseconds(1));
|
|
var connectionInfo = new PasswordConnectionInfo("host", 22, "admin", "pwd");
|
|
var target = new SftpClient(connectionInfo);
|
|
|
|
var ex = Assert.Throws<ArgumentOutOfRangeException>(() => target.OperationTimeout = operationTimeout);
|
|
Assert.AreEqual("OperationTimeout", ex.ParamName);
|
|
}
|
|
}
|
|
}
|