diff --git a/TransactionProcessorACL.IntegrationTests/AssemblyInfo.cs b/TransactionProcessorACL.IntegrationTests/AssemblyInfo.cs
index 186aeec..2bf6799 100644
--- a/TransactionProcessorACL.IntegrationTests/AssemblyInfo.cs
+++ b/TransactionProcessorACL.IntegrationTests/AssemblyInfo.cs
@@ -16,5 +16,5 @@
// The following GUID is for the ID of the typelib if this project is exposed to COM.
[assembly: Guid("25d4d6fc-b809-4acc-a910-249a03e5f07a")]
-[assembly: LevelOfParallelism(2)]
-[assembly: Parallelizable(ParallelScope.Fixtures)]
\ No newline at end of file
+[assembly: LevelOfParallelism(3)]
+[assembly: Parallelizable(ParallelScope.Fixtures)]
diff --git a/TransactionProcessorACL.IntegrationTests/Common/DockerHelper.cs b/TransactionProcessorACL.IntegrationTests/Common/DockerHelper.cs
index 8fb362d..d4306dd 100644
--- a/TransactionProcessorACL.IntegrationTests/Common/DockerHelper.cs
+++ b/TransactionProcessorACL.IntegrationTests/Common/DockerHelper.cs
@@ -1,6 +1,7 @@
using EventStore.Client;
using Shared.IntegrationTesting;
using System.Linq;
+using DotNet.Testcontainers.Builders;
namespace TransactionProcessor.IntegrationTests.Common
{
@@ -9,6 +10,7 @@ namespace TransactionProcessor.IntegrationTests.Common
using Shared.Serialisation;
using System;
using System.Collections.Generic;
+ using System.Diagnostics;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
@@ -57,6 +59,7 @@ public class DockerHelper : global::Shared.IntegrationTesting.TestContainers.Doc
/// The logger.
public DockerHelper()
{
+ this.IsSecureEventStore = false;
this.TestingContext = new TestingContext();
StringSerialiser.Initialise((IStringSerialiser)new SystemTextJsonSerializer(SystemTextJsonSerializer.GetDefaultJsonSerializerOptions()));
}
@@ -74,6 +77,16 @@ public override DotNet.Testcontainers.Builders.ContainerBuilder SetupEstateRepor
return base.SetupEstateReportingContainer();
}
+ public override ContainerBuilder SetupTransactionProcessorContainer()
+ {
+ Dictionary additionalVariables = new();
+ additionalVariables.Add("OperatorConfiguration:AgencyBanking:Url", $"http://{this.TestHostContainerName}:{DockerPorts.TestHostPort}/api/agencybanking");
+
+ this.AdditionalVariables.Add(ContainerType.TransactionProcessor, additionalVariables);
+
+ return base.SetupTransactionProcessorContainer();
+ }
+
public override async Task CreateSubscriptions(){
List<(String streamName, String groupName, Int32 maxRetries)> subscriptions = new List<(String streamName, String groupName, Int32 maxRetries)>();
subscriptions.AddRange(MessagingService.IntegrationTesting.Helpers.SubscriptionsHelper.GetSubscriptions());
@@ -93,7 +106,15 @@ public override async Task CreateSubscriptions(){
/// Name of the scenario.
public override async Task StartContainersForScenarioRun(String scenarioName, DockerServices dockerServices)
{
- await base.StartContainersForScenarioRun(scenarioName, dockerServices);
+ try
+ {
+ await base.StartContainersForScenarioRun(scenarioName, dockerServices);
+ }
+ catch
+ {
+ this.DumpDockerContainerState();
+ throw;
+ }
// Setup the base address resolvers
String SecurityServiceBaseAddressResolver(String api) => $"https://127.0.0.1:{this.SecurityServicePort}";
@@ -127,6 +148,38 @@ public override async Task StartContainersForScenarioRun(String scenarioName, Do
}
+ private void DumpDockerContainerState()
+ {
+ ProcessStartInfo startInfo = new ProcessStartInfo
+ {
+ FileName = "docker",
+ Arguments = "ps -a --no-trunc --format \"table {{.ID}}\\t{{.Names}}\\t{{.Status}}\\t{{.Image}}\\t{{.Ports}}\"",
+ RedirectStandardOutput = true,
+ RedirectStandardError = true,
+ UseShellExecute = false,
+ CreateNoWindow = true
+ };
+
+ using Process process = Process.Start(startInfo);
+ if (process == null)
+ {
+ Console.WriteLine("Unable to start docker diagnostics process.");
+ return;
+ }
+
+ String output = process.StandardOutput.ReadToEnd();
+ String error = process.StandardError.ReadToEnd();
+ process.WaitForExit();
+
+ Console.WriteLine("Docker containers at container startup failure:");
+ Console.WriteLine(output);
+ if (String.IsNullOrWhiteSpace(error) == false)
+ {
+ Console.WriteLine("Docker diagnostics error:");
+ Console.WriteLine(error);
+ }
+ }
+
String Serialise(Object arg)
{
return StringSerialiser.Serialise