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
5 changes: 3 additions & 2 deletions Shared.EventStore.Tests/TestDoubles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,12 @@ internal sealed class TestStateDispatcher : IStateDispatcher<TestState>
public Task Dispatch(TestState state, IDomainEvent @event, CancellationToken cancellationToken) => Task.CompletedTask;
}

internal sealed class TestLogger : ILogger
{
internal sealed class TestLogger : ILogger {
public bool IsInitialised { get; set; }
public List<string> ErrorMessages { get; } = new();
public List<Exception> ErrorExceptions { get; } = new();
public void LogCritical(String message) {}

public void LogCritical(Exception exception) { }
public void LogCritical(string message, Exception exception) { }
public void LogDebug(string message) { }
Expand Down
4 changes: 2 additions & 2 deletions Shared.EventStore/Aggregate/AggregateService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ internal static void EvictionCallback(Object key,
EvictionReason reason,
Object state)
{
Logger.Logger.LogWarning($"Key [{key}] of type [{value.GetType()}] removed from the cache {reason.ToString()}");
Logger.Logger.LogWarning("Key [{key}] of type [{value}] removed from the cache {reason}", key, value.GetType(), reason.ToString());
}

internal (Type, MemoryCacheEntryOptions, Object) GetAggregateType<TAggregate>() where TAggregate : Aggregate, new()
Expand Down Expand Up @@ -145,7 +145,7 @@ public async Task<Result<TAggregate>> Get<TAggregate>(Guid aggregateId,
return Result.Success(aggregate);
}

Logger.Logger.LogWarning($"aggregateResult failed {aggregateResult.Message}");
Logger.Logger.LogWarning("aggregateResult failed {aggregateResult}", aggregateResult.Message);
return aggregateResult;
}
finally
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public static async Task<Result> DispatchToHandlers(this IDomainEvent @event,
{
if (all.Exception != null)
{
Logger.Logger.LogError(all.Exception);
Logger.Logger.LogError(all.Exception,String.Empty);
return Result.Failure(all.Exception.GetExceptionMessages());
}
return Result.Failure(ex.GetExceptionMessages());
Expand Down
29 changes: 14 additions & 15 deletions Shared.EventStore/SubscriptionWorker/PersistentSubscription.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ private void SubscriptionDropped(KurrentDB.Client.PersistentSubscription arg1,
public void SubscriptionDropped(String reason)
{
this.Connected = false;
Logger.Logger.LogWarning($"Subscription dropped - {reason}");
Logger.Logger.LogWarning("Subscription dropped - {reason}", reason);

if (this.SubscriptionHasDropped != null) {
//Broadcast to owner
Expand All @@ -47,7 +47,7 @@ public void SubscriptionDropped(String reason)
public void EventHandlerMissing(String reason)
{
this.Connected = false;
Logger.Logger.LogWarning($"Event handler missing - {reason}");
Logger.Logger.LogWarning("Event handler missing - {reason}", reason);

if (this.EventHandlerIsMissing != null)
{
Expand Down Expand Up @@ -90,13 +90,11 @@ public async Task ConnectToSubscription(CancellationToken cancellationToken)
this.ToString(),
(level, message) =>
{
if (level == LogLevel.Warning)
{
if (level == LogLevel.Warning) {
Logger.Logger.LogWarning(message);
}
else
{
Logger.Logger.LogError(new Exception(message));
else {
Logger.Logger.LogError(message);
}
});

Expand All @@ -112,7 +110,7 @@ public static PersistentSubscription Create(IPersistentSubscriptionsClient persi

public override String ToString() => $"{this.PersistentSubscriptionDetails.StreamName}-{this.PersistentSubscriptionDetails.GroupName}";

private static String BuildFailureMessage(ResolvedEvent resolvedEvent,
private static (String messageTemplate, Object[]? args) BuildFailureMessage(ResolvedEvent resolvedEvent,
Result result)
{
String errors = result.Errors?.Any() == true
Expand All @@ -123,7 +121,9 @@ private static String BuildFailureMessage(ResolvedEvent resolvedEvent,
? $"Result status [{result.Status}]. Errors [{errors}]"
: $"Result was {result.Message}";

return $"Failed to process the event type {resolvedEvent.Event.EventType} {resolvedEvent.GetResolvedEventDataAsString()} {resultDetails}";
Object[] objectArray = new[] { resolvedEvent.Event.EventType, resolvedEvent.GetResolvedEventDataAsString(), resultDetails };

return ("Failed to process the event type {resolvedEventType} {resolvedEventString()} {resultDetails}", objectArray);
}

private static TenantIdentifiers GetTenantIdentifiersFromDomainEvent(IDomainEvent domainEvent)
Expand All @@ -138,7 +138,7 @@ private static TenantIdentifiers GetTenantIdentifiersFromDomainEvent(IDomainEven
}
catch (Exception)
{
Logger.Logger.LogWarning($"Unable to get estateId from request body [{domainEventAsString}]");
Logger.Logger.LogWarning("Unable to get estateId from request body [{domainEventAsString}]", domainEventAsString);
return TenantIdentifiers.Default();
}
}
Expand Down Expand Up @@ -191,7 +191,7 @@ internal async Task EventAppeared(KurrentDB.Client.PersistentSubscription persis
}
TenantContext.CurrentTenant = tenantContext;

Logger.Logger.LogInformation($"EventAppearedFromPersistentSubscription with Event Id {resolvedEvent.Event.EventId} event type {resolvedEvent.Event.EventType}");
Logger.Logger.LogInformation("EventAppearedFromPersistentSubscription with Event Id {resolvedEventId} event type {resolvedEventType}", resolvedEvent.Event.EventId, resolvedEvent.Event.EventType);

Result<List<IDomainEventHandler>> domainEventHandlersResult = domainEventHandlerResolver.GetDomainEventHandlers(domainEvent);

Expand All @@ -210,13 +210,12 @@ internal async Task EventAppeared(KurrentDB.Client.PersistentSubscription persis
await PersistentSubscriptionsHelper.AckEvent(persistentSubscription, resolvedEvent);
}
else {
Logger.Logger.LogError(BuildFailureMessage(resolvedEvent, result));
(String messageTemplate, Object[] args) failureDetails = BuildFailureMessage(resolvedEvent, result);
Logger.Logger.LogError(failureDetails.messageTemplate, failureDetails.args);
}
}
catch (Exception e) {
Exception ex = new($"Failed to process the event type {resolvedEvent.Event.EventType} {resolvedEvent.GetResolvedEventDataAsString()}", e);

Logger.Logger.LogError(ex);
Logger.Logger.LogError(e,"Failed to process the event type {eventType} {resolvedEvent}", resolvedEvent.Event.EventType, resolvedEvent.GetResolvedEventDataAsString());
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ public void EventStore_health_checks_reuse_their_http_client()
[Test]
public void Host_folder_mount_does_not_require_docker_platform()
{
ContainerBuilder builder = new();
ContainerBuilder builder = new("hello-world");

ContainerBuilder mountedBuilder = builder.MountHostFolder("trace");

Expand Down
3 changes: 2 additions & 1 deletion Shared.IntegrationTesting.Tests/GenericSteps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ public async Task StartSystem() {
String scenarioName = this.ScenarioContext.ScenarioInfo.Title.Replace(" ", String.Empty);
NlogLogger logger = new();
logger.Initialise(LogManager.GetLogger(scenarioName), scenarioName);
LogManager.AddHiddenAssembly(typeof(NlogLogger).Assembly);
LogManager.Setup().SetupLogFactory(setup =>
setup.AddCallSiteHiddenAssembly(typeof(NlogLogger).Assembly));

this.TestingContext.DockerHelper = new TestDockerHelper();
this.TestingContext.DockerHelper.Logger = logger;
Expand Down
60 changes: 26 additions & 34 deletions Shared.IntegrationTesting/TestContainers/BaseDockerHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -283,9 +283,8 @@ public virtual ContainerBuilder SetupCallbackHandlerContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.CallbackHandler).Data;

ContainerBuilder callbackHandlerContainer = new ContainerBuilder()
ContainerBuilder callbackHandlerContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.CallbackHandlerContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.CallbackHandlerDockerPort, true);
Expand Down Expand Up @@ -332,7 +331,10 @@ public virtual ContainerBuilder SetupKurrentDbContainer(){
{"EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP","true"},
{"EVENTSTORE_PROJECTION_EXECUTION_TIMEOUT","5000"}
};
ContainerBuilder kurrentDbContainer = new();

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.KurrentDb).Data;

ContainerBuilder kurrentDbContainer = new(imageDetails.imageName);

if (!this.IsSecureKurrentDb){
environmentVariables.Add("EVENTSTORE_INSECURE","true");
Expand All @@ -355,11 +357,10 @@ public virtual ContainerBuilder SetupKurrentDbContainer(){
String logfilePath = "/var/log/kurrentdb";
kurrentDbContainer = kurrentDbContainer.MountHostFolder(this.HostTraceFolder, logfilePath);

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.KurrentDb).Data;

this.Trace($"About to Start Kurrent Db Container using image [{imageDetails.imageName}]");

kurrentDbContainer = kurrentDbContainer.WithName(this.KurrentDbContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.WithPortBinding(DockerPorts.KurrentDbHttpDockerPort, true);

Expand Down Expand Up @@ -393,9 +394,8 @@ public virtual ContainerBuilder SetupFileProcessorContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.FileProcessor).Data;

ContainerBuilder fileProcessorContainer = new ContainerBuilder()
ContainerBuilder fileProcessorContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.FileProcessorContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.FileProcessorDockerPort, true);
Expand Down Expand Up @@ -441,9 +441,8 @@ protected virtual ContainerBuilder SetupEstateManagementUiContainer()

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.EstateManagementUI).Data;

ContainerBuilder containerBuilder = new ContainerBuilder()
ContainerBuilder containerBuilder = new ContainerBuilder(imageDetails.imageName)
.WithName(this.EstateManagementUiContainerName)
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.EstateManagementUIDockerPort,true);
Expand All @@ -460,11 +459,10 @@ public virtual ContainerBuilder SetupSubscriptionServiceContainer() {

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.SubscriptionService).Data;

ContainerBuilder subscriptionServiceContainer = new ContainerBuilder().WithName(this.SubscriptionServiceContainerName)
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.SubscriptionServiceDockerPort, true);
ContainerBuilder subscriptionServiceContainer = new ContainerBuilder(imageDetails.imageName).WithName(this.SubscriptionServiceContainerName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.SubscriptionServiceDockerPort, true);

return subscriptionServiceContainer;
}
Expand All @@ -480,11 +478,10 @@ public virtual ContainerBuilder SetupConfigHostContainer()

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.ConfigurationHost).Data;

ContainerBuilder configHostContainer = new ContainerBuilder().WithName(this.ConfigHostContainerName)
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.ConfigHostDockerPort, true);
ContainerBuilder configHostContainer = new ContainerBuilder(imageDetails.imageName).WithName(this.ConfigHostContainerName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.ConfigHostDockerPort, true);

return configHostContainer;
}
Expand All @@ -507,10 +504,9 @@ public virtual ContainerBuilder SetupMessagingServiceContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.MessagingService).Data;

ContainerBuilder messagingServiceContainer = new ContainerBuilder().WithName(this.MessagingServiceContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder);
ContainerBuilder messagingServiceContainer = new ContainerBuilder(imageDetails.imageName).WithName(this.MessagingServiceContainerName) // similar to WithName()
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder);

messagingServiceContainer = messagingServiceContainer
.WithPortBinding(DockerPorts.MessagingServiceDockerPort, true);
Expand Down Expand Up @@ -584,10 +580,10 @@ public virtual ContainerBuilder SetupSecurityServiceContainer()
public virtual ContainerBuilder ConfigureSqlContainer()
{
this.Trace("About to start SQL Server Container");

ContainerBuilder containerService = new ContainerBuilder()
(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.SqlServer).Data;

ContainerBuilder containerService = new ContainerBuilder(imageDetails.imageName)
.WithName(this.SqlServerContainerName) // similar to WithName()
.WithImage(this.GetImageDetails(ContainerType.SqlServer).Data.imageName)
.WithEnvironment("ACCEPT_EULA", "Y")
.WithEnvironment("SA_PASSWORD", this.SqlCredentials.password)
.WithPortBinding(1433, true);
Expand All @@ -611,9 +607,8 @@ public virtual ContainerBuilder SetupTestHostContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.TestHost).Data;

ContainerBuilder testHostContainer = new ContainerBuilder()
ContainerBuilder testHostContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.TestHostContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.TestHostPort, true);
Expand All @@ -636,9 +631,8 @@ public virtual ContainerBuilder SetupEstateReportingContainer()

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.EstateReporting).Data;

ContainerBuilder estateReportingContainer = new ContainerBuilder()
ContainerBuilder estateReportingContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.EstateReportingContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.EstateReportingDockerPort, true);
Expand Down Expand Up @@ -668,9 +662,8 @@ public virtual ContainerBuilder SetupTransactionProcessorAclContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.TransactionProcessorAcl).Data;

ContainerBuilder transactionProcessorACLContainer = new ContainerBuilder()
ContainerBuilder transactionProcessorACLContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.TransactionProcessorAclContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.TransactionProcessorAclDockerPort, true);
Expand Down Expand Up @@ -698,9 +691,8 @@ public virtual ContainerBuilder SetupTransactionProcessorContainer(){

(String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.TransactionProcessor).Data;

ContainerBuilder transactionProcessorContainer = new ContainerBuilder()
ContainerBuilder transactionProcessorContainer = new ContainerBuilder(imageDetails.imageName)
.WithName(this.TransactionProcessorContainerName) // similar to WithName()
.WithImage(imageDetails.imageName)
.WithEnvironment(environmentVariables)
.MountHostFolder(this.HostTraceFolder)
.WithPortBinding(DockerPorts.TransactionProcessorDockerPort, true);
Expand Down
4 changes: 1 addition & 3 deletions Shared.Logger/ILogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,12 @@ public interface ILogger
/// </value>
Boolean IsInitialised { get; set; }


void LogCritical(String message);

void LogCritical(Exception exception);

#pragma warning disable S2190 // This overload delegates to the required string-only overload; it does not call itself.
void LogCritical(String messageTemplate,
params Object?[] args) => this.LogCritical(FormatMessageTemplate(messageTemplate, args));
#pragma warning restore S2190

void LogCritical(Exception exception,
String messageTemplate,
Expand Down
Loading
Loading