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();
        }
Пример #4
0
        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();
        }
Пример #7
0
        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);
        }