diff --git a/Shared.IntegrationTesting.Tests/GenericSteps.cs b/Shared.IntegrationTesting.Tests/GenericSteps.cs index cd4674de..2f067485 100644 --- a/Shared.IntegrationTesting.Tests/GenericSteps.cs +++ b/Shared.IntegrationTesting.Tests/GenericSteps.cs @@ -44,8 +44,8 @@ public async Task StartSystem() { DockerServices services = DockerServices.SqlServer | DockerServices.EventStore | DockerServices.MessagingService | DockerServices.SecurityService | DockerServices.CallbackHandler | DockerServices.FileProcessor | DockerServices.TestHost | DockerServices.TransactionProcessor | - DockerServices.TransactionProcessorAcl | DockerServices.ConfigurationHost - | DockerServices.EstateManagementUI; + DockerServices.TransactionProcessorAcl | DockerServices.ConfigurationHost | + DockerServices.EstateManagementUI | DockerServices.EstateReporting; this.TestingContext.Logger = logger; this.TestingContext.Logger.LogInformation("About to Start Containers for Scenario Run"); diff --git a/Shared.IntegrationTesting/ContainerType.cs b/Shared.IntegrationTesting/ContainerType.cs index 8ae87a68..7444bd92 100644 --- a/Shared.IntegrationTesting/ContainerType.cs +++ b/Shared.IntegrationTesting/ContainerType.cs @@ -14,7 +14,8 @@ public enum ContainerType FileProcessor, TransactionProcessorAcl, ConfigurationHost, - EstateManangementUI, + EstateManagementUI, + EstateReporting, NotSet } @@ -33,6 +34,7 @@ public enum DockerServices TransactionProcessorAcl = 256, ConfigurationHost = 512, EstateManagementUI = 1024, + EstateReporting = 2048 } public enum DockerEnginePlatform diff --git a/Shared.IntegrationTesting/DockerPorts.cs b/Shared.IntegrationTesting/DockerPorts.cs index d7130419..806dd11e 100644 --- a/Shared.IntegrationTesting/DockerPorts.cs +++ b/Shared.IntegrationTesting/DockerPorts.cs @@ -24,5 +24,6 @@ public static class DockerPorts public static readonly Int32 ConfigHostDockerPort = 9200; public static readonly Int32 EstateManagementUIDockerPort = 5004; + public static readonly Int32 EstateReportingDockerPort = 5011; public static readonly Int32 SqlServerDockerPort = 1433; } \ No newline at end of file diff --git a/Shared.IntegrationTesting/TestContainers/BaseDockerHelper.cs b/Shared.IntegrationTesting/TestContainers/BaseDockerHelper.cs index bea3be54..83453acf 100644 --- a/Shared.IntegrationTesting/TestContainers/BaseDockerHelper.cs +++ b/Shared.IntegrationTesting/TestContainers/BaseDockerHelper.cs @@ -48,8 +48,10 @@ public abstract class BaseDockerHelper{ public String ScenarioName; protected String CallbackHandlerContainerName; + protected String EstateReportingContainerName; protected Int32 CallbackHandlerPort; + protected Int32 EstateReportingPort; protected (String clientId, String clientSecret) ClientDetails; @@ -149,7 +151,8 @@ protected BaseDockerHelper(Boolean skipHealthChecks=false) { this.ImageDetails.Add(ContainerType.FileProcessor, ("stuartferguson/fileprocessor:master", true)); this.ImageDetails.Add(ContainerType.TransactionProcessorAcl, ("stuartferguson/transactionprocessoracl:master", true)); this.ImageDetails.Add(ContainerType.ConfigurationHost, ("stuartferguson/mobileconfiguration:master", true)); - this.ImageDetails.Add(ContainerType.EstateManangementUI, ("stuartferguson/estatemanagementui:latest", true)); + this.ImageDetails.Add(ContainerType.EstateManagementUI, ("stuartferguson/estatemanagementui:latest", true)); + this.ImageDetails.Add(ContainerType.EstateReporting, ("stuartferguson/estatereportingapi:latest", true)); } this.HostPorts = new Dictionary(); @@ -241,7 +244,8 @@ public static DockerClient GetDockerHost() { ContainerType.TransactionProcessor => this.TransactionProcessorPort, ContainerType.TransactionProcessorAcl => this.TransactionProcessorAclPort, ContainerType.SqlServer => this.SqlServerPort, - ContainerType.EstateManangementUI => this.EstateManagementUiPort, + ContainerType.EstateManagementUI => this.EstateManagementUiPort, + ContainerType.EstateReporting => this.EstateReportingPort, _ when key == ContainerType.EventStore && this.IsSecureEventStore => this.EventStoreSecureHttpPort, _ when key == ContainerType.EventStore && this.IsSecureEventStore == false => this.EventStoreHttpPort, _ => null @@ -315,6 +319,7 @@ public virtual void SetupContainerNames(){ this.TransactionProcessorAclContainerName = $"transactionacl{this.TestId:N}"; this.ConfigHostContainerName = $"mobileconfighost{this.TestId:N}"; this.EstateManagementUiContainerName = $"estateadministrationui{this.TestId:N}"; + this.EstateReportingContainerName = $"estatereporting{this.TestId:N}"; } protected Int32 EstateManagementUiPort; @@ -475,7 +480,7 @@ protected virtual ContainerBuilder SetupEstateManagementUiContainer() environmentVariables.Add($"DataReloadConfig:DefaultInSeconds", "1"); environmentVariables.Add("ConnectionStrings:TransactionProcessorReadModel", this.SetConnectionString("TransactionProcessorReadModel", this.UseSecureSqlServerDatabase)); - (String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.EstateManangementUI).Data; + (String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.EstateManagementUI).Data; ContainerBuilder containerBuilder = new ContainerBuilder() .WithName(this.EstateManagementUiContainerName) @@ -623,6 +628,31 @@ public virtual ContainerBuilder SetupTestHostContainer(){ return testHostContainer; } + public virtual ContainerBuilder SetupEstateReportingContainer() + { + this.Trace("About to Start Estate Reporting Container"); + + Dictionary environmentVariables = this.GetCommonEnvironmentVariables(); + + Dictionary additionalEnvironmentVariables = this.GetAdditionalVariables(ContainerType.EstateReporting); + + foreach (KeyValuePair additionalEnvironmentVariable in additionalEnvironmentVariables) + { + environmentVariables.Add(additionalEnvironmentVariable.Key, additionalEnvironmentVariable.Value); + } + + (String imageName, Boolean useLatest) imageDetails = this.GetImageDetails(ContainerType.EstateReporting).Data; + + ContainerBuilder estateReportingContainer = new ContainerBuilder() + .WithName(this.EstateReportingContainerName) // similar to WithName() + .WithImage(imageDetails.imageName) + .WithEnvironment(environmentVariables) + .MountHostFolder(this.DockerPlatform, this.HostTraceFolder) + .WithPortBinding(DockerPorts.EstateReportingDockerPort, true); + + return estateReportingContainer; + } + public virtual async Task SetupTestNetwork(String networkName = null, Boolean reuseIfExists = false){ networkName = String.IsNullOrEmpty(networkName) ? $"testnw{this.TestId:N}" : networkName; @@ -844,7 +874,8 @@ protected async Task DoHealthCheck(ContainerType containerType) { ContainerType.SecurityService => ("https", this.SecurityServicePort), ContainerType.TransactionProcessorAcl => ("http", this.TransactionProcessorAclPort), //ContainerType.ConfigurationHost => ("http", this.ConfigHostPort), - //ContainerType.EstateManangementUI => ("https", this.EstateManagementUiPort), + //ContainerType.EstateManagementUI => ("https", this.EstateManagementUiPort), + ContainerType.EstateReporting => ("http", this.EstateReportingPort), _ => (null, 0) }; @@ -998,7 +1029,8 @@ protected async Task StartContainer2(Func buildCon DockerServices.EventStore=> ContainerType.EventStore, DockerServices.SqlServer => ContainerType.SqlServer, DockerServices.ConfigurationHost => ContainerType.ConfigurationHost, - DockerServices.EstateManagementUI => ContainerType.EstateManangementUI, + DockerServices.EstateManagementUI => ContainerType.EstateManagementUI, + DockerServices.EstateReporting => ContainerType.EstateReporting, _ => ContainerType.NotSet }; @@ -1078,12 +1110,15 @@ UInt16 GetPort(Int32 dockerPort) => case ContainerType.ConfigurationHost: ConfigHostPort = GetPort(DockerPorts.ConfigHostDockerPort); break; - case ContainerType.EstateManangementUI: + case ContainerType.EstateManagementUI: EstateManagementUiPort = GetPort(DockerPorts.EstateManagementUIDockerPort); break; case ContainerType.SqlServer: SqlServerPort = GetPort(DockerPorts.SqlServerDockerPort); break; + case ContainerType.EstateReporting: + EstateReportingPort = GetPort(DockerPorts.EstateReportingDockerPort); + break; } } diff --git a/Shared.IntegrationTesting/TestContainers/DockerHelper.cs b/Shared.IntegrationTesting/TestContainers/DockerHelper.cs index 1e539db4..dddf4698 100644 --- a/Shared.IntegrationTesting/TestContainers/DockerHelper.cs +++ b/Shared.IntegrationTesting/TestContainers/DockerHelper.cs @@ -97,8 +97,10 @@ public override async Task StartContainersForScenarioRun(String scenarioName, Do await StartContainer2(this.SetupFileProcessorContainer, networks, DockerServices.FileProcessor); await StartContainer2(this.SetupTransactionProcessorAclContainer, networks, DockerServices.TransactionProcessorAcl); await StartContainer2(this.SetupConfigHostContainer, networks, DockerServices.ConfigurationHost); - if (this.DockerPlatform == DockerEnginePlatform.Linux) + if (this.DockerPlatform == DockerEnginePlatform.Linux) { await StartContainer2(this.SetupEstateManagementUiContainer, networks, DockerServices.EstateManagementUI); + await StartContainer2(this.SetupEstateReportingContainer, networks, DockerServices.EstateReporting); + } await this.LoadEventStoreProjections();