public async Task <MsSqlStreamStoreFixture> Get(
            ITestOutputHelper outputHelper,
            string schema = "dbo")
        {
            var fixturePool = _fixturePoolBySchema.GetOrAdd(
                schema,
                _ => new ConcurrentQueue <MsSqlStreamStoreFixture>());

            if (!fixturePool.TryDequeue(out var fixture))
            {
                var databaseName   = $"sss-v2-{Guid.NewGuid():N}";
                var dockerInstance = new SqlServerContainer(databaseName);
                await dockerInstance.Start();

                await dockerInstance.CreateDatabase();

                fixture = new MsSqlStreamStoreFixture(
                    schema,
                    dockerInstance,
                    databaseName,
                    onDispose: () => fixturePool.Enqueue(fixture));

                outputHelper.WriteLine($"Using new fixture with db {databaseName}");
            }
            else
            {
                outputHelper.WriteLine($"Using pooled fixture with db {fixture.DatabaseName}");
            }

            await fixture.Prepare();

            return(fixture);
        }
        public MsSqlStreamStoreDb(string schema, bool deleteDatabaseOnDispose = true)
        {
            _schema = schema;
            _deleteDatabaseOnDispose = deleteDatabaseOnDispose;
            _databaseName            = $"sss-v2-{Guid.NewGuid():n}";
            _containerInstance       = new SqlServerContainer(_databaseName);

            ConnectionString = CreateConnectionString();
        }
        private void PerformSqlServerContainer(ContainerBuilder builder)
        {
            //configuration.ConnectionString = "Data Source=localhost,1433;Initial Catalog=EventStoreDb;Persist Security Info=True;User ID=sa;Password=TTTttt456!@#;Max Pool Size=80;";
            var sqlContainer = new SqlServerContainer("EventStoreDb", "TTTttt456!@#", 1433);

            sqlContainer.InitializeAsync().GetAwaiter().GetResult();
            sqlContainer.CreateDatabaseAsync().GetAwaiter().GetResult();
            builder.RegisterInstance(sqlContainer).As <SqlServerContainer>().IfNotRegistered(typeof(SqlServerContainer)).SingleInstance();
        }
        public async Task SetupDatabaseAsync()
        {
            await SqlServerContainer.StartAsync();

            var settings = TestConfiguration.GetConfiguration();

            await DbHelper.EnsureStarted(settings.DbServerConnectionString, TimeSpan.FromSeconds(60));

            await DbHelper.ReCreateDatabase();
        }
示例#5
0
        public MsSqlStreamStoreDbV3(
            string schema,
            bool disableDeletionTracking = false,
            string databaseNameOverride  = null,
            bool deleteDatabaseOnDispose = true)
        {
            _schema = schema;
            _disableDeletionTracking = disableDeletionTracking;
            _databaseNameOverride    = databaseNameOverride;
            _deleteDatabaseOnDispose = deleteDatabaseOnDispose;
            _databaseName            = databaseNameOverride ?? $"sss-v3-{Guid.NewGuid():n}";
            _containerInstance       = new SqlServerContainer(_databaseName);

            ConnectionString = CreateConnectionString();
        }
        public MsSqlStreamStoreFixture(
            string schema,
            SqlServerContainer dockerInstance,
            string databaseName,
            Action onDispose)
        {
            _onDispose = onDispose;

            DatabaseName = databaseName;
            var connectionStringBuilder = dockerInstance.CreateConnectionStringBuilder();

            connectionStringBuilder.MultipleActiveResultSets = true;
            connectionStringBuilder.InitialCatalog           = DatabaseName;
            ConnectionString = connectionStringBuilder.ToString();

            _settings = new MsSqlStreamStoreSettings(ConnectionString)
            {
                Schema    = schema,
                GetUtcNow = () => GetUtcNow(),
            };
        }
示例#7
0
        public async Task <(string, DbConnection)> StartAsync()
        {
            var dockerUri = IDatabaseController.GetDockerUri();

            _dockerClient = new DockerClientConfiguration(
                new Uri(dockerUri))
                            .CreateClient();

            DockerContainerBase.CleanupOrphanedContainersAsync(_dockerClient).Wait(Timeout * 500);

            _sqlServerContainer = new SqlServerContainer(Port, Password);

            await _sqlServerContainer.StartAsync(_dockerClient, Timeout);

            var connectionString = _sqlServerContainer.GetConnectionString(DatabaseName);

            //TODO: use logger
            Console.WriteLine($"*** SQL Server database started and the connection string is: \"{connectionString}\"");

            var connection = new SqlConnection(connectionString);

            return(connectionString, connection);
        }
        public async Task try_loading_named_container()
        {
            var container = new SqlServerContainer("mssql-test");

            await container.Start(DockerServers.BuildDockerClient());
        }