Пример #1
0
        public void ProduceConsumeMessageTest()
        {
            Topic         topic            = BuildTopic("a");
            GruppoMessage expectedMessage1 = new GruppoMessage("This is meta", "This is body");
            long          actualOffset     = 0;
            DateTime      actualTimestamp;

            topic.Produce(expectedMessage1, out actualOffset, out actualTimestamp);

            GruppoMessage actualMessage;

            topic.Consume(actualOffset, out actualMessage);

            Assert.AreEqual(expectedMessage1.Meta, actualMessage.Meta);
            Assert.AreEqual(ByteArrayToString(expectedMessage1.Body), ByteArrayToString(actualMessage.Body));
            Assert.AreEqual(actualOffset, actualMessage.Offset.Value);
            Assert.AreEqual(actualTimestamp, actualMessage.Timestamp.Value);
        }
Пример #2
0
        public void ProduceManyConsumeGroupMessageTest()
        {
            Topic         topic            = BuildTopic("a");
            GruppoMessage expectedMessage1 = new GruppoMessage("This is meta", "This is body");
            long          actualOffset     = 0;
            DateTime      actualTimestamp;

            List <ManualResetEvent> events = new List <ManualResetEvent>();

            for (int j = 0; j < 5; j++)
            {
                var localEvent = new ManualResetEvent(false);
                events.Add(localEvent);
                System.Threading.ThreadPool.QueueUserWorkItem(o =>
                {
                    var evt = o as ManualResetEvent;
                    for (int i = 0; i < 5; i++)
                    {
                        topic.Produce(expectedMessage1, out actualOffset, out actualTimestamp);
                        Console.WriteLine($"Produced: {actualOffset} {actualTimestamp}");
                    }
                    evt.Set();
                }, localEvent);
            }

            foreach (var e in events)
            {
                e.WaitOne();
                e.Dispose();
            }

            GruppoMessage actualMessage;

            System.Threading.Thread.Sleep(1000);

            for (int i = 0; i < 25; i++)
            {
                topic.Consume("group_1", out actualMessage);

                Assert.NotNull(actualMessage);
                Assert.AreEqual(expectedMessage1.Meta, actualMessage.Meta);
                Assert.AreEqual(ByteArrayToString(expectedMessage1.Body), ByteArrayToString(actualMessage.Body));
            }
        }