public void testMultipleConsumers() { var mockStorage = new MockStorage(); var q = new PersistentBlockingQueue(mockStorage, new PayloadToJsonString()); int expectedRecordCount = 1000; var producer = new MockProducer(expectedRecordCount, q); var producerThread = new Thread(new ThreadStart(producer.Produce)); producerThread.Start(); var threads = new List <Thread>(); var consumers = new List <MockConsumer>(); for (int i = 0; i < expectedRecordCount; i++) { var consumer = new MockConsumer(1, q); var consumerThread = new Thread(new ThreadStart(consumer.Consume)); consumerThread.Start(); threads.Add(consumerThread); consumers.Add(consumer); } threads.ForEach(t => { t.Join(100); }); var total = (from c in consumers select c.Consumed.Count).Sum(); bool allConsumedOneItem = !consumers.Any(item => { return(item.Consumed.Count != 1); }); Assert.IsTrue(allConsumedOneItem); Assert.AreEqual(expectedRecordCount, total); }
public void testAddRemoveThreaded() { var mockStorage = new MockStorage(); var q = new PersistentBlockingQueue(mockStorage, new PayloadToJsonString()); int expectedRecordCount = 1000; var consumer = new MockConsumer(expectedRecordCount, q); var producer = new MockProducer(expectedRecordCount / 2, q); var secondProducer = new MockProducer(expectedRecordCount / 2, q); var consumerThread = new Thread(new ThreadStart(consumer.Consume)); consumerThread.Start(); var producerThread = new Thread(new ThreadStart(producer.Produce)); producerThread.Start(); var secondProducerThread = new Thread(new ThreadStart(secondProducer.Produce)); secondProducerThread.Start(); consumerThread.Join(1000); // time out if errors Assert.AreEqual(expectedRecordCount, consumer.Consumed.Count); }
public void testConsumerTimeout() { var mockStorage = new MockStorage(); var q = new PersistentBlockingQueue(mockStorage, new PayloadToJsonString()); var consumer = new MockConsumer(1, q, 10); var consumerThread = new Thread(new ThreadStart(consumer.Consume)); consumerThread.Start(); consumerThread.Join(500); Assert.AreEqual(0, consumer.Consumed.Count); }
public void TestAdapterLogConsumer() { var mockConsumer = new MockConsumer(null, "group", "CONSUMER"); var config = new StreamConfig(); config.ApplicationId = "test-logger-adapter"; var logger = new InMemoryLogger(); var log = new LogImpl(logger); var adapter = new KafkaLoggerAdapter(config, log); adapter.LogConsume(mockConsumer, new Confluent.Kafka.LogMessage("error", Confluent.Kafka.SyslogLevel.Critical, "", "error")); Assert.AreEqual(1, logger.Logs.Count); logger.Logs.Clear(); adapter.ErrorConsume(mockConsumer, new Confluent.Kafka.Error(Confluent.Kafka.ErrorCode.BrokerNotAvailable, "error")); Assert.AreEqual(1, logger.Logs.Count); logger.Logs.Clear(); }