public void FailedCallbackFires()
        {
            List<int> order = new List<int> { 1, 2, 3, 4, 5 };
            List<int> errors = new List<int>();

            ThrottledProcessor<int> queue = new ThrottledProcessor<int>(
                100,
                (int value) => { throw new InvalidOperationException("This is the message"); },
                (int value) => Assert.Fail("The success path should never be called"),
                (int value, Exception ex) =>
                    {
                        Assert.AreEqual("This is the message", ex.Message);
                        errors.Add(value);
                    });

            foreach (int i in order)
            {
                queue.Add(i);
            }

            while (queue.Length > 0)
            {
                Thread.Sleep(100);
            }

            foreach (int expected in order)
            {
                int actual = errors.First();
                errors.RemoveAt(0);

                Assert.AreEqual(expected, actual, "The items were failed in the wrong order");
            }
        }
        public void TimerFires()
        {
            Dictionary<int, DateTime> calls = new Dictionary<int, DateTime>();
            List<int> order = new List<int> { 1, 2, 3, 4, 5 };

            ThrottledProcessor<int> queue = new ThrottledProcessor<int>(
                100,
                (int value) => calls.Add(value, DateTime.UtcNow),
                (int value) => Assert.IsTrue(calls.ContainsKey(value)),
                (int value, Exception ex) => Assert.Fail("Failed during queue callback"));

            foreach (int i in order)
            {
                queue.Add(i);
            }

            while (queue.Length > 0)
            {
                Thread.Sleep(100);
            }

            DateTime last = DateTime.MinValue;
            foreach (int expected in order)
            {
                Assert.IsTrue(calls.ContainsKey(expected));
                Assert.IsTrue(last < calls[expected]);
                last = calls[expected];
            }
        }
示例#3
0
        public void FailedCallbackFires()
        {
            List <int> order = new List <int> {
                1, 2, 3, 4, 5
            };
            List <int> errors = new List <int>();

            ThrottledProcessor <int> queue = new ThrottledProcessor <int>(
                100,
                (int value) => { throw new InvalidOperationException("This is the message"); },
                (int value) => Assert.Fail("The success path should never be called"),
                (int value, Exception ex) =>
            {
                Assert.AreEqual("This is the message", ex.Message);
                errors.Add(value);
            });

            foreach (int i in order)
            {
                queue.Add(i);
            }

            while (queue.Length > 0)
            {
                Thread.Sleep(100);
            }

            foreach (int expected in order)
            {
                int actual = errors.First();
                errors.RemoveAt(0);

                Assert.AreEqual(expected, actual, "The items were failed in the wrong order");
            }
        }
示例#4
0
        public void TimerFires()
        {
            Dictionary <int, DateTime> calls = new Dictionary <int, DateTime>();
            List <int> order = new List <int> {
                1, 2, 3, 4, 5
            };

            ThrottledProcessor <int> queue = new ThrottledProcessor <int>(
                100,
                (int value) => calls.Add(value, DateTime.UtcNow),
                (int value) => Assert.IsTrue(calls.ContainsKey(value)),
                (int value, Exception ex) => Assert.Fail("Failed during queue callback"));

            foreach (int i in order)
            {
                queue.Add(i);
            }

            while (queue.Length > 0)
            {
                Thread.Sleep(100);
            }

            DateTime last = DateTime.MinValue;

            foreach (int expected in order)
            {
                Assert.IsTrue(calls.ContainsKey(expected));
                Assert.IsTrue(last < calls[expected]);
                last = calls[expected];
            }
        }
示例#5
0
 public SmsCommandProcessor()
 {
     _messageProcessor = new ThrottledProcessor <IncomingSmsMessage>(
         100,
         ProcessReceivedMessage,
         ReceivedMessageComplete,
         ReceivedMessageFailed);
 }
示例#6
0
 public SmsCommandProcessor()
 {
     _messageProcessor = new ThrottledProcessor<IncomingSmsMessage>(
         100,
         ProcessReceivedMessage,
         ReceivedMessageComplete,
         ReceivedMessageFailed);
 }
示例#7
0
        public SmsSenderQueue()
        {
            _delay = _transport.DelayMs;

            _processor = new ThrottledProcessor<SmsSenderMessage>(
                _delay,
                SendMessage,
                SendComplete,
                SendException);
        }
示例#8
0
        public SmsSenderQueue()
        {
            _delay = _transport.DelayMs;

            _processor = new ThrottledProcessor <SmsSenderMessage>(
                _delay,
                SendMessage,
                SendComplete,
                SendException);
        }
示例#9
0
        public static async Task TestThrottledProcessor()
        {
            var lambda = new DotStep.Common.StateMachines.ThrottledProcessor.EnsureAccountAndRegionAreSet();

            var type = lambda.GetType();


            var context = new ThrottledProcessor.Context {
                StateMachineName          = "QueueToStepFunction-mIdf0XJZ3l94",
                JobQueueName              = "tiger-item",
                JobProcessingParallelSize = 10,
                MessageProcessorName      = "write-event-test",
                MessageProcessorType      = "Lambda"
            };

            var engine = new StateMachineEngine <ThrottledProcessor, ThrottledProcessor.Context>(context);

            var sm          = new ThrottledProcessor();
            var description = sm.Describe("region", "account");

            await engine.Start();
        }