示例#1
0
        public async Task GetMetrics_ReturnsExpectedResult()
        {
            var queuesOptions = new QueuesOptions();
            Mock <ITriggerExecutor <QueueMessage> > mockTriggerExecutor = new Mock <ITriggerExecutor <QueueMessage> >(MockBehavior.Strict);
            var           queueProcessorFactory = new DefaultQueueProcessorFactory();
            var           queueProcessor        = QueueListenerFactory.CreateQueueProcessor(Fixture.Queue, null, _loggerFactory, queueProcessorFactory, queuesOptions, null);
            QueueListener listener = new QueueListener(Fixture.Queue, null, mockTriggerExecutor.Object, new WebJobsExceptionHandler(null),
                                                       _loggerFactory, null, queuesOptions, queueProcessor, new FunctionDescriptor {
                Id = "TestFunction"
            });

            var metrics = await listener.GetMetricsAsync();

            Assert.AreEqual(0, metrics.QueueLength);
            Assert.AreEqual(TimeSpan.Zero, metrics.QueueTime);
            Assert.AreNotEqual(default(DateTime), metrics.Timestamp);

            // add some test messages
            for (int i = 0; i < 5; i++)
            {
                await Fixture.Queue.SendMessageAsync($"Message {i}");
            }

            await Task.Delay(TimeSpan.FromSeconds(5));

            metrics = await listener.GetMetricsAsync();

            Assert.AreEqual(5, metrics.QueueLength);
            Assert.True(metrics.QueueTime.Ticks > 0);
            Assert.AreNotEqual(default(DateTime), metrics.Timestamp);

            // verify non-generic interface works as expected
            metrics = (QueueTriggerMetrics)(await((IScaleMonitor)listener).GetMetricsAsync());
            Assert.AreEqual(5, metrics.QueueLength);
        }