Skip to content

Commit 3d2846b

Browse files
Merge pull request #534 from TransactionProcessing/task/#516_todo_completed
Make log upload batch size configurable via settings
2 parents 2410187 + 868dc6b commit 3d2846b

5 files changed

Lines changed: 22 additions & 12 deletions

File tree

TransactionProcessor.Mobile.BusinessLogic.Tests/RequestHandlerTests/SupportRequestHandlerTests.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
using Moq;
22
using Shouldly;
33
using TransactionProcessor.Mobile.BusinessLogic.Database;
4+
using TransactionProcessor.Mobile.BusinessLogic.Models;
45
using TransactionProcessor.Mobile.BusinessLogic.RequestHandlers;
56
using TransactionProcessor.Mobile.BusinessLogic.Requests;
67
using TransactionProcessor.Mobile.BusinessLogic.Services;
8+
using LogLevel = TransactionProcessor.Mobile.BusinessLogic.Database.LogLevel;
9+
using LogMessage = TransactionProcessor.Mobile.BusinessLogic.Database.LogMessage;
710

811
namespace TransactionProcessor.Mobile.BusinessLogic.Tests.RequestHandlerTests;
912

@@ -22,7 +25,7 @@ public async Task SupportRequestHandlerTests_UploadLogsRequest_NoLogs_Handle_IsH
2225
Mock<IDatabaseContext> databaseContext = new Mock<IDatabaseContext>();
2326
databaseContext.Setup(d => d.GetLogMessages(It.IsAny<Int32>(), It.IsAny<Boolean>())).ReturnsAsync(new List<Database.LogMessage>());
2427
Mock<IApplicationCache> applicationCache = new Mock<IApplicationCache>();
25-
28+
applicationCache.Setup(s => s.GetConfiguration()).Returns(new Configuration());
2629
SupportRequestHandler handler = new SupportRequestHandler(configurationServiceResolver, databaseContext.Object, applicationCache.Object);
2730

2831
UploadLogsRequest request = UploadLogsRequest.Create(TestData.DeviceIdentifier);
@@ -56,6 +59,7 @@ public async Task SupportRequestHandlerTests_UploadLogsRequest_LogsToUpload_Only
5659
}).ReturnsAsync(new List<Database.LogMessage>());
5760

5861
Mock<IApplicationCache> applicationCache = new Mock<IApplicationCache>();
62+
applicationCache.Setup(s => s.GetConfiguration()).Returns(new Configuration());
5963

6064
SupportRequestHandler handler = new SupportRequestHandler(configurationServiceResolver, databaseContext.Object, applicationCache.Object);
6165

@@ -98,6 +102,7 @@ public async Task SupportRequestHandlerTests_UploadLogsRequest_LogsToUpload_15Me
98102
}).ReturnsAsync(new List<Database.LogMessage>());
99103

100104
Mock<IApplicationCache> applicationCache = new Mock<IApplicationCache>();
105+
applicationCache.Setup(s => s.GetConfiguration()).Returns(new Configuration());
101106

102107
SupportRequestHandler handler = new SupportRequestHandler(configurationServiceResolver, databaseContext.Object, applicationCache.Object);
103108

TransactionProcessor.Mobile.BusinessLogic/Models/TokenResponseModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ public class Configuration
3838
public Boolean EnableAutoUpdates { get; set; }
3939

4040
public Boolean ShowDebugMessages { get; set; }
41+
public Int32? LogMessageBatchSize { get; set; }
4142
}
4243
}

TransactionProcessor.Mobile.BusinessLogic/RequestHandlers/SupportRequestHandler.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using MediatR;
22
using TransactionProcessor.Mobile.BusinessLogic.Database;
3+
using TransactionProcessor.Mobile.BusinessLogic.Models;
34
using TransactionProcessor.Mobile.BusinessLogic.Requests;
45
using TransactionProcessor.Mobile.BusinessLogic.Services;
6+
using LogMessage = TransactionProcessor.Mobile.BusinessLogic.Database.LogMessage;
57

68
namespace TransactionProcessor.Mobile.BusinessLogic.RequestHandlers
79
{
@@ -25,28 +27,27 @@ public SupportRequestHandler(Func<Boolean, IConfigurationService> configurationS
2527
public async Task<Boolean> Handle(UploadLogsRequest request, CancellationToken cancellationToken)
2628
{
2729
Boolean useTrainingMode = this.ApplicationCache.GetUseTrainingMode();
30+
Configuration configuration = this.ApplicationCache.GetConfiguration();
31+
while (true) {
32+
IConfigurationService configurationService = this.ConfigurationServiceResolver(useTrainingMode);
2833

29-
while (true)
30-
{
31-
List<LogMessage> logEntries = await this.DatabaseContext.GetLogMessages(10, useTrainingMode); // TODO: Configurable batch size
34+
List<LogMessage> logEntries = await this.DatabaseContext.GetLogMessages(configuration.LogMessageBatchSize.GetValueOrDefault(10), useTrainingMode);
3235

33-
if (logEntries.Any() == false)
34-
{
36+
if (logEntries.Any() == false) {
3537
break;
3638
}
3739

38-
List<Models.LogMessage> logMessageModels = new List<Models.LogMessage>();
40+
List<Models.LogMessage> logMessageModels = new();
3941

40-
logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage
41-
{
42+
logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage {
4243
LogLevel = Enum.Parse<Models.LogLevel>(l.LogLevel),
4344
LogLevelString = l.LogLevel,
4445
Message = l.Message,
4546
EntryDateTime = l.EntryDateTime,
4647
Id = l.Id
4748
}));
4849

49-
IConfigurationService configurationService = this.ConfigurationServiceResolver(useTrainingMode);
50+
5051
await configurationService.PostDiagnosticLogs(request.DeviceIdentifier, logMessageModels, CancellationToken.None);
5152

5253
// Clear the logs that have been uploaded
@@ -60,9 +61,9 @@ public async Task<Boolean> Handle(UploadLogsRequest request, CancellationToken c
6061
CancellationToken cancellationToken) {
6162
Boolean useTrainingMode = this.ApplicationCache.GetUseTrainingMode();
6263

63-
List<LogMessage> logEntries = await this.DatabaseContext.GetLogMessages(50, useTrainingMode); // TODO: Configurable batch size
64+
List<LogMessage> logEntries = await this.DatabaseContext.GetLogMessages(50, useTrainingMode);
6465

65-
List<Models.LogMessage> logMessageModels = new List<Models.LogMessage>();
66+
List<Models.LogMessage> logMessageModels = new();
6667

6768
logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage {
6869
LogLevel = Enum.Parse<Models.LogLevel>(l.LogLevel),

TransactionProcessor.Mobile.BusinessLogic/Services/ConfigurationService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public async Task<Result<Configuration>> GetConfiguration(String deviceIdentifie
8181
SecurityServiceUri = apiResponse.HostAddresses.Single(h => h.ServiceType == ServiceType.Security).Uri,
8282
TransactionProcessorAclUri =
8383
apiResponse.HostAddresses.Single(h => h.ServiceType == ServiceType.TransactionProcessorAcl).Uri,
84+
LogMessageBatchSize = apiResponse.LogMessageBatchSize.GetValueOrDefault(),
8485
};
8586

8687
Logger.LogDebug($"About to xlate log level");

TransactionProcessor.Mobile.BusinessLogic/Services/DataTransferObjects/ConfigurationResponse.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@ public class ConfigurationResponse
1919
public string Id { get; set; }
2020

2121
public LoggingLevel LogLevel { get; set; }
22+
23+
public Int32? LogMessageBatchSize { get; set; }
2224
}

0 commit comments

Comments
 (0)