public async Task CreateDockerEnvironment() { // Create the environment using builder pattern var environment = new DockerEnvironmentBuilder() .AddContainer("my-nginx", "nginx") .AddElasticsearchContainer("my-elastic") .AddMssqlContainer("my-mssql", "HelloK11tt_0") .Build(); // Up it. await environment.Up(); // Play with containers. var mssql = environment.GetContainer <MssqlContainer>("my-mssql"); await PrintMssqlVersion(mssql); var elastic = environment.GetContainer <ElasticsearchContainer>("my-elastic"); await PrintElasticsearchVersion(elastic); // Down it. await environment.Down(); // Dispose (remove). environment.Dispose(); }
public async Task Test1() { // Arrange database and selenuim containers var infrastructure = new DockerEnvironmentBuilder() .SetName("env") .AddMssqlContainer("mssql", "saPassword123") .AddContainer("webdriver", "selenium/standalone-chrome", "3.141.59-antimony") .Build(); await infrastructure.Up(); // Arrange container with the app inside var app = new DockerEnvironmentBuilder() .SetName("app") .AddContainer("app", "dockertestui", "latest", new Dictionary <string, string> { ["ConnectionStrings__SampleDB"] = GetConnectionString(infrastructure) }, containerWaiter: new FuncContainerWaiter(CheckAppReadiness)) .Build(); await app.Up(); // Connect to remote Chrome driver using (var driver = new RemoteWebDriver( new Uri(GetChromeDriverUrl(infrastructure)), new ChromeOptions { })) { // Go to home page and get all <tr> elements to count driver.Navigate().GoToUrl(GetAppUrl(app)); var trs = driver.FindElementByTagName("tbody").FindElements(By.TagName("tr")); // Assert Assert.Equal(15, trs.Count); } // Cleanup app.Dispose(); infrastructure.Dispose(); }
public async Task CreateDockerEnvironment() { // Create the environment using builder pattern var environment = new DockerEnvironmentBuilder() .UseDefaultNetwork() .SetName("test-env") .AddContainer("my-nginx", "nginx") #if DEBUG .AddElasticsearchContainer("my-elastic", reuseContainer: true) .AddMssqlContainer("my-mssql", "HelloK11tt_0", environmentVariables: new Dictionary <string, string> { ["MSSQL_COLLATION"] = "SQL_Latin1_General_CP1_CS_AS" }, reuseContainer: true) #else .AddElasticsearchContainer("my-elastic") .AddMssqlContainer("my-mssql", "HelloK11tt_0") #endif .Build(); // Up it. await environment.Up(); // Play with containers. var mssql = environment.GetContainer <MssqlContainer>("my-mssql"); await PrintMssqlVersion(mssql); var elastic = environment.GetContainer <ElasticsearchContainer>("my-elastic"); await PrintElasticsearchVersion(elastic); #if !DEBUG // Down it. await environment.Down(); // Dispose (remove). environment.Dispose(); #endif }
public async Task CreateDockerEnvironment() { // Create the environment using builder pattern var environment = new DockerEnvironmentBuilder() .UseDefaultNetwork() .SetName("test-env") .AddContainer("my-nginx", "nginx") #if DEBUG .AddElasticsearchContainer("my-elastic", ports: new Dictionary <ushort, ushort> { [9200] = 9200 }, reuseContainer: true) .AddMssqlContainer("my-mssql", "HelloK11tt_0", environmentVariables: new Dictionary <string, string> { ["MSSQL_COLLATION"] = "SQL_Latin1_General_CP1_CS_AS" }, reuseContainer: true) .AddMariaDBContainer("my-maria", "my-secret-pw", reuseContainer: true) .AddMongoContainer("my-mongo", reuseContainer: true) .AddMailContainer("my-mail", reuseContainer: true) .AddFtpContainer("my-ftp", "superuser", "test", ports: Enumerable.Range(30000, 10).ToDictionary(p => (ushort)p, p => (ushort)p).MergeDictionaries(new Dictionary <ushort, ushort> { [21] = 21 }), reuseContainer: true) .AddFromDockerfile("from-file", "Dockerfile", containerWaiter: new HttpContainerWaiter("/", httpPort: 8080), reuseContainer: true) .AddPostgresContainer("my-postgres", reuseContainer: true) #else .AddElasticsearchContainer("my-elastic") .AddMssqlContainer("my-mssql", "HelloK11tt_0") .AddMariaDBContainer("my-maria", "my-secret-pw") .AddMongoContainer("my-mongo") .AddMailContainer("my-mail") .AddFromDockerfile("from-file", "Dockerfile", containerWaiter: new HttpContainerWaiter("/", httpPort: 8080)) .AddFtpContainer("my-ftp", "superuser", "test", ports: Enumerable.Range(30000, 10).ToDictionary(p => (ushort)p, p => (ushort)p).MergeDictionaries(new Dictionary <ushort, ushort> { [21] = 21 })) .AddPostgresContainer("my-postgres") #endif .Build(); // Up it. await environment.Up(); // Play with containers. var mssql = environment.GetContainer <MssqlContainer>("my-mssql"); await PrintMssqlVersion(mssql); var elastic = environment.GetContainer <ElasticsearchContainer>("my-elastic"); await PrintElasticsearchVersion(elastic); var mongo = environment.GetContainer <MongoContainer>("my-mongo"); PrintMongoVersion(mongo); var staticFilesContainer = environment.GetContainer("from-file"); await PrintReturnedHtml(staticFilesContainer); var maria = environment.GetContainer <MariaDBContainer>("my-maria"); await PrintMariaDBVersion(maria); var ftp = environment.GetContainer <FtpContainer>("my-ftp"); await PrintFtpServerType(ftp); var mail = environment.GetContainer <MailContainer>("my-mail"); await PrintSmtpCapabilities(mail); var postgres = environment.GetContainer <PostgresContainer>("my-postgres"); await PrintPostgresDbVersion(postgres); #if !DEBUG // Down it. await environment.Down(); // Dispose (remove). environment.Dispose(); #endif }