Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
using Moq;
using Shouldly;
using TransactionProcessor.Mobile.BusinessLogic.Database;
using TransactionProcessor.Mobile.BusinessLogic.Models;
using TransactionProcessor.Mobile.BusinessLogic.RequestHandlers;
using TransactionProcessor.Mobile.BusinessLogic.Requests;
using TransactionProcessor.Mobile.BusinessLogic.Services;
using LogLevel = TransactionProcessor.Mobile.BusinessLogic.Database.LogLevel;
using LogMessage = TransactionProcessor.Mobile.BusinessLogic.Database.LogMessage;

namespace TransactionProcessor.Mobile.BusinessLogic.Tests.RequestHandlerTests;

Expand All @@ -22,7 +25,7 @@ public async Task SupportRequestHandlerTests_UploadLogsRequest_NoLogs_Handle_IsH
Mock<IDatabaseContext> databaseContext = new Mock<IDatabaseContext>();
databaseContext.Setup(d => d.GetLogMessages(It.IsAny<Int32>(), It.IsAny<Boolean>())).ReturnsAsync(new List<Database.LogMessage>());
Mock<IApplicationCache> applicationCache = new Mock<IApplicationCache>();

applicationCache.Setup(s => s.GetConfiguration()).Returns(new Configuration());
SupportRequestHandler handler = new SupportRequestHandler(configurationServiceResolver, databaseContext.Object, applicationCache.Object);

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

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

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

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

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

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,6 @@ public class Configuration
public Boolean EnableAutoUpdates { get; set; }

public Boolean ShowDebugMessages { get; set; }
public Int32? LogMessageBatchSize { get; set; }
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
using MediatR;
using TransactionProcessor.Mobile.BusinessLogic.Database;
using TransactionProcessor.Mobile.BusinessLogic.Models;
using TransactionProcessor.Mobile.BusinessLogic.Requests;
using TransactionProcessor.Mobile.BusinessLogic.Services;
using LogMessage = TransactionProcessor.Mobile.BusinessLogic.Database.LogMessage;

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

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

if (logEntries.Any() == false)
{
if (logEntries.Any() == false) {
break;
}

List<Models.LogMessage> logMessageModels = new List<Models.LogMessage>();
List<Models.LogMessage> logMessageModels = new();

logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage
{
logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage {
LogLevel = Enum.Parse<Models.LogLevel>(l.LogLevel),
LogLevelString = l.LogLevel,
Message = l.Message,
EntryDateTime = l.EntryDateTime,
Id = l.Id
}));

IConfigurationService configurationService = this.ConfigurationServiceResolver(useTrainingMode);

await configurationService.PostDiagnosticLogs(request.DeviceIdentifier, logMessageModels, CancellationToken.None);

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

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

List<Models.LogMessage> logMessageModels = new List<Models.LogMessage>();
List<Models.LogMessage> logMessageModels = new();

logEntries.ForEach(l => logMessageModels.Add(new Models.LogMessage {
LogLevel = Enum.Parse<Models.LogLevel>(l.LogLevel),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public async Task<Result<Configuration>> GetConfiguration(String deviceIdentifie
SecurityServiceUri = apiResponse.HostAddresses.Single(h => h.ServiceType == ServiceType.Security).Uri,
TransactionProcessorAclUri =
apiResponse.HostAddresses.Single(h => h.ServiceType == ServiceType.TransactionProcessorAcl).Uri,
LogMessageBatchSize = apiResponse.LogMessageBatchSize.GetValueOrDefault(),
};

Logger.LogDebug($"About to xlate log level");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@ public class ConfigurationResponse
public string Id { get; set; }

public LoggingLevel LogLevel { get; set; }

public Int32? LogMessageBatchSize { get; set; }
}
Loading