Skip to content

Commit 42dec58

Browse files
Merge pull request #217 from TransactionProcessing/task/#end_to_end_correlationid
first cut with end to end correlation id
2 parents 69222b5 + 61e849b commit 42dec58

18 files changed

Lines changed: 142 additions & 48 deletions

.github/workflows/android_e2e_tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,25 +163,25 @@ jobs:
163163
run: dotnet test TransactionProcessor.Mobile.UITests/TransactionProcessor.Mobile.UITests.csproj --filter "(Category=PRTest)&(Category=Android)" --no-restore
164164

165165
- name: Upload Logs on Failure
166-
if: failure() # Runs only if a previous step fails
166+
#if: failure() # Runs only if a previous step fails
167167
uses: actions/upload-artifact@v4
168168
with:
169169
name: android-e2e_tests
170170
path: /home/txnproc/trace/
171171

172172
- name: Upload Appium Logs on Failure
173-
if: failure()
173+
#if: failure()
174174
uses: actions/upload-artifact@v4
175175
with:
176176
name: android-e2e_tests_appium
177177
path: appium.log
178178

179179
- name: Capture emulator logs
180-
if: failure()
180+
#if: failure()
181181
run: adb logcat -d > emulator-log.txt
182182

183183
- name: Upload emulator logs
184-
if: failure()
184+
#if: failure()
185185
uses: actions/upload-artifact@v4
186186
with:
187187
name: android-emulator-logs

TransactionProcessor.Mobile.BusinessLogic/Common/IdGenerationService.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,32 @@
2828
2929
public static Guid GenerateGuid(Object o) => IdGenerationService.GenerateUniqueId(o);
3030
}*/
31+
32+
public static class CorrelationIdProvider
33+
{
34+
private static readonly AsyncLocal<string?> _correlationId = new();
35+
36+
public static string CorrelationId
37+
{
38+
get
39+
{
40+
if (string.IsNullOrWhiteSpace(_correlationId.Value))
41+
{
42+
_correlationId.Value = Guid.NewGuid().ToString();
43+
}
44+
45+
return _correlationId.Value;
46+
}
47+
set => _correlationId.Value = value;
48+
}
49+
50+
//public static string? CorrelationId
51+
//{
52+
// get => _correlationId.Value;
53+
// set => _correlationId.Value = value;
54+
//}
55+
56+
//public static void New() => CorrelationId = Guid.NewGuid().ToString();
57+
public static void NewId() => CorrelationId = Guid.NewGuid().ToString();
58+
}
3159
}

TransactionProcessor.Mobile.BusinessLogic/Logging/ConsoleLogger.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
using System.Diagnostics.CodeAnalysis;
2+
using TransactionProcessor.Mobile.BusinessLogic.Common;
23
using TransactionProcessor.Mobile.BusinessLogic.Models;
34

45
namespace TransactionProcessor.Mobile.BusinessLogic.Logging;
56

67
[ExcludeFromCodeCoverage]
78
public class ConsoleLogger : ILogger{
9+
810
#region Constructors
911

10-
public ConsoleLogger(){
12+
public ConsoleLogger() {
1113
this.IsInitialised = true;
1214
}
1315

@@ -23,17 +25,16 @@ public ConsoleLogger(){
2325

2426
internal void Log(LogMessage logMessageModel)
2527
{
26-
List<LogMessage> logMessageModels = new List<LogMessage>{
27-
logMessageModel
28-
};
28+
List<LogMessage> logMessageModels = [logMessageModel];
2929
this.Log(logMessageModels);
3030
}
3131

3232
internal void Log(List<LogMessage> logMessageModels)
3333
{
34+
String correlationId = CorrelationIdProvider.CorrelationId;
3435
foreach (LogMessage item in logMessageModels)
3536
{
36-
Console.WriteLine($"AppLog|{item.EntryDateTime}|{item.LogLevel}|{item.Message}");
37+
Console.WriteLine($"AppLog|{item.EntryDateTime}|Correlation Id: {correlationId}|{item.LogLevel}|{item.Message}");
3738
}
3839
}
3940

TransactionProcessor.Mobile.BusinessLogic/RequestHandlers/TransactionRequestHandler.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using MediatR;
2+
using Microsoft.Extensions.Logging;
23
using Newtonsoft.Json;
34
using SimpleResults;
5+
using System.Diagnostics;
46
using TransactionProcessor.Mobile.BusinessLogic.Common;
57
using TransactionProcessor.Mobile.BusinessLogic.Database;
68
using TransactionProcessor.Mobile.BusinessLogic.Models;

TransactionProcessor.Mobile.BusinessLogic/ViewModels/Admin/AdminPageViewModel.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
using System.Windows.Input;
2-
using CommunityToolkit.Mvvm.Input;
1+
using CommunityToolkit.Mvvm.Input;
32
using MediatR;
43
using MvvmHelpers.Commands;
54
using SimpleResults;
5+
using System.Windows.Input;
6+
using TransactionProcessor.Mobile.BusinessLogic.Common;
67
using TransactionProcessor.Mobile.BusinessLogic.Models;
78
using TransactionProcessor.Mobile.BusinessLogic.Requests;
89
using TransactionProcessor.Mobile.BusinessLogic.Services;
@@ -37,6 +38,7 @@ public AdminPageViewModel(IMediator mediator, INavigationService navigationServi
3738
[RelayCommand]
3839
private async Task Reconciliation()
3940
{
41+
CorrelationIdProvider.NewId();
4042
PerformReconciliationRequest request =
4143
PerformReconciliationRequest.Create(DateTime.Now, String.Empty, this.ApplicationInfoService.VersionString);
4244

TransactionProcessor.Mobile.BusinessLogic/ViewModels/LoginPageViewModel.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Diagnostics;
88
using System.Diagnostics.CodeAnalysis;
99
using System.Windows.Input;
10+
using TransactionProcessor.Mobile.BusinessLogic.Common;
1011
using TransactionProcessor.Mobile.BusinessLogic.Logging;
1112
using TransactionProcessor.Mobile.BusinessLogic.Models;
1213
using TransactionProcessor.Mobile.BusinessLogic.Requests;
@@ -155,6 +156,8 @@ private async Task<Result<Decimal>> GetMerchantBalance() {
155156

156157
[RelayCommand]
157158
private async Task Logon(){
159+
CorrelationIdProvider.NewId();
160+
158161
this.CacheUseTrainingMode();
159162

160163
Stopwatch sw = Stopwatch.StartNew();

TransactionProcessor.Mobile.BusinessLogic/ViewModels/MyAccount/MyAccountPageViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ private async Task LogoutCommandExecute() {
105105

106106
[RelayCommand]
107107
private async Task OptionSelected(ItemSelected<ListViewItem> arg) {
108+
CorrelationIdProvider.NewId();
108109
AccountOptions selectedOption = (AccountOptions)arg.SelectedItemIndex;
109110

110111
Task navigationTask = selectedOption switch {

TransactionProcessor.Mobile.BusinessLogic/ViewModels/Reports/ReportsPageViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public override async Task Initialise(CancellationToken cancellationToken)
5757
[RelayCommand]
5858
private async Task OptionSelected(ItemSelected<ListViewItem> arg)
5959
{
60+
CorrelationIdProvider.NewId();
6061
ReportsOptions selectedOption = (ReportsOptions)arg.SelectedItemIndex;
6162

6263
Task navigationTask = selectedOption switch

TransactionProcessor.Mobile.BusinessLogic/ViewModels/Reports/ReportsSalesAnalysisPageViewModel.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using System.Diagnostics.CodeAnalysis;
2-
using CommunityToolkit.Mvvm.Input;
1+
using CommunityToolkit.Mvvm.Input;
32
using LiveChartsCore;
43
using LiveChartsCore.Defaults;
54
using LiveChartsCore.Kernel.Sketches;
65
using LiveChartsCore.Measure;
76
using LiveChartsCore.SkiaSharpView;
87
using MediatR;
8+
using System.Diagnostics.CodeAnalysis;
9+
using TransactionProcessor.Mobile.BusinessLogic.Common;
910
using TransactionProcessor.Mobile.BusinessLogic.Services;
1011
using TransactionProcessor.Mobile.BusinessLogic.UIServices;
1112

TransactionProcessor.Mobile.BusinessLogic/ViewModels/Support/SupportPageViewModel.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
using System.Text;
2-
using System.Windows.Input;
3-
using CommunityToolkit.Mvvm.Input;
1+
using CommunityToolkit.Mvvm.Input;
42
using MediatR;
53
using MvvmHelpers.Commands;
4+
using System.Text;
5+
using System.Windows.Input;
6+
using TransactionProcessor.Mobile.BusinessLogic.Common;
67
using TransactionProcessor.Mobile.BusinessLogic.Database;
78
using TransactionProcessor.Mobile.BusinessLogic.Logging;
89
using TransactionProcessor.Mobile.BusinessLogic.Requests;
@@ -65,6 +66,7 @@ public String Platform {
6566

6667
[RelayCommand]
6768
private async Task UploadLogs() {
69+
CorrelationIdProvider.NewId();
6870
Logger.LogInformation("UploadLogs called");
6971

7072
UploadLogsRequest uploadLogsRequest = UploadLogsRequest.Create(String.Empty);

0 commit comments

Comments
 (0)