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(); }
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(), }; }
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()); }