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
4 changes: 2 additions & 2 deletions .github/workflows/nightlybuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Nightly Build

on:
schedule:
- cron: "* 23 * * *"
- cron: "10 23 * * *"

jobs:
build:
Expand Down Expand Up @@ -51,4 +51,4 @@ jobs:
run: docker build . --file TransactionProcessor/Dockerfile --tag transactionprocessor:latest

- name: Run Integration Tests
run: dotnet test "TransactionProcessor.IntegrationTests\TransactionProcessor.IntegrationTests.csproj"
run: dotnet test "TransactionProcessor.IntegrationTests\TransactionProcessor.IntegrationTests.csproj"
4 changes: 4 additions & 0 deletions .github/workflows/pullrequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,7 @@ jobs:

- name: Run Integration Tests
run: dotnet test "TransactionProcessor.IntegrationTests\TransactionProcessor.IntegrationTests.csproj" --filter Category=PRTest

- name: Setup tmate session
if: failure()
uses: mxschmitt/action-tmate@v1
16 changes: 9 additions & 7 deletions TransactionProcessor.IntegrationTests/Common/DockerHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
using System.Threading.Tasks;
using Client;
using Ductus.FluentDocker.Builders;
using Ductus.FluentDocker.Executors;
using Ductus.FluentDocker.Extensions;
using Ductus.FluentDocker.Model.Builders;
using Ductus.FluentDocker.Services;
using Ductus.FluentDocker.Services.Extensions;
Expand All @@ -19,8 +21,8 @@ public class DockerHelper
protected Int32 TransactionProcessorPort;
protected Int32 EventStorePort;

protected IContainerService EstateManagementContainer;
protected IContainerService TransactionProcessorContainer;
public IContainerService EstateManagementContainer;
public IContainerService TransactionProcessorContainer;
protected IContainerService EventStoreContainer;

public IEstateClient EstateClient;
Expand Down Expand Up @@ -81,14 +83,13 @@ public async Task StartContainersForScenarioRun(String scenarioName)
this.EstateManagementPort = this.EstateManagementContainer.ToHostExposedEndpoint("5000/tcp").Port;
this.TransactionProcessorPort = this.TransactionProcessorContainer.ToHostExposedEndpoint("5002/tcp").Port;
this.EventStorePort = this.EventStoreContainer.ToHostExposedEndpoint("2113/tcp").Port;

// Setup the base address resolver
Func<String, String> estateManagementBaseAddressResolver = api => $"http://127.0.0.1:{this.EstateManagementPort}";
Func<String, String> transactionProcessorBaseAddressResolver = api => $"http://127.0.0.1:{this.TransactionProcessorPort}";

HttpClient httpClient = new HttpClient();
this.EstateClient = new EstateClient(estateManagementBaseAddressResolver, httpClient);
this.TransactionProcessorClient = new TransactionProcessorClient(transactionProcessorBaseAddressResolver, httpClient);
this.EstateClient = new EstateClient(estateManagementBaseAddressResolver, new HttpClient());
this.TransactionProcessorClient = new TransactionProcessorClient(transactionProcessorBaseAddressResolver, new HttpClient());

// TODO: Use this to talk to txn processor until we have a client
//this.HttpClient = new HttpClient();
Expand Down Expand Up @@ -138,7 +139,8 @@ private void SetupEstateManagementContainer(String traceFolder)
this.EstateManagementContainer = new Builder()
.UseContainer()
.WithName(this.EstateManagementContainerName)
.WithEnvironment(this.EventStoreConnectionString) //,
.WithEnvironment(this.EventStoreConnectionString,
"urls=http://*:5000") //,
//"AppSettings:MigrateDatabase=true",
//"EventStoreSettings:START_PROJECTIONS=true",
//"EventStoreSettings:ContinuousProjectionsFolder=/app/projections/continuous")
Expand Down
40 changes: 37 additions & 3 deletions TransactionProcessor.IntegrationTests/Common/GenericSteps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@

namespace TransactionProcessor.IntegrationTests.Common
{
using System.Threading;
using System.Threading.Tasks;
using Ductus.FluentDocker.Executors;
using Ductus.FluentDocker.Extensions;
using Ductus.FluentDocker.Services;
using Ductus.FluentDocker.Services.Extensions;
using TechTalk.SpecFlow;
using TechTalk.SpecFlow.Plugins;

[Binding]
[Scope(Tag = "base")]
Expand All @@ -21,18 +27,46 @@ public GenericSteps(ScenarioContext scenarioContext,
this.ScenarioContext = scenarioContext;
this.TestingContext = testingContext;
}

[BeforeScenario()]
[BeforeScenario]
public async Task StartSystem()
{
String scenarioName = this.ScenarioContext.ScenarioInfo.Title.Replace(" ", "");
this.TestingContext.DockerHelper = new DockerHelper();
await this.TestingContext.DockerHelper.StartContainersForScenarioRun(scenarioName).ConfigureAwait(false);
Thread.Sleep(20000);
}

[AfterScenario()]
[AfterScenario]
public async Task StopSystem()
{
if (this.ScenarioContext.TestError != null)
{
Exception currentEx = this.ScenarioContext.TestError;
Console.Out.WriteLine(currentEx.Message);
while (currentEx.InnerException != null)
{
currentEx = currentEx.InnerException;
Console.Out.WriteLine(currentEx.Message);
}

// The test has failed, grab the logs from all the containers
List<IContainerService> containers = new List<IContainerService>();
containers.Add(this.TestingContext.DockerHelper.EstateManagementContainer);
containers.Add(this.TestingContext.DockerHelper.TransactionProcessorContainer);

foreach (IContainerService containerService in containers)
{
ConsoleStream<String> logStream = containerService.Logs();
IList<String> logData = logStream.ReadToEnd();

foreach (String s in logData)
{
Console.Out.WriteLine(s);
}
}
}

await this.TestingContext.DockerHelper.StopContainersForScenarioRun().ConfigureAwait(false);
}
}
Expand Down