public Store ( |
||
commit | ||
return | Task |
public void messages_for_one_batch_should_have_one_write() { var storage = new InMemoryEventStorage(); var writer = new EventStorageWriter(10, TimeSpan.FromMinutes(1), storage); var task1 = writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); var task2 = writer.Store(new CommitForStorage("foo", "stream2", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); writer.Start(_token.Token); Task.WhenAll(task1, task2).Wait(1000); Assert.AreEqual(1, storage.WriteCount); }
public void should_be_able_to_write_max_commits_in_one_batch() { var storage = new InMemoryEventStorage(); var writer = new EventStorageWriter(3000, TimeSpan.FromMinutes(5), storage,3000); var listOfTasks = new List<Task>(); for(var i=0;i<3000;i++) { listOfTasks.Add(writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), i+1, DateTime.Now, "type", null, "body")))); } writer.Start(_token.Token); Task.WhenAll(listOfTasks).Wait(); Assert.That(storage.WriteCount,Is.EqualTo(1),"The commits are written in multiple batches."); }
public void should_drop_commits_older_than_timeout() { var storage = new InMemoryEventStorage(); var writer = new EventStorageWriter(10, TimeSpan.FromMilliseconds(1), storage, 2); var task1 = writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); var task2 = writer.Store(new CommitForStorage("foo", "stream2", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); Task.Delay(1).Wait(); writer.Start(_token.Token); try { Task.WhenAll(task1, task2).Wait(1000); } catch (AggregateException e) { throw e.Flatten().InnerException; } }
public void storage_exception_should_get_sent_to_task() { var storage = A.Fake<EventStorage>(); A.CallTo(storage).Throws(() => new EventStorageException("Damn", null)); var writer = new EventStorageWriter(10, TimeSpan.FromMinutes(1), storage, 2); var task1 = writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); writer.Start(_token.Token); try { task1.Wait(1000); } catch (AggregateException e) { throw e.Flatten().InnerException; } }
public void should_throw_if_busy() { var writer = new EventStorageWriter(1, TimeSpan.FromMinutes(1), new InMemoryEventStorage()); writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); writer.Store(new CommitForStorage("foo", "stream2", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); }
public void should_store_messages() { var storage = new InMemoryEventStorage(); var writer = new EventStorageWriter(10, TimeSpan.FromMinutes(1), storage); writer.Start(_token.Token); var task1 = writer.Store(new CommitForStorage("foo", "stream1", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); var task2 = writer.Store(new CommitForStorage("foo", "stream2", new EventForStorage(Guid.NewGuid(), 1, DateTime.Now, "type", null, "body"))); Task.WhenAll(task1, task2).Wait(1000); var stream1Events = storage.LoadEvents("foo", "stream1"); var stream2Events = storage.LoadEvents("foo", "stream2"); Assert.AreEqual(1, stream1Events.Length, "stream1 should have one event."); Assert.AreEqual(1, stream2Events.Length, "stream2 should have one event."); }