diff --git a/src/AppCommon/Commands/SqsCommand.cs b/src/AppCommon/Commands/SqsCommand.cs index 54d2aa99..118ed765 100644 --- a/src/AppCommon/Commands/SqsCommand.cs +++ b/src/AppCommon/Commands/SqsCommand.cs @@ -96,9 +96,9 @@ protected override async Task GetData(CancellationToken cancellati return new QueueDetails { - StartTime = new DateTimeOffset(aws.StartTimeUtc, TimeSpan.Zero), - EndTime = new DateTimeOffset(aws.EndTimeUtc, TimeSpan.Zero), - Queues = data.OrderBy(q => q.QueueName).ToArray(), + StartTime = new DateTimeOffset(aws.StartDate.ToDateTime(TimeOnly.MinValue), TimeSpan.Zero), + EndTime = new DateTimeOffset(aws.EndDate.ToDateTime(TimeOnly.MaxValue), TimeSpan.Zero), + Queues = [.. data.OrderBy(q => q.QueueName)], TimeOfObservation = TimeSpan.FromDays(1) }; } diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props index fac0eaca..83c106a2 100644 --- a/src/Directory.Packages.props +++ b/src/Directory.Packages.props @@ -6,19 +6,19 @@ - - - - - + + + + + - + - + diff --git a/src/Query/AmazonSQS/AwsQuery.cs b/src/Query/AmazonSQS/AwsQuery.cs index d39f95fc..d478c1f9 100644 --- a/src/Query/AmazonSQS/AwsQuery.cs +++ b/src/Query/AmazonSQS/AwsQuery.cs @@ -17,8 +17,8 @@ public class AwsQuery readonly AmazonSQSClient sqs; readonly FixedWindowRateLimiter rateLimiter; - public DateTime EndTimeUtc { get; set; } - public DateTime StartTimeUtc { get; set; } + public DateOnly EndDate { get; set; } + public DateOnly StartDate { get; set; } public string CloudWatchRegion => cloudWatch.Config.RegionEndpoint.SystemName; public string SQSRegion => sqs.Config.RegionEndpoint.SystemName; @@ -34,8 +34,8 @@ public AwsQuery() // Otherwise AcquireAsync() will return a lease immediately with IsAcquired = false QueueLimit = int.MaxValue }); - EndTimeUtc = DateTime.UtcNow.Date.AddDays(1); - StartTimeUtc = EndTimeUtc.AddDays(-30); + EndDate = DateOnly.FromDateTime(DateTime.UtcNow).AddDays(1); + StartDate = EndDate.AddDays(-30); sqs = new AmazonSQSClient(); cloudWatch = new AmazonCloudWatchClient(); @@ -58,7 +58,10 @@ public async Task> GetQueueNames(Action onProgress, Cancellati var response = await sqs.ListQueuesAsync(request, cancellationToken).ConfigureAwait(false); - queueNames.AddRange(response.QueueUrls.Select(url => url.Split('/')[4]).ToArray()); + if (response.QueueUrls is { Count: > 0 }) + { + queueNames.AddRange(response.QueueUrls.Select(url => url.Split('/')[4]).ToArray()); + } onProgress(queueNames.Count); @@ -86,19 +89,19 @@ public async Task GetMaxThroughput(string queueName, CancellationToken can { Namespace = "AWS/SQS", MetricName = "NumberOfMessagesDeleted", - StartTimeUtc = StartTimeUtc, - EndTimeUtc = EndTimeUtc, - Period = 86400, // 1 day + StartTime = StartDate.ToDateTime(TimeOnly.MinValue), + EndTime = EndDate.ToDateTime(TimeOnly.MaxValue), + Period = 24 * 60 * 60, // 1 day Statistics = ["Sum"], - Dimensions = [new Dimension { Name = "QueueName", Value = queueName }] + Dimensions = [ + new Dimension { Name = "QueueName", Value = queueName }] }; using var lease = await rateLimiter.AcquireAsync(cancellationToken: cancellationToken).ConfigureAwait(false); var resp = await cloudWatch.GetMetricStatisticsAsync(req, cancellationToken).ConfigureAwait(false); - var maxThroughput = resp.Datapoints.MaxBy(d => d.Sum)?.Sum ?? 0; - - return (long)maxThroughput; + return resp.Datapoints is { Count: > 0 } ? + (long)resp.Datapoints.Select(d => d.Sum.GetValueOrDefault(0)).Max() : 0L; } } } diff --git a/src/Query/AzureServiceBus/AzureClient.cs b/src/Query/AzureServiceBus/AzureClient.cs index 1fdc99b4..be17827a 100644 --- a/src/Query/AzureServiceBus/AzureClient.cs +++ b/src/Query/AzureServiceBus/AzureClient.cs @@ -53,7 +53,9 @@ IEnumerable CreateCredentials() yield return new EnvironmentCredential(); yield return new SharedTokenCacheCredential(); yield return new VisualStudioCredential(); +#pragma warning disable CS0618 // Type or member is obsolete yield return new VisualStudioCodeCredential(); +#pragma warning restore CS0618 // Type or member is obsolete // Don't really need this one to take 100s * 4 tries to finally time out var opts = new TokenCredentialOptions();