public void Should_delete_all_OutboxRecords_that_have_been_dispatched() { var id = Guid.NewGuid().ToString("N"); var sessionFactory = new RavenSessionFactory(store); var persister = new OutboxPersister(sessionFactory) { DocumentStore = store, EndpointName = "TestEndpoint" }; persister.Store("NotDispatched", Enumerable.Empty<TransportOperation>()); persister.Store(id, new List<TransportOperation> { new TransportOperation(id, new Dictionary<string, string>(), new byte[1024*5], new Dictionary<string, string>()), }); sessionFactory.SaveChanges(); sessionFactory.ReleaseSession(); persister.SetAsDispatched(id); Thread.Sleep(TimeSpan.FromSeconds(1)); //Need to wait for dispatch logic to finish WaitForIndexing(store); var cleaner = new OutboxRecordsCleaner { DocumentStore = store }; cleaner.RemoveEntriesOlderThan(DateTime.UtcNow.AddMinutes(1)); using (var session = store.OpenSession()) { var result = session.Query<OutboxRecord>().ToList(); Assert.AreEqual(1, result.Count); Assert.AreEqual("NotDispatched", result[0].MessageId); } }
public async Task Should_delete_all_OutboxRecords_that_have_been_dispatched() { var id = Guid.NewGuid().ToString("N"); var context = new ContextBag(); var persister = new OutboxPersister(store, "TestEndpoint"); using (var transaction = await persister.BeginTransaction(context)) { await persister.Store(new OutboxMessage("NotDispatched", new TransportOperation[0]), transaction, context); await transaction.Commit(); } var outboxMessage = new OutboxMessage(id, new [] { new TransportOperation(id, new Dictionary<string, string>(), new byte[1024*5], new Dictionary<string, string>()) }); using (var transaction = await persister.BeginTransaction(context)) { await persister.Store(outboxMessage, transaction, context); await transaction.Commit(); } await persister.SetAsDispatched(id, context); await Task.Delay(TimeSpan.FromSeconds(1)); //Need to wait for dispatch logic to finish //WaitForUserToContinueTheTest(store); WaitForIndexing(store); var cleaner = new OutboxRecordsCleaner(store); await cleaner.RemoveEntriesOlderThan(DateTime.UtcNow.AddMinutes(1)); using (var s = store.OpenAsyncSession()) { var result = await s.Query<OutboxRecord>().ToListAsync(); Assert.AreEqual(1, result.Count); Assert.AreEqual("NotDispatched", result[0].MessageId); } }