From 6579d4957d81c56af3c078b3023aea5d63b19e67 Mon Sep 17 00:00:00 2001 From: "Eric J. Smith" Date: Wed, 7 Aug 2024 15:40:12 -0500 Subject: [PATCH] Adapt to SystemClock removal --- src/Foundatio.AzureStorage/Queues/AzureStorageQueue.cs | 5 ++--- src/Foundatio.AzureStorage/Storage/AzureFileStorage.cs | 7 ++++--- .../Foundatio.AzureStorage.Tests.csproj | 5 +++++ .../Queues/AzureStorageQueueTests.cs | 3 ++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Foundatio.AzureStorage/Queues/AzureStorageQueue.cs b/src/Foundatio.AzureStorage/Queues/AzureStorageQueue.cs index dd5a4aa..67a6620 100644 --- a/src/Foundatio.AzureStorage/Queues/AzureStorageQueue.cs +++ b/src/Foundatio.AzureStorage/Queues/AzureStorageQueue.cs @@ -6,7 +6,6 @@ using Foundatio.AsyncEx; using Foundatio.Extensions; using Foundatio.Serializer; -using Foundatio.Utility; using Microsoft.Azure.Storage; using Microsoft.Azure.Storage.Queue; using Microsoft.Extensions.Logging; @@ -74,7 +73,7 @@ protected override async Task EnqueueImplAsync(T data, QueueEntryOptions var message = new CloudQueueMessage(_serializer.SerializeToBytes(data)); await _queueReference.AddMessageAsync(message, null, options.DeliveryDelay, null, null).AnyContext(); - var entry = new QueueEntry(message.Id, null, data, this, SystemClock.UtcNow, 0); + var entry = new QueueEntry(message.Id, null, data, this, _timeProvider.GetLocalNow().UtcDateTime, 0); await OnEnqueuedAsync(entry).AnyContext(); return message.Id; @@ -99,7 +98,7 @@ protected override async Task> DequeueImplAsync(CancellationToken try { if (!linkedCancellationToken.IsCancellationRequested) - await SystemClock.SleepAsync(_options.DequeueInterval, linkedCancellationToken).AnyContext(); + await _timeProvider.Delay(_options.DequeueInterval, linkedCancellationToken).AnyContext(); } catch (OperationCanceledException) { } diff --git a/src/Foundatio.AzureStorage/Storage/AzureFileStorage.cs b/src/Foundatio.AzureStorage/Storage/AzureFileStorage.cs index baa65e1..cc73155 100644 --- a/src/Foundatio.AzureStorage/Storage/AzureFileStorage.cs +++ b/src/Foundatio.AzureStorage/Storage/AzureFileStorage.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -8,7 +8,6 @@ using Foundatio.Azure.Extensions; using Foundatio.Extensions; using Foundatio.Serializer; -using Foundatio.Utility; using Microsoft.Azure.Storage; using Microsoft.Azure.Storage.Blob; using Microsoft.Extensions.Logging; @@ -21,12 +20,14 @@ public class AzureFileStorage : IFileStorage private readonly CloudBlobContainer _container; private readonly ISerializer _serializer; protected readonly ILogger _logger; + protected readonly TimeProvider _timeProvider; public AzureFileStorage(AzureFileStorageOptions options) { if (options == null) throw new ArgumentNullException(nameof(options)); + _timeProvider = options.TimeProvider ?? TimeProvider.System; _serializer = options.Serializer ?? DefaultSerializer.Instance; _logger = options.LoggerFactory?.CreateLogger(GetType()) ?? NullLogger.Instance; @@ -170,7 +171,7 @@ public async Task CopyFileAsync(string path, string targetPath, Cancellati await newBlob.StartCopyAsync(oldBlob, cancellationToken).AnyContext(); while (newBlob.CopyState.Status == CopyStatus.Pending) - await SystemClock.SleepAsync(50, cancellationToken).AnyContext(); + await _timeProvider.Delay(TimeSpan.FromMilliseconds(50), cancellationToken).AnyContext(); return newBlob.CopyState.Status == CopyStatus.Success; } diff --git a/tests/Foundatio.AzureStorage.Tests/Foundatio.AzureStorage.Tests.csproj b/tests/Foundatio.AzureStorage.Tests/Foundatio.AzureStorage.Tests.csproj index bd66f1b..e854e62 100644 --- a/tests/Foundatio.AzureStorage.Tests/Foundatio.AzureStorage.Tests.csproj +++ b/tests/Foundatio.AzureStorage.Tests/Foundatio.AzureStorage.Tests.csproj @@ -7,4 +7,9 @@ Always + + + docker-compose.yml + + \ No newline at end of file diff --git a/tests/Foundatio.AzureStorage.Tests/Queues/AzureStorageQueueTests.cs b/tests/Foundatio.AzureStorage.Tests/Queues/AzureStorageQueueTests.cs index 2d6d214..0984daa 100644 --- a/tests/Foundatio.AzureStorage.Tests/Queues/AzureStorageQueueTests.cs +++ b/tests/Foundatio.AzureStorage.Tests/Queues/AzureStorageQueueTests.cs @@ -16,7 +16,7 @@ public class AzureStorageQueueTests : QueueTestBase public AzureStorageQueueTests(ITestOutputHelper output) : base(output) { } - protected override IQueue GetQueue(int retries = 1, TimeSpan? workItemTimeout = null, TimeSpan? retryDelay = null, int[] retryMultipliers = null, int deadLetterMaxItems = 100, bool runQueueMaintenance = true) + protected override IQueue GetQueue(int retries = 1, TimeSpan? workItemTimeout = null, TimeSpan? retryDelay = null, int[] retryMultipliers = null, int deadLetterMaxItems = 100, bool runQueueMaintenance = true, TimeProvider timeProvider = null) { string connectionString = Configuration.GetConnectionString("AzureStorageConnectionString"); if (String.IsNullOrEmpty(connectionString)) @@ -31,6 +31,7 @@ protected override IQueue GetQueue(int retries = 1, TimeSpan? wo .RetryPolicy(retries <= 0 ? new NoRetry() : (IRetryPolicy)new ExponentialRetry(retryDelay.GetValueOrDefault(TimeSpan.FromMinutes(1)), retries)) .WorkItemTimeout(workItemTimeout.GetValueOrDefault(TimeSpan.FromMinutes(5))) .DequeueInterval(TimeSpan.FromMilliseconds(100)) + .TimeProvider(timeProvider) .LoggerFactory(Log)); }