From f6471a9b759af080db58b72feb91ea6c6ce879af Mon Sep 17 00:00:00 2001 From: Marius Thesing Date: Sat, 25 May 2024 11:30:23 +0200 Subject: [PATCH 1/2] fix flaky SFTP file time tests These asserts currently assume that DateTime.Now and the creation timestamp on the server happen within the same second. Note that I didn't change the asserts below where an explicit timestamp is set. From my understanding, these should not be affected. example: https://ci.appveyor.com/project/drieseng/ssh-net/builds/49850731/job/u6lk0cyipbxkp4jd --- .../Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs | 7 +++++++ test/Renci.SshNet.IntegrationTests/SftpTests.cs | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs b/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs index 036a122d5..fe407be54 100644 --- a/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs +++ b/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs @@ -7,5 +7,12 @@ public static void AreEqual(DateTime expected, DateTime actual) Assert.AreEqual(expected, actual, $"Expected {expected:o}, but was {actual:o}."); Assert.AreEqual(expected.Kind, actual.Kind); } + + public static void AreEqual(DateTime expected, DateTime actual, TimeSpan maxDelta) + { + TimeSpan actualDelta = (expected - actual).Duration(); + Assert.IsTrue(actualDelta <= maxDelta, $"Expected max delta of {maxDelta} between {expected:o} and {actual:o}, but was {actualDelta}"); + Assert.AreEqual(expected.Kind, actual.Kind); + } } } diff --git a/test/Renci.SshNet.IntegrationTests/SftpTests.cs b/test/Renci.SshNet.IntegrationTests/SftpTests.cs index 5b8373f60..d8f559d7f 100644 --- a/test/Renci.SshNet.IntegrationTests/SftpTests.cs +++ b/test/Renci.SshNet.IntegrationTests/SftpTests.cs @@ -6150,7 +6150,7 @@ public void Sftp_SetLastAccessTime() { var time = client.GetLastAccessTime(testFilePath); - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time); + DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local); @@ -6182,7 +6182,7 @@ public void Sftp_SetLastAccessTimeUtc() { var time = client.GetLastAccessTimeUtc(testFilePath); - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time); + DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Utc); @@ -6213,7 +6213,7 @@ public void Sftp_SetLastWriteTime() { var time = client.GetLastWriteTime(testFilePath); - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time); + DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local); From 5eccd3ccbe2600b96b363294a643e79efd168701 Mon Sep 17 00:00:00 2001 From: Marius Thesing Date: Tue, 4 Jun 2024 17:44:10 +0200 Subject: [PATCH 2/2] remove asserts --- .../Common/DateTimeAssert.cs | 7 ------- .../SftpTests.cs | 21 +++---------------- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs b/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs index fe407be54..036a122d5 100644 --- a/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs +++ b/test/Renci.SshNet.IntegrationTests/Common/DateTimeAssert.cs @@ -7,12 +7,5 @@ public static void AreEqual(DateTime expected, DateTime actual) Assert.AreEqual(expected, actual, $"Expected {expected:o}, but was {actual:o}."); Assert.AreEqual(expected.Kind, actual.Kind); } - - public static void AreEqual(DateTime expected, DateTime actual, TimeSpan maxDelta) - { - TimeSpan actualDelta = (expected - actual).Duration(); - Assert.IsTrue(actualDelta <= maxDelta, $"Expected max delta of {maxDelta} between {expected:o} and {actual:o}, but was {actualDelta}"); - Assert.AreEqual(expected.Kind, actual.Kind); - } } } diff --git a/test/Renci.SshNet.IntegrationTests/SftpTests.cs b/test/Renci.SshNet.IntegrationTests/SftpTests.cs index d8f559d7f..b89079e7b 100644 --- a/test/Renci.SshNet.IntegrationTests/SftpTests.cs +++ b/test/Renci.SshNet.IntegrationTests/SftpTests.cs @@ -6142,20 +6142,15 @@ public void Sftp_SetLastAccessTime() client.Connect(); using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent)); - var currentTime = DateTime.Now; client.UploadFile(fileStream, testFilePath); try { - var time = client.GetLastAccessTime(testFilePath); - - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); - var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local); client.SetLastAccessTime(testFilePath, newTime); - time = client.GetLastAccessTime(testFilePath); + var time = client.GetLastAccessTime(testFilePath); DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time); } @@ -6175,19 +6170,14 @@ public void Sftp_SetLastAccessTimeUtc() client.Connect(); using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent)); - var currentTime = DateTime.UtcNow; client.UploadFile(fileStream, testFilePath); try { - var time = client.GetLastAccessTimeUtc(testFilePath); - - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); - var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Utc); client.SetLastAccessTimeUtc(testFilePath, newTime); - time = client.GetLastAccessTimeUtc(testFilePath); + var time = client.GetLastAccessTimeUtc(testFilePath); DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time); } @@ -6206,19 +6196,14 @@ public void Sftp_SetLastWriteTime() client.Connect(); using var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(testContent)); - var currentTime = DateTime.Now; client.UploadFile(fileStream, testFilePath); try { - var time = client.GetLastWriteTime(testFilePath); - - DateTimeAssert.AreEqual(currentTime.TruncateToWholeSeconds(), time, TimeSpan.FromSeconds(1)); - var newTime = new DateTime(1986, 03, 15, 01, 02, 03, 123, DateTimeKind.Local); client.SetLastWriteTime(testFilePath, newTime); - time = client.GetLastWriteTime(testFilePath); + var time = client.GetLastWriteTime(testFilePath); DateTimeAssert.AreEqual(newTime.TruncateToWholeSeconds(), time); }