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); }
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)); } }