|
1 | 1 | using System; |
2 | 2 | using System.Collections.Generic; |
| 3 | +using System.Data.Common; |
3 | 4 | using System.Threading.Tasks; |
4 | 5 | using EvoMaster.Controller; |
5 | 6 | using EvoMaster.Controller.Api; |
6 | 7 | using EvoMaster.Controller.Problem; |
7 | 8 | using Npgsql; |
8 | 9 | using EvoMaster.Controller.Controllers.db; |
9 | | -using EvoMaster.DatabaseController; |
10 | | -using EvoMaster.DatabaseController.Abstractions; |
| 10 | +using Testcontainers.PostgreSql; |
11 | 11 |
|
12 | 12 | namespace Menu { |
13 | 13 | public class EmbeddedEvoMasterController : EmbeddedSutController { |
14 | 14 | private bool _isSutRunning; |
15 | 15 | private static int _sutPort; |
16 | | - private NpgsqlConnection _connection; |
17 | | - private IDatabaseController _databaseController; |
| 16 | + private DbConnection _connection; |
| 17 | + private readonly PostgreSqlContainer _postgreSqlContainer = new PostgreSqlBuilder().Build(); |
18 | 18 |
|
19 | 19 | private static void Main(string[] args) { |
20 | 20 | var embeddedEvoMasterController = new EmbeddedEvoMasterController(); |
@@ -57,34 +57,35 @@ public override IProblemInfo GetProblemInfo() => |
57 | 57 | public override bool IsSutRunning() => _isSutRunning; |
58 | 58 |
|
59 | 59 | public override void ResetStateOfSut() { |
60 | | - DbCleaner.ClearDatabase_Postgres(_connection); |
| 60 | + DbCleaner.ClearDatabase(_connection, null, DatabaseType.POSTGRES); |
61 | 61 | } |
62 | 62 |
|
63 | 63 | public override string StartSut() { |
64 | 64 |
|
65 | 65 | Task.Run(async () => { |
66 | 66 | // TODO why is this not taken from Docker??? |
67 | 67 | var dbPort = GetEphemeralTcpPort(); |
| 68 | + |
| 69 | + await _postgreSqlContainer.StartAsync(); |
68 | 70 |
|
69 | | - _databaseController = new PostgresDatabaseController("restaurant_menu_database", dbPort, "password123"); |
| 71 | + await using (DbConnection connection = new NpgsqlConnection(_postgreSqlContainer.GetConnectionString())) |
| 72 | + { |
| 73 | + _connection = connection; |
| 74 | + API.Program.Main(new[] {$"{_sutPort}", connection.ConnectionString}); |
70 | 75 |
|
71 | | - var (connectionString, dbConnection) = await _databaseController.StartAsync(); |
72 | | - |
73 | | - _connection = dbConnection as NpgsqlConnection; |
74 | | - |
75 | | - API.Program.Main(new[] {$"{_sutPort}", connectionString}); |
| 76 | + } |
76 | 77 | }); |
77 | 78 |
|
78 | | - WaitUntilSutIsRunning(_sutPort); |
| 79 | + WaitUntilSutIsRunning(_sutPort, 45); |
79 | 80 |
|
80 | 81 | _isSutRunning = true; |
81 | 82 |
|
82 | 83 | return $"http://localhost:{_sutPort}"; |
83 | 84 | } |
84 | 85 |
|
85 | | - public override void StopSut() { |
| 86 | + public override async void StopSut() { |
86 | 87 | API.Program.Shutdown(); |
87 | | - _databaseController.Stop(); |
| 88 | + await _postgreSqlContainer.StopAsync(); |
88 | 89 | _isSutRunning = false; |
89 | 90 | } |
90 | 91 |
|
|
0 commit comments