コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: EndToEndTests.cs プロジェクト: Deffiss/dockertests
        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();
        }
コード例 #3
0
        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
        }
コード例 #4
0
        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
        }