コード例 #1
0
        public async Task InitializeAsync()
        {
            try
            {
                var testcontainersBuilder = new TestcontainersBuilder <MySql56Testcontainer>()
                                            .WithDatabase(new MySql56TestcontainerConfiguration
                {
                    Database = "integrationdefaultdb",
                    Username = "******",
                    Password = this.Password,
                });

                mySqlTestcontainer = testcontainersBuilder.Build();
                await mySqlTestcontainer.StartAsync();

                var databaseMigrationsImageBuilder = new ImageFromDockerfileBuilder()
                                                     .WithName("template-integration-db-migrations")
                                                     .WithDockerfile("Dockerfile")
                                                     .WithDockerfileDirectory("../../../../../db/")
                                                     .WithDeleteIfExists(true);
                this.databaseMigrationsImage = await databaseMigrationsImageBuilder.Build();

                var connectionString = mySqlTestcontainer.ConnectionString;
                connectionString = connectionString.Replace("localhost", "host.docker.internal");
                var databaseMigrationsContainerBuilder = new TestcontainersBuilder <MigrationsTestcontainer>()
                                                         .WithImage(databaseMigrationsImage)
                                                         .WithCommand($"-cs {connectionString}")
                                                         .WithWaitStrategy(Wait.ForUnixContainer());
                this.migrationsTestcontainer = databaseMigrationsContainerBuilder.Build();
                try
                {
                    await migrationsTestcontainer.StartAsync();

                    var exitCode = await migrationsTestcontainer.GetExitCode();

                    if (exitCode > 0)
                    {
                        throw new Exception("Database migrations failed");
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }

                this.ConnectionStringProvider = new ConnectionStringProvider(new DatabaseOptions
                {
                    Server   = this.Hostname,
                    Port     = this.Port,
                    Username = "******",
                    Password = this.Password,
                });
            }
            catch (Exception e)
            {
                throw;
            }
        }