public async Task <MsSqlStreamStoreV3Fixture> Get( ITestOutputHelper outputHelper, string schema = "dbo") { var fixturePool = _fixturePoolBySchema.GetOrAdd( schema, _ => new ConcurrentQueue <MsSqlStreamStoreV3Fixture>()); if (!fixturePool.TryDequeue(out var fixture)) { var dbUniqueName = (DateTime.UtcNow - DateTime.UnixEpoch).TotalMilliseconds; var databaseName = $"sss-v3-{dbUniqueName}"; var dockerInstance = new DockerMsSqlServerDatabase(databaseName); await dockerInstance.CreateDatabase(); fixture = new MsSqlStreamStoreV3Fixture( 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); }
private MsSqlStreamStoreV3Fixture( string schema, bool disableDeletionTracking = false, bool deleteDatabaseOnDispose = true, bool createSchema = true) { _schema = schema; _deleteDatabaseOnDispose = deleteDatabaseOnDispose; _createSchema = createSchema; _databaseName = $"sss-v3-{Guid.NewGuid():n}"; _databaseInstance = new DockerMsSqlServerDatabase(_databaseName); var connectionStringBuilder = _databaseInstance.CreateConnectionStringBuilder(); connectionStringBuilder.MultipleActiveResultSets = true; connectionStringBuilder.InitialCatalog = _databaseName; ConnectionString = connectionStringBuilder.ToString(); _settings = new MsSqlStreamStoreV3Settings(ConnectionString) { Schema = _schema, GetUtcNow = () => GetUtcNow(), DisableDeletionTracking = disableDeletionTracking }; }
private MsSqlStreamStoreFixture( string schema, bool deleteDatabaseOnDispose = true, bool createSchema = true) { _schema = schema; _deleteDatabaseOnDispose = deleteDatabaseOnDispose; _createSchema = createSchema; _databaseName = $"sss-v3-{Guid.NewGuid():n}"; _databaseInstance = new DockerMsSqlServerDatabase(_databaseName); var connectionStringBuilder = _databaseInstance.CreateConnectionStringBuilder(); connectionStringBuilder.MultipleActiveResultSets = true; connectionStringBuilder.InitialCatalog = _databaseName; ConnectionString = connectionStringBuilder.ToString(); }
public MsSqlStreamStoreFixture( string schema, DockerMsSqlServerDatabase 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(), }; }