public async Task <MySqlStreamStoreFixture> Get(ITestOutputHelper outputHelper)
        {
            if (!_fixturePool.TryDequeue(out var fixture))
            {
                var dbUniqueName   = (DateTime.UtcNow - DateTime.UnixEpoch).TotalMilliseconds;
                var databaseName   = $"sss-v3-{dbUniqueName}";
                var dockerInstance = new MySqlContainer(databaseName);
                await dockerInstance.Start();

                await dockerInstance.CreateDatabase();

                fixture = new MySqlStreamStoreFixture(
                    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);
        }
Пример #2
0
        public static async Task <MySqlStreamStoreFixture> Create(
            ITestOutputHelper testOutputHelper = null,
            bool createSchema = true)
        {
            var fixture = new MySqlStreamStoreFixture(testOutputHelper, createSchema);
            await fixture.Init();

            return(fixture);
        }
Пример #3
0
        public async Task Can_call_initialize_repeatably()
        {
            using (var fixture = await MySqlStreamStoreFixture.Create(TestOutputHelper, false))
            {
                await fixture.Store.CreateSchemaIfNotExists();

                await fixture.Store.CreateSchemaIfNotExists();
            }
        }
Пример #4
0
        public async Task when_try_scavenge_fails_returns_negative_one()
        {
            using (var fixture = await MySqlStreamStoreFixture.Create(TestOutputHelper))
            {
                var cts = new CancellationTokenSource();

                cts.Cancel();

                var result = await fixture.Store.TryScavenge(new StreamIdInfo("stream-1"), cts.Token);

                result.ShouldBe(-1);
            }
        }
Пример #5
0
        public async Task Can_drop_all()
        {
            var streamStoreObjects = new List <string>();

            using (var fixture = await MySqlStreamStoreFixture.Create(TestOutputHelper))
            {
                string ReadInformationSchema((string name, string table) _)
                => $"SELECT {_.name}_name FROM information_schema.{_.table} WHERE {_.name}_schema = '{fixture.DatabaseName}'";

                await fixture.Store.DropAll();

                var commandText = string.Join(
                    $"{Environment.NewLine}UNION{Environment.NewLine}",
                    new[]
Пример #6
0
 protected override async Task <IStreamStoreFixture> CreateFixture()
 => await MySqlStreamStoreFixture.Create(TestOutputHelper);