public void Processor_sleeps_for_one_minute_if_theres_no_message()
        {
            var queue = new Mock<IQueue>();
            CloudQueueMessage message = null;
            queue.Setup(q => q.GetMessage()).Returns(message);

            var sleepService = new Mock<ISleepService>();
            var traceService = new Mock<ITraceService>();
            var parser = new Mock<IQueueMessageParser>();

            var processor = new QueueMessageProcessor(sleepService.Object, queue.Object, traceService.Object, parser.Object);

            processor.Run(message);

            queue.Verify(q => q.GetMessage(), Times.Once());
            sleepService.Verify(s => s.Sleep(60000), Times.Once());
        }
        public void Processor_traces_thrown_error_and_sleeps_for_one_minute()
        {
            var queue = new Mock<IQueue>();
            var message = new CloudQueueMessage("job;type");
            queue.Setup(q => q.GetMessage()).Returns(message);

            var sleepService = new Mock<ISleepService>();
            var traceService = new Mock<ITraceService>();
            var parser = new Mock<IQueueMessageParser>();
            parser.Setup(p => p.Parse(message)).Throws<NotImplementedException>();

            var processor = new QueueMessageProcessor(sleepService.Object, queue.Object, traceService.Object, parser.Object);

            processor.Run(message);

            traceService.Verify(t => t.TraceError(It.IsAny<string>()), Times.Once());
            sleepService.Verify(s => s.Sleep(60000), Times.Once());
        }
예제 #3
0
        public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            ServicePointManager.DefaultConnectionLimit = Environment.ProcessorCount;
            ConfigureDiagnostics();

            var storageAccount = Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("StorageConnectionString"));

            var jobs = JobFactory.Create();

            _messageProcessor = new QueueMessageProcessor(
                new SleepService(),
                new JobQueue(storageAccount),
                new TraceService(),
                new QueueMessageParser(jobs));

            return base.OnStart();
        }
        public void Processor_gets_message_from_queue()
        {
            // arrange
            var message = new CloudQueueMessage("email;test");
            var queue = new Mock<IQueue>();
            queue.Setup(q => q.GetMessage()).Returns(message);

            var sleepService = new Mock<ISleepService>();
            var traceService = new Mock<ITraceService>();
            var parser = new Mock<IQueueMessageParser>();

            var processor = new QueueMessageProcessor(sleepService.Object, queue.Object, traceService.Object, parser.Object);

            // act
            processor.Run(message);

            // assert
            queue.Verify(q => q.GetMessage(), Times.Once());
            parser.Verify(p => p.Parse(message), Times.Once());
            queue.Verify(q => q.DeleteMessage(message), Times.Once());
        }