Esempio n. 1
0
        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();
        }
Esempio n. 4
0
        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(),
            };
        }