Пример #1
0
        // ReSharper disable InconsistentNaming
        static void TestConfiguration(IQueueWriter sender, RawEngineBuilder builder)
        {
            int i = 0;

            using (var t = new CancellationTokenSource())
                using (TestObserver.When <MessageAcked>(ea =>
                {
                    if (ea.Context.QueueName != "do")
                    {
                        return;
                    }
                    if (i++ >= 5)
                    {
                        t.Cancel();
                    }
                }))
                    using (var engine = builder.Build())
                    {
                        engine.Start(t.Token);
                        sender.PutMessage(new byte[1]);
                        if (!t.Token.WaitHandle.WaitOne(5000))
                        {
                            t.Cancel();
                        }
                        Assert.IsTrue(t.IsCancellationRequested);
                    }
        }
Пример #2
0
        public void Test()
        {
            using (var source = new CancellationTokenSource())
            {
                var dev = AzureStorage.CreateConfigurationForDev();
                WipeAzureAccount.Fast(s => s.StartsWith("test-"), dev);
                var b = new RawEngineBuilder();
                b.Dispatch(dev.CreateInbox("test-publish"), bytes =>
                {
                    if (bytes[0] == 42)
                    {
                        source.Cancel();
                    }
                });


                using (var engine = b.Build())
                {
                    var task = engine.Start(source.Token);

                    dev.CreateQueueWriter("test-publish").PutMessage(new byte[] { 42 });
                    if (!task.Wait(5000))
                    {
                        source.Cancel();
                    }
                }
            }
        }
Пример #3
0
        public void Memory_lambda()
        {
            var config = new MemoryAccount();
            var writer = config.CreateQueueWriter("test");
            var inbox  = config.CreateInbox("test");

            var builder = new RawEngineBuilder();

            builder.Dispatch(inbox, bytes => { });

            var setup = new Setup
            {
                Send   = i => writer.PutMessage(new[] { i }),
                Engine = builder.Build()
            };

            TestConfiguration(setup, 1000000);
        }
Пример #4
0
        public void File_lambda()
        {
            var config = FileStorage.CreateConfig("throughput-tests");

            config.Wipe();

            var writer  = config.CreateQueueWriter("test");
            var inbox   = config.CreateInbox("test", u => TimeSpan.FromMilliseconds(0));
            var builder = new RawEngineBuilder();

            builder.Dispatch(inbox, bytes => { });

            var setup = new Setup
            {
                Send   = i => writer.PutMessage(new[] { i }),
                Engine = builder.Build()
            };

            TestConfiguration(setup, 1000);
        }
Пример #5
0
        public void Throughput_Azure_lambda()
        {
            var config = AzureStorage.CreateConfigurationForDev();

            WipeAzureAccount.Fast(s => s.StartsWith("throughput"), config);

            var writer  = config.CreateQueueWriter("test");
            var inbox   = config.CreateInbox("test", u => TimeSpan.Zero);
            var builder = new RawEngineBuilder();

            builder.Dispatch(inbox, bytes => { });

            var setup = new Setup
            {
                Send   = i => writer.PutMessage(new[] { i }),
                Engine = builder.Build()
            };

            TestConfiguration(setup, 100);
        }