diff --git a/dotnet_3/em/embedded/rest/MenuAPIDriver/EmbeddedEvoMasterController.cs b/dotnet_3/em/embedded/rest/MenuAPIDriver/EmbeddedEvoMasterController.cs
index 82356e034..f66988565 100644
--- a/dotnet_3/em/embedded/rest/MenuAPIDriver/EmbeddedEvoMasterController.cs
+++ b/dotnet_3/em/embedded/rest/MenuAPIDriver/EmbeddedEvoMasterController.cs
@@ -1,20 +1,20 @@
using System;
using System.Collections.Generic;
+using System.Data.Common;
using System.Threading.Tasks;
using EvoMaster.Controller;
using EvoMaster.Controller.Api;
using EvoMaster.Controller.Problem;
using Npgsql;
using EvoMaster.Controller.Controllers.db;
-using EvoMaster.DatabaseController;
-using EvoMaster.DatabaseController.Abstractions;
+using Testcontainers.PostgreSql;
namespace Menu {
public class EmbeddedEvoMasterController : EmbeddedSutController {
private bool _isSutRunning;
private static int _sutPort;
- private NpgsqlConnection _connection;
- private IDatabaseController _databaseController;
+ private DbConnection _connection;
+ private readonly PostgreSqlContainer _postgreSqlContainer = new PostgreSqlBuilder().Build();
private static void Main(string[] args) {
var embeddedEvoMasterController = new EmbeddedEvoMasterController();
@@ -57,7 +57,7 @@ public override IProblemInfo GetProblemInfo() =>
public override bool IsSutRunning() => _isSutRunning;
public override void ResetStateOfSut() {
- DbCleaner.ClearDatabase_Postgres(_connection);
+ DbCleaner.ClearDatabase(_connection, null, DatabaseType.POSTGRES);
}
public override string StartSut() {
@@ -65,26 +65,27 @@ public override string StartSut() {
Task.Run(async () => {
// TODO why is this not taken from Docker???
var dbPort = GetEphemeralTcpPort();
+
+ await _postgreSqlContainer.StartAsync();
- _databaseController = new PostgresDatabaseController("restaurant_menu_database", dbPort, "password123");
+ await using (DbConnection connection = new NpgsqlConnection(_postgreSqlContainer.GetConnectionString()))
+ {
+ _connection = connection;
+ API.Program.Main(new[] {$"{_sutPort}", connection.ConnectionString});
- var (connectionString, dbConnection) = await _databaseController.StartAsync();
-
- _connection = dbConnection as NpgsqlConnection;
-
- API.Program.Main(new[] {$"{_sutPort}", connectionString});
+ }
});
- WaitUntilSutIsRunning(_sutPort);
+ WaitUntilSutIsRunning(_sutPort, 45);
_isSutRunning = true;
return $"http://localhost:{_sutPort}";
}
- public override void StopSut() {
+ public override async void StopSut() {
API.Program.Shutdown();
- _databaseController.Stop();
+ await _postgreSqlContainer.StopAsync();
_isSutRunning = false;
}
diff --git a/dotnet_3/em/embedded/rest/MenuAPIDriver/MenuAPIDriver.csproj b/dotnet_3/em/embedded/rest/MenuAPIDriver/MenuAPIDriver.csproj
index b6972564c..1ed2ca255 100644
--- a/dotnet_3/em/embedded/rest/MenuAPIDriver/MenuAPIDriver.csproj
+++ b/dotnet_3/em/embedded/rest/MenuAPIDriver/MenuAPIDriver.csproj
@@ -9,10 +9,6 @@
-
-
-
-
@@ -37,6 +33,10 @@
+
+
+
+
@@ -48,7 +48,8 @@
-
+