コード例 #1
0
        static void Main(string[] args)
        {
            try
            {
                Logger.Logger = new LoggerConfiguration()
                                .Enrich.WithRebusCorrelationId("Test-Run")
                                .WriteTo.RollingFile("logs-{date}.txt")
                                .CreateLogger();
                var markDownPage = new MarkDownPage();

                markDownPage.AddMarkDown(new Header
                {
                    HeaderLevel = HeaderLevel.One,
                    Text        = "Load test data"
                });
                markDownPage.AddTextNewLine("Aws rebus sns and sqs load test results.");
                markDownPage.AddTextNewLine("Test were run without compression or encryption.");
                markDownPage.AddTextNewLine("Added different message sizes to show performance difference.");
                markDownPage.AddTextNewLine("As always with tcp you want to keep your packet size below 64k.");
                markDownPage.AddTextNewLine("Keeping your messages below 32k will keep headers, etc from bumping your message over 64k.");
                markDownPage.AddTextNewLine("It will also help you keep your aws costs down as going over 64k will double your cost per message");

                markDownPage.AddMarkDown(TextControl.Newline);

                var tableControl = new TableControl();

                markDownPage.AddMarkDown(tableControl);

                tableControl.AddColumn("Test");
                tableControl.AddColumn("max # concurrent publishes");
                tableControl.AddColumn("Publish per second");
                tableControl.AddColumn("Receive # of workers");
                tableControl.AddColumn("Receive max parallelism");
                tableControl.AddColumn("# msgs Receive per second");

#if DEBUG
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 4,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1,
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
#else
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 4,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 16,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 32,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 64,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
                AsyncHelpers.RunSync(() => RunTest(
                                         new SendOptions()
                {
                    MessageSizeKilobytes   = 128,
                    MaxDegreeOfParallelism = 200,
                    MaxMessagesPerTask     = 1
                },
                                         new ReceiveOptions()
                {
                    RebusMaxParallelism  = 200,
                    RebusNumberOfWorkers = Environment.ProcessorCount
                }, tableControl));
#endif

                Console.WriteLine("Creating load test result markdown");

                var file = "..\\..\\..\\LoadResults.md";

                using (FileStream fs = new FileStream(file, FileMode.Create))
                {
                    markDownPage.Write(fs);
                }
            }
            finally
            {
                Console.WriteLine("Complete. Press enter to close.");
                Console.ReadLine();
            }
        }