Skip to content

Commit 60d0781

Browse files
committed
Add monthly highest usage
1 parent d0b1aee commit 60d0781

File tree

7 files changed

+34
-9
lines changed

7 files changed

+34
-9
lines changed

src/Particular.LicensingComponent.Contracts/EndpointThroughputSummary.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public class EndpointThroughputSummary
77
public bool IsKnownEndpoint { get; set; }
88
public string UserIndicator { get; set; }
99
public long MaxDailyThroughput { get; set; }
10+
public long MaxMonthlyThroughput { get; set; }
1011
}
1112

1213
public class UpdateUserIndicator

src/Particular.LicensingComponent.Contracts/ThroughputSettings.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@
22

33
using ServiceControl.Configuration;
44

5-
public class ThroughputSettings(string serviceControlQueue, string errorQueue, string transportType, string customerName, string serviceControlVersion)
5+
public class ThroughputSettings(
6+
string serviceControlQueue,
7+
string errorQueue,
8+
string transportType,
9+
string customerName,
10+
string serviceControlVersion)
611
{
712
public static readonly SettingsRootNamespace SettingsNamespace = new("LicensingComponent");
813

src/Particular.LicensingComponent/ThroughputCollector.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ public async Task<List<EndpointThroughputSummary>> GetThroughputSummary(Cancella
7171
Name = endpointData.Name,
7272
UserIndicator = endpointData.UserIndicator ?? (endpointData.IsKnownEndpoint ? Contracts.UserIndicator.NServiceBusEndpoint.ToString() : string.Empty),
7373
IsKnownEndpoint = endpointData.IsKnownEndpoint,
74-
MaxDailyThroughput = endpointData.ThroughputData.Max()
74+
MaxDailyThroughput = endpointData.ThroughputData.MaxDailyThroughput(),
75+
MaxMonthlyThroughput = endpointData.ThroughputData.MaxMonthlyThroughput()
7576
};
7677

7778
endpointSummaries.Add(endpointSummary);
@@ -130,7 +131,7 @@ public async Task<SignedReport> GenerateThroughputReport(string spVersion, DateT
130131
EndpointIndicators = endpointData.EndpointIndicators ?? [],
131132
NoDataOrSendOnly = endpointData.ThroughputData.Sum() == 0,
132133
Scope = endpointData.Scope ?? "",
133-
Throughput = endpointData.ThroughputData.Max(),
134+
Throughput = endpointData.ThroughputData.MaxDailyThroughput(),
134135
DailyThroughputFromAudit = endpointData.ThroughputData.FromSource(ThroughputSource.Audit).Select(s => new DailyThroughput { DateUTC = s.DateUTC, MessageCount = s.MessageCount }).ToArray(),
135136
DailyThroughputFromMonitoring = endpointData.ThroughputData.FromSource(ThroughputSource.Monitoring).Select(s => new DailyThroughput { DateUTC = s.DateUTC, MessageCount = s.MessageCount }).ToArray(),
136137
DailyThroughputFromBroker = notAnNsbEndpoint ? [] : endpointData.ThroughputData.FromSource(ThroughputSource.Broker).Select(s => new DailyThroughput { DateUTC = s.DateUTC, MessageCount = s.MessageCount }).ToArray()

src/Particular.LicensingComponent/ThroughputDataExtensions.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static IEnumerable<EndpointDailyThroughput> FromSource(this List<Throughp
1010

1111
public static long Sum(this List<ThroughputData> throughputs) => throughputs.SelectMany(t => t).Sum(kvp => kvp.Value);
1212

13-
public static long Max(this List<ThroughputData> throughputs)
13+
public static long MaxDailyThroughput(this List<ThroughputData> throughputs)
1414
{
1515
var items = throughputs.SelectMany(t => t).ToArray();
1616

@@ -22,6 +22,22 @@ public static long Max(this List<ThroughputData> throughputs)
2222
return 0;
2323
}
2424

25+
public static long MaxMonthlyThroughput(this List<ThroughputData> throughputs)
26+
{
27+
var monthlySums = throughputs
28+
.SelectMany(data => data)
29+
.GroupBy(kvp => $"{kvp.Key.Year}-{kvp.Key.Month}")
30+
.Select(group => group.Sum(kvp => kvp.Value))
31+
.ToArray();
32+
33+
if (monthlySums.Any())
34+
{
35+
return monthlySums.Max();
36+
}
37+
38+
return 0;
39+
}
40+
2541
public static bool HasDataFromSource(this IDictionary<string, IEnumerable<ThroughputData>> throughputPerQueue, ThroughputSource source) =>
2642
throughputPerQueue.Any(queueName => queueName.Value.Any(data => data.ThroughputSource == source && data.Count > 0));
2743
}

src/ServiceControl.LicenseManagement/LicenseDetails.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
namespace ServiceControl.LicenseManagement
22
{
33
using System;
4-
using System.Collections.Generic;
54
using Particular.Licensing;
65

76
public class LicenseDetails

src/ServiceControl.Persistence.RavenDB/Throughput/LicensingDataStore.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,14 @@ public async Task SaveEndpoint(Endpoint endpoint, CancellationToken cancellation
122122

123123
public async Task<IDictionary<string, IEnumerable<ThroughputData>>> GetEndpointThroughputByQueueName(IList<string> queueNames, CancellationToken cancellationToken)
124124
{
125-
var results = queueNames.ToDictionary(queueName => queueName, queueNames => new List<ThroughputData>() as IEnumerable<ThroughputData>);
125+
var results = queueNames.ToDictionary(queueName => queueName, _ => new List<ThroughputData>() as IEnumerable<ThroughputData>);
126126

127127
var store = await storeProvider.GetDocumentStore(cancellationToken);
128128
using IAsyncDocumentSession session = store.OpenAsyncSession(databaseConfiguration.Name);
129129

130130
var query = session.Query<EndpointDocument>()
131131
.Where(document => document.SanitizedName.In(queueNames))
132-
.Include(builder => builder.IncludeTimeSeries(ThroughputTimeSeriesName));
132+
.Include(builder => builder.IncludeTimeSeries(ThroughputTimeSeriesName, DateTime.UtcNow.AddMonths(-14)));
133133

134134
var documents = await query.ToListAsync(cancellationToken);
135135

src/ServiceControl/Licensing/LicensingComponent.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@ namespace Particular.ServiceControl;
1111
class LicensingComponent : ServiceControlComponent
1212
{
1313
public override void Configure(Settings settings, ITransportCustomization transportCustomization,
14-
IHostApplicationBuilder hostBuilder) =>
14+
IHostApplicationBuilder hostBuilder)
15+
{
16+
var licenseDetails = LicenseManager.FindLicense().Details;
1517
hostBuilder.AddLicensingComponent(
1618
TransportManifestLibrary.Find(settings.TransportType)?.Name ?? settings.TransportType,
1719
settings.ErrorQueue,
1820
settings.InstanceName,
19-
LicenseManager.FindLicense().Details.RegisteredTo,
21+
licenseDetails.RegisteredTo,
2022
ServiceControlVersion.GetFileVersion());
23+
}
2124

2225
public override void Setup(Settings settings, IComponentInstallationContext context,
2326
IHostApplicationBuilder hostBuilder) =>

0 commit comments

Comments
 (0)