public void TestEventJournalPublisherForCategory() { var eventJournal = Journal.Open("test-ej-cat"); var messageBus = MessageBus.Start("test-bus-cat"); var topic = messageBus.OpenTopic("cat-test"); var journalPublisher = JournalPublisher.From(eventJournal.Name, messageBus.Name, topic.Name); var subscriber = new JournalPublisherTestSubscriber(); topic.Subscribe(subscriber); var batch1 = new EntryBatch(); for (var idx = 0; idx < 3; ++idx) { batch1.AddEntry("test1type", $"test1instance{idx}"); } eventJournal.Write($"test_1", EntryValue.NoStreamVersion, batch1); var batch2 = new EntryBatch(); for (var idx = 0; idx < 3; ++idx) { batch2.AddEntry("test2type", $"test2instance{idx}"); } eventJournal.Write("test_2", EntryValue.NoStreamVersion, batch2); subscriber.WaitForExpectedMessages(6); topic.Close(); journalPublisher.Close(); Assert.AreEqual(6, subscriber.HandledMessages.Count); }
public void TestWriteReadStream() { Journal journal = Journal.Open("test"); journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1")); journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1")); journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1")); journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1")); journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1")); EntryStreamReader streamReader = journal.StreamReader(); EntryStream eventStream123 = streamReader.StreamFor("name123"); Assert.AreEqual(3, eventStream123.StreamVersion); Assert.AreEqual(3, eventStream123.Stream.Count); Assert.AreEqual(new EntryValue("name123", 1, "type1", "type1_instance1", ""), eventStream123.Stream[0]); Assert.AreEqual(new EntryValue("name123", 2, "type1-1", "type1-1_instance1", ""), eventStream123.Stream[1]); Assert.AreEqual(new EntryValue("name123", 3, "type1-2", "type1-2_instance1", ""), eventStream123.Stream[2]); EntryStream eventStream456 = streamReader.StreamFor("name456"); Assert.AreEqual(2, eventStream456.StreamVersion); Assert.AreEqual(2, eventStream456.Stream.Count); Assert.AreEqual(new EntryValue("name456", 1, "type2", "type2_instance1", ""), eventStream456.Stream[0]); Assert.AreEqual(new EntryValue("name456", 2, "type2-1", "type2-1_instance1", ""), eventStream456.Stream[1]); journal.Close(); }
public void TestWriteReadStreamSnapshot() { Journal journal = Journal.Open("test"); journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1", "SNAPSHOT123-1")); journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1", "SNAPSHOT456-1")); journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1", "SNAPSHOT123-2")); journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1")); journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1", "SNAPSHOT456-2")); EntryStreamReader streamReader = journal.StreamReader(); EntryStream eventStream123 = streamReader.StreamFor("name123"); Assert.AreEqual("name123", eventStream123.StreamName); Assert.AreEqual(3, eventStream123.StreamVersion); Assert.AreEqual(1, eventStream123.Stream.Count); Assert.AreEqual("SNAPSHOT123-2", eventStream123.Snapshot); EntryStream eventStream456 = streamReader.StreamFor("name456"); Assert.AreEqual("name456", eventStream456.StreamName); Assert.AreEqual(2, eventStream456.StreamVersion); Assert.AreEqual(0, eventStream456.Stream.Count); Assert.AreEqual("SNAPSHOT456-2", eventStream456.Snapshot); journal.Close(); }
public void TestWriteReadStreamCategory() { var journal = Journal.Open("test"); journal.Write("name123", EntryValue.NoStreamVersion, EntryBatch.Of("type1", "type1_instance1")); journal.Write("name456", EntryValue.NoStreamVersion, EntryBatch.Of("type2", "type2_instance1")); journal.Write("name123", 0, EntryBatch.Of("type1-1", "type1-1_instance1")); journal.Write("name123", 1, EntryBatch.Of("type1-2", "type1-2_instance1")); journal.Write("name456", 0, EntryBatch.Of("type2-1", "type2-1_instance1")); var streamReader = journal.StreamReader(); var categoryEntryStream = streamReader.StreamFor("cat-name"); Assert.AreEqual(4, categoryEntryStream.StreamVersion); var categoryStream = categoryEntryStream.Stream.ToList(); Assert.AreEqual(5, categoryStream.Count); Assert.AreEqual(new EntryValue("name123", 0, "type1", "type1_instance1", ""), categoryStream[0]); Assert.AreEqual(new EntryValue("name456", 1, "type2", "type2_instance1", ""), categoryStream[1]); Assert.AreEqual(new EntryValue("name123", 2, "type1-1", "type1-1_instance1", ""), categoryStream[2]); Assert.AreEqual(new EntryValue("name123", 3, "type1-2", "type1-2_instance1", ""), categoryStream[3]); Assert.AreEqual(new EntryValue("name456", 4, "type2-1", "type2-1_instance1", ""), categoryStream[4]); journal.Close(); }
protected EntryBatch ToBatch <T>(List <T> sources) { EntryBatch batch = new EntryBatch(sources.Count); foreach (T source in sources) { string eventBody = Serialization.Serialize(source); batch.AddEntry(source.GetType().AssemblyQualifiedName, eventBody); } return(batch); }
public void TestWriteRead() { Journal journal = Journal.Open("test"); journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1")); journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1")); JournalReader reader = journal.Reader("test_reader"); Assert.AreEqual(new StoredSource(0, new EntryValue("name123", 1, "type1", "type1_instance1", "")), reader.ReadNext()); reader.Acknowledge(0); Assert.AreEqual(new StoredSource(1, new EntryValue("name456", 1, "type2", "type2_instance1", "")), reader.ReadNext()); reader.Acknowledge(1); Assert.AreEqual(new StoredSource(-1, new EntryValue("", -1, "", "", "")), reader.ReadNext()); journal.Close(); }
public void TestWriteRead() { var journal = Journal.Open("test"); journal.Write("name123", EntryValue.NoStreamVersion, EntryBatch.Of("type1", "type1_instance1")); journal.Write("name456", EntryValue.NoStreamVersion, EntryBatch.Of("type2", "type2_instance1")); var reader = journal.Reader("cat-name"); Assert.AreEqual(new StoredSource(0, new EntryValue("name123", 0, "type1", "type1_instance1", "")), reader.ReadNext()); reader.Acknowledge(0); Assert.AreEqual(new StoredSource(1, new EntryValue("name456", 0, "type2", "type2_instance1", "")), reader.ReadNext()); reader.Acknowledge(1); Assert.AreEqual(new StoredSource(-1, new EntryValue(string.Empty, EntryValue.NoStreamVersion, string.Empty, string.Empty, string.Empty)), reader.ReadNext()); journal.Close(); }
public void TestEventJournalPublisher() { var eventJournal = Journal.Open("test-ej"); var messageBus = MessageBus.Start("test-bus"); var topic1 = messageBus.OpenTopic("test1"); var topic2 = messageBus.OpenTopic("test2"); var journalPublisher1 = JournalPublisher.From(eventJournal.Name, messageBus.Name, topic1.Name); var journalPublisher2 = JournalPublisher.From(eventJournal.Name, messageBus.Name, topic2.Name); var subscriber1 = new JournalPublisherTestSubscriber(); topic1.Subscribe(subscriber1); var batch1 = new EntryBatch(); for (var idx = 0; idx < 3; ++idx) { batch1.AddEntry("test1type", $"test1instance{idx}"); } eventJournal.Write("test1", EntryValue.NoStreamVersion, batch1); subscriber1.WaitForExpectedMessages(3); topic1.Close(); journalPublisher1.Close(); Assert.AreEqual(3, subscriber1.HandledMessages.Count); var subscriber2 = new JournalPublisherTestSubscriber(); topic2.Subscribe(subscriber2); var batch2 = new EntryBatch(); for (var idx = 0; idx < 3; ++idx) { batch2.AddEntry("test2type", $"test2instance{idx}"); } eventJournal.Write("test2", EntryValue.NoStreamVersion, batch2); subscriber2.WaitForExpectedMessages(3); topic2.Close(); journalPublisher2.Close(); Assert.AreEqual(3, subscriber2.HandledMessages.Count); }
public void TestEventJournalPublisher() { Journal eventJournal = Journal.Open("test-ej"); MessageBus messageBus = MessageBus.Start("test-bus"); Topic topic = messageBus.OpenTopic("test-topic"); JournalPublisher journalPublisher = JournalPublisher.From(eventJournal.Name, messageBus.Name, topic.Name); JournalPublisherTestSubscriber subscriber = new JournalPublisherTestSubscriber(); topic.Subscribe(subscriber); EntryBatch batch1 = new EntryBatch(); for (int idx = 0; idx < 3; ++idx) { batch1.AddEntry("test1type", "test1instance" + idx); } eventJournal.Write("test1", 0, batch1); EntryBatch batch2 = new EntryBatch(); for (int idx = 0; idx < 3; ++idx) { batch2.AddEntry("test2type", "test2instance" + idx); } eventJournal.Write("test2", 0, batch2); subscriber.WaitForExpectedMessages(6); topic.Close(); journalPublisher.Close(); Assert.AreEqual(6, subscriber.handledMessages.Count); }