コード例 #1
0
    public async Task It_refreshes_state_if_stale_state_is_detected()
    {
        using (var conn = CreateConnection())
        {
            await conn.OpenAsync().ConfigureAwait(false);

            await persister.Initialize(3, 6, 0, 3, conn).ConfigureAwait(false);

            var slowPersister = new InboxPersister("S", "D", CreateConnection);
            await slowPersister.Prepare();

            await persister.Deduplicate("M1", 0, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M2", 1, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M3", 2, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M4", 3, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M5", 4, conn, null).ConfigureAwait(false);

            await persister.Advance(2, 6, 9, conn);

            await slowPersister.Deduplicate("M7", 6, conn, null);
        }
    }
コード例 #2
0
    public async Task It_refreshes_state_when_constraint_violation_is_detected()
    {
        using (var conn = CreateConnection())
        {
            await conn.OpenAsync().ConfigureAwait(false);

            await persister.Initialize(3, 6, 0, 3, conn).ConfigureAwait(false);

            var slowPersister = new InboxPersister("S", "D", CreateConnection);
            await slowPersister.Prepare();

            await persister.Deduplicate("M1", 0, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M2", 1, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M3", 2, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M4", 3, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M5", 4, conn, null).ConfigureAwait(false);

            await persister.Advance(2, 6, 9, conn);

            var result = await slowPersister.Deduplicate("M2", 1, conn, null);

            Assert.AreEqual(DeduplicationResult.Duplicate, result);
        }
    }
コード例 #3
0
    public async Task It_uses_refreshed_state_to_detect_duplicates()
    {
        using (var conn = CreateConnection())
        {
            await conn.OpenAsync().ConfigureAwait(false);

            await persister.Initialize(3, 6, 0, 3, conn).ConfigureAwait(false);

            var slowPersister = new InboxPersister("S", "D", CreateConnection);
            await slowPersister.Prepare();

            await persister.Deduplicate("M0", 0, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M0", 1, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M0", 2, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M0", 3, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M0", 4, conn, null).ConfigureAwait(false);

            await persister.Advance(2, 6, 9, conn);

            await persister.Deduplicate("M5", 5, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M6", 6, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M7", 7, conn, null).ConfigureAwait(false);

            await persister.Advance(3, 9, 12, conn);

            await persister.Deduplicate("M8", 8, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M9", 9, conn, null).ConfigureAwait(false);

            await persister.Deduplicate("M10", 10, conn, null).ConfigureAwait(false);

            await persister.Advance(4, 12, 15, conn);

            var result = await slowPersister.Deduplicate("M6", 6, conn, null);

            Assert.AreEqual(DeduplicationResult.Duplicate, result);
        }
    }
コード例 #4
0
    public async Task PrepareTables()
    {
        LogManager.Use <DefaultFactory>().Level(LogLevel.Debug);

        installer = new InboxInstaller("D");
        persister = new InboxPersister("S", "D", CreateConnection);
        using (var conn = CreateConnection())
        {
            await conn.OpenAsync().ConfigureAwait(false);

            using (var trans = conn.BeginTransaction())
            {
                await installer.Uninstall("S", conn, trans).ConfigureAwait(false);

                await installer.Install("S", conn, trans).ConfigureAwait(false);

                trans.Commit();
            }

            await persister.Prepare().ConfigureAwait(false);
        }
    }