Skip to content
Draft
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
8 changes: 4 additions & 4 deletions src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
<PackageVersion Include="Microsoft-WindowsAPICodePack-Shell" Version="1.1.5" />
<PackageVersion Include="Mindscape.Raygun4Net.NetCore" Version="11.2.5" />
<PackageVersion Include="NLog.Extensions.Logging" Version="6.1.3" />
<PackageVersion Include="NServiceBus" Version="10.1.4" />
<PackageVersion Include="NServiceBus.AcceptanceTesting" Version="10.1.4" />
<PackageVersion Include="NServiceBus" Version="10.2.0-alpha.8" />
<PackageVersion Include="NServiceBus.AcceptanceTesting" Version="10.2.0-alpha.8" />
<PackageVersion Include="NServiceBus.AmazonSQS" Version="9.0.1" />
<PackageVersion Include="NServiceBus.CustomChecks" Version="6.0.1" />
<PackageVersion Include="NServiceBus.Extensions.Hosting" Version="4.0.1" />
Expand All @@ -52,7 +52,7 @@
<PackageVersion Include="NServiceBus.Transport.Msmq.Sources" Version="4.0.1" />
<PackageVersion Include="NServiceBus.Transport.PostgreSql" Version="9.0.1" />
<PackageVersion Include="NServiceBus.Transport.SqlServer" Version="9.0.1" />
<PackageVersion Include="NServiceBus.Transport.IBMMQ" Version="1.0.1"/>
<PackageVersion Include="NServiceBus.Transport.IBMMQ" Version="1.0.1" />
<PackageVersion Include="NuGet.Versioning" Version="7.3.1" />
<PackageVersion Include="NUnit" Version="4.6.0" />
<PackageVersion Include="NUnit.Analyzers" Version="4.13.0" />
Expand Down Expand Up @@ -94,4 +94,4 @@
<GlobalPackageReference Include="Microsoft.Build.CopyOnWrite" Version="1.0.334" />
<GlobalPackageReference Include="Particular.Packaging" Version="4.5.0" />
</ItemGroup>
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
using System.Reflection;
using System.Threading.Tasks;
using InfrastructureConfig;
using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.AcceptanceTesting.Support;
Expand Down Expand Up @@ -62,19 +61,6 @@ public static async Task DefinePersistence(this EndpointConfiguration config, Ru
runDescriptor.OnTestCompleted(_ => persistenceConfiguration.Cleanup());
}

public static void RegisterComponentsAndInheritanceHierarchy(this EndpointConfiguration builder, RunDescriptor runDescriptor) => builder.RegisterComponents(services => { RegisterInheritanceHierarchyOfContextOnContainer(runDescriptor, services); });

static void RegisterInheritanceHierarchyOfContextOnContainer(RunDescriptor runDescriptor,
IServiceCollection services)
{
var type = runDescriptor.ScenarioContext.GetType();
while (type != typeof(object))
{
services.AddSingleton(type, runDescriptor.ScenarioContext);
type = type.BaseType;
}
}

public static void NoImmediateRetries(this EndpointConfiguration configuration)
=> configuration.Recoverability().Immediate(x => x.NumberOfRetries(0));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ public virtual async Task<EndpointConfiguration> GetConfiguration(RunDescriptor
await endpointTestExecutionConfiguration.Configure(endpointCustomizations.EndpointName, endpointConfiguration, runDescriptor.Settings, endpointCustomizations.PublisherMetadata);
runDescriptor.OnTestCompleted(_ => endpointTestExecutionConfiguration.Cleanup());

endpointConfiguration.RegisterComponentsAndInheritanceHierarchy(runDescriptor);
await endpointConfiguration.DefinePersistence(runDescriptor, endpointCustomizations);

endpointConfiguration.UseSerialization<SystemJsonSerializer>();
Expand Down
20 changes: 3 additions & 17 deletions src/ServiceControl.AcceptanceTesting/TraceIncomingBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,11 @@ namespace ServiceControl.AcceptanceTesting
using NServiceBus.Pipeline;
using NServiceBus.Settings;

public class TraceIncomingBehavior : IBehavior<IIncomingLogicalMessageContext, IIncomingLogicalMessageContext>
public class TraceIncomingBehavior(IReadOnlySettings settings) : IBehavior<IIncomingLogicalMessageContext, IIncomingLogicalMessageContext>
{
public TraceIncomingBehavior(ScenarioContext scenarioContext, IReadOnlySettings settings)
{
this.scenarioContext = scenarioContext;
this.settings = settings;
}

public Task Invoke(IIncomingLogicalMessageContext context, Func<IIncomingLogicalMessageContext, Task> next)
{
var scenarioContext = settings.Get<ScenarioContext>();
scenarioContext.Logs.Enqueue(new ScenarioContext.LogItem
{
Endpoint = settings.EndpointName(),
Expand All @@ -28,15 +23,6 @@ public Task Invoke(IIncomingLogicalMessageContext context, Func<IIncomingLogical
return next(context);
}

ScenarioContext scenarioContext;
IReadOnlySettings settings;

public class Registration : RegisterStep
{
public Registration()
: base("TraceIncomingBehavior", typeof(TraceIncomingBehavior), "Adds incoming messages to the acceptance test trace")
{
}
}
public class Registration() : RegisterStep("TraceIncomingBehavior", typeof(TraceIncomingBehavior), "Adds incoming messages to the acceptance test trace");
}
}
20 changes: 3 additions & 17 deletions src/ServiceControl.AcceptanceTesting/TraceOutgoingBehavior.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,11 @@ namespace ServiceControl.AcceptanceTesting
using NServiceBus.Pipeline;
using NServiceBus.Settings;

public class TraceOutgoingBehavior : IBehavior<IOutgoingLogicalMessageContext, IOutgoingLogicalMessageContext>
public class TraceOutgoingBehavior(IReadOnlySettings settings) : IBehavior<IOutgoingLogicalMessageContext, IOutgoingLogicalMessageContext>
{
public TraceOutgoingBehavior(ScenarioContext scenarioContext, IReadOnlySettings settings)
{
this.scenarioContext = scenarioContext;
this.settings = settings;
}

public Task Invoke(IOutgoingLogicalMessageContext context, Func<IOutgoingLogicalMessageContext, Task> next)
{
var scenarioContext = settings.Get<ScenarioContext>();
scenarioContext.Logs.Enqueue(new ScenarioContext.LogItem
{
Endpoint = settings.EndpointName(),
Expand All @@ -28,15 +23,6 @@ public Task Invoke(IOutgoingLogicalMessageContext context, Func<IOutgoingLogical
return next(context);
}

ScenarioContext scenarioContext;
IReadOnlySettings settings;

public class Registration : RegisterStep
{
public Registration()
: base("TraceOutgoingBehavior", typeof(TraceOutgoingBehavior), "Adds outgoing messages to the acceptance test trace")
{
}
}
public class Registration() : RegisterStep("TraceOutgoingBehavior", typeof(TraceOutgoingBehavior), "Adds outgoing messages to the acceptance test trace");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ public async Task Should_restart_dispatch_thread()
{
var externalProcessorSubscribed = false;

CustomizeHostBuilder = builder => builder.Services.AddSingleton<IEventPublisher, FaultyPublisher>();

CustomConfiguration = config =>
{
config.OnEndpointSubscribed<MyContext>((s, ctx) =>
Expand All @@ -37,8 +39,6 @@ public async Task Should_restart_dispatch_thread()
externalProcessorSubscribed = true;
}
});

config.RegisterComponents(services => services.AddSingleton<IEventPublisher, FaultyPublisher>());
};

ExecuteWhen(() => externalProcessorSubscribed, domainEvents => domainEvents.Raise(new EndpointFailedToHeartbeat
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ public async Task The_import_should_deduplicate_on_TimeOfFailure()
{
var criticalErrorExecuted = false;

SetSettings = settings => { settings.MaximumConcurrencyLevel = 10; };
SetSettings = settings => settings.MaximumConcurrencyLevel = 10;
CustomizeHostBuilder = builder => builder.Services.AddSingleton<CounterEnricher>();
CustomConfiguration = config =>
{
config.DefineCriticalErrorAction((_, __) =>
config.DefineCriticalErrorAction((_, _) =>
{
criticalErrorExecuted = true;
return Task.CompletedTask;
});
config.RegisterComponents(services => services.AddSingleton<CounterEnricher>());
};

FailedMessage failure = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public Receiver() =>
EndpointSetup<DefaultServerWithoutAudit>(c =>
{
c.NoRetries();
c.RegisterComponents(services => services.AddSingleton<CorrelationIdRemover>());
c.RegisterMessageMutator(new CorrelationIdRemover());
});

public class MyMessageHandler(MyContext testContext, IReadOnlySettings settings)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,11 @@ class When_single_message_fails_in_batch : AcceptanceTest
public async Task Should_import_all_messages()
{
//Make sure the error import attempt fails
CustomConfiguration = config => { config.RegisterComponents(services => services.AddSingleton<FailOnceEnricher>()); };
CustomizeHostBuilder = builder => builder.Services.AddSingleton<FailOnceEnricher>();

var maximumConcurrencyLevel = 5;

SetSettings = settings =>
{
settings.MaximumConcurrencyLevel = maximumConcurrencyLevel;
};
SetSettings = settings => settings.MaximumConcurrencyLevel = maximumConcurrencyLevel;

await Define<MyContext>(ctx =>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
{
using System.IO;
using AcceptanceTesting;
using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.Configuration.AdvancedExtensibility;

public static class EndpointConfigurationExtensions
Expand All @@ -17,13 +17,7 @@ public static void ReportSuccessfulRetriesToServiceControl(this EndpointConfigur
public static void CustomizeServiceControlEndpointTesting(this EndpointConfiguration configuration, ScenarioContext context)
{
configuration.GetSettings().Set("SC.ScenarioContext", context);
configuration.GetSettings().Set(context);

configuration.RegisterComponents(r =>
{
r.AddSingleton(context.GetType(), context);
r.AddSingleton(typeof(ScenarioContext), context);
});
configuration.RegisterScenarioContext(context);

configuration.Pipeline.Register<TraceIncomingBehavior.Registration>();
configuration.Pipeline.Register<TraceOutgoingBehavior.Registration>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,17 @@ namespace ServiceControl.Audit.AcceptanceTests.TestSupport;

using System.IO;
using AcceptanceTesting;
using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.Configuration.AdvancedExtensibility;

static class EndpointConfigurationExtensions
{
public static void CustomizeServiceControlAuditEndpointTesting(this EndpointConfiguration configuration, ScenarioContext context)
{
configuration.GetSettings().Set("SC.ScenarioContext", context);
configuration.GetSettings().Set(context);

configuration.RegisterComponents(r =>
{
r.AddSingleton(context.GetType(), context);
r.AddSingleton(typeof(ScenarioContext), context);
});
configuration.RegisterScenarioContext(context);

configuration.Pipeline.Register<TraceIncomingBehavior.Registration>();
configuration.Pipeline.Register<TraceOutgoingBehavior.Registration>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,12 @@ async Task StoreFailedMessageDocument(ErrorContext errorContext, CancellationTok
Id = Guid.NewGuid().ToString(),
Message = new FailedTransportMessage
{
Id = errorContext.Message.MessageId,
Headers = errorContext.Message.Headers,
Id = errorContext.MessageId,
Headers = errorContext.Headers,
// At the moment we are taking a defensive copy of the body to avoid issues with the message body
// buffers being returned to the pool and potentially being overwritten. Once we know how RavenDB
// handles byte[] to ReadOnlyMemory<byte> conversion we might be able to remove this.
Body = errorContext.Message.Body.ToArray()
// handles byte[] to ReadOnlyMemory<byte> conversion, we might be able to remove this.
Body = errorContext.Body.ToArray()
},
ExceptionInfo = errorContext.Exception.ToFriendlyString()
};
Expand Down
2 changes: 1 addition & 1 deletion src/ServiceControl.Audit/Auditing/Metrics/ErrorMetrics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public record ErrorMetrics(ErrorContext Context, Counter<long> Failures) : IDisp
{
public void Dispose()
{
var tags = IngestionMetrics.GetMessageTags(Context.Message.Headers);
var tags = IngestionMetrics.GetMessageTags(Context.Headers);

tags.Add("result", retry ? "retry" : "stored-poison");

Expand Down
4 changes: 3 additions & 1 deletion src/ServiceControl.Infrastructure/LoggingConfigurator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ public static class LoggingConfigurator
{
public static void ConfigureLogging(LoggingSettings loggingSettings)
{
//used for loggers outside of ServiceControl (i.e. transports and core) to use the logger factory defined here
//used for loggers outside ServiceControl (i.e. transports and core) to use the logger factory defined here
#pragma warning disable CS0618 // Type or member is obsolete
LogManager.UseFactory(new ExtensionsLoggerFactory(LoggerFactory.Create(configure => configure.ConfigureLogging(loggingSettings.LogLevel))));
#pragma warning restore CS0618 // Type or member is obsolete

if (!LoggerUtil.IsLoggingTo(Loggers.NLog) || NLog.LogManager.Configuration != null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,17 @@ namespace ServiceControl.Monitoring.AcceptanceTests.TestSupport;

using System.IO;
using AcceptanceTesting;
using Microsoft.Extensions.DependencyInjection;
using NServiceBus;
using NServiceBus.AcceptanceTesting;
using NServiceBus.AcceptanceTesting.Customization;
using NServiceBus.Configuration.AdvancedExtensibility;

static class EndpointConfigurationExtensions
{
public static void CustomizeServiceControlMonitoringEndpointTesting(this EndpointConfiguration configuration, ScenarioContext context)
{
configuration.GetSettings().Set("SC.ScenarioContext", context);
configuration.GetSettings().Set(context);

configuration.RegisterComponents(r =>
{
r.AddSingleton(context.GetType(), context);
r.AddSingleton(typeof(ScenarioContext), context);
});
configuration.RegisterScenarioContext(context);

configuration.Pipeline.Register<TraceIncomingBehavior.Registration>();
configuration.Pipeline.Register<TraceOutgoingBehavior.Registration>();
Expand Down
Loading
Loading