Example #1
0
        public void BasicSiteValidatorTest()
        {
            var requestList = new List <HttpRequestData>()
            {
                new HttpRequestData
                {
                    Url = "http://www.microsoft.com/en-us/default.aspx"
                },
                new HttpRequestData
                {
                    Url = "http://localhost/WebLog"
                },
                new HttpRequestData
                {
                    Url = "http://localhost/WebLog/posts"
                }
            };
            var stress = new StressTester();

            var  validator = new SiteValidator(stress);
            bool result    = validator.CheckAllServers(requestList);

            Assert.IsFalse(result);
            Console.WriteLine(validator.ErrorMessage);
        }
        public void TestAllSitesThreadsTest()
        {
            SessionParser          parser       = new SessionParser();
            List <HttpRequestData> httpRequests = null;

            var tester = new StressTester();

            var swatch = new Stopwatch();

            swatch.Start();

            var results = tester.CheckAllSites(httpRequests, 40, 40);

            Assert.IsNotNull(results);

            swatch.Stop();

            long totalTime = swatch.ElapsedMilliseconds / 1000;

            Console.WriteLine(tester.ParseResults(results, (int)totalTime));

            int count = 0;

            foreach (var result in results.OrderByDescending(res => res.StatusCode))
            {
                count++;
                Console.WriteLine(count + ". " + result.Url);
                Console.WriteLine("\t" + result.StatusCode + "  " + result.TimeTakenMs.ToString("n0") + "ms " + result.ErrorMessage);
            }
        }
Example #3
0
        public void FileRequestWriterBasic()
        {
            var stressTester = new StressTester();

            int requestCount = 10_000_001;

            Stopwatch watch = new Stopwatch();

            watch.Start();

            using (var writer = new FileCollectionRequestWriter(stressTester)
            {
                MaxCollectionItems = 10_000
            })
        public void CheckSingleSiteWithGzipTest()
        {
            var tester = new StressTester();

            tester.Options.MaxResponseSize = 0;
            var resp = tester.CheckSite(new HttpRequestData()
            {
                HttpVerb = "GET",
                Url      = "http://weblog.west-wind.com/posts/2014/Feb/22/Using-CSS-Transitions-to-SlideUp-and-SlideDown"
            });


            Console.WriteLine(resp.StatusCode);
            Console.WriteLine(resp.TimeTakenMs);
            Console.WriteLine(resp.ResponseContent);
        }
        public void CheckSiteSyncTest()
        {
            SessionParser          parser       = new SessionParser();
            List <HttpRequestData> httpRequests = null;

            Assert.IsNotNull(httpRequests);

            foreach (var req in httpRequests)
            {
                var tester = new StressTester();
                var res    = tester.CheckSite(req);

                Assert.IsNotNull(res, "No Result Returned.");
                Assert.IsNotNull(res.IsError, res.ErrorMessage);

                Console.WriteLine(res.StatusCode + " " + res.Url + " " + res.TimeTakenMs.ToString("n0") + " " + res.ErrorMessage);
                //Console.WriteLine(res.ResponseContent);
            }
        }
Example #6
0
        public void Basic3SiteValidatorTest()
        {
            var requestList = new List <HttpRequestData>()
            {
                // should work because it's local loopback
                new HttpRequestData
                {
                    Url = "http://rasxps/WebLog"
                },
                new HttpRequestData
                {
                    Url = "http://rasxps/WebLog/posts"
                }
            };
            var stress = new StressTester();

            var  validator = new SiteValidator(stress);
            bool result    = validator.CheckAllServers(requestList);

            Console.WriteLine(validator.ErrorMessage);
            Assert.IsTrue(result);
        }
Example #7
0
        public void MemoryRequestWriterBasic()
        {
            var stressTester = new StressTester();
            var writer       = new RequestWriter(stressTester);

            int requestCount = 10_000_001;

            for (int i = 0; i < requestCount; i++)
            {
                var req = new HttpRequestData
                {
                    TimeTakenMs = 10,
                    Timestamp   = DateTime.Now,
                    Url         = "http://localhost"
                };

                writer.Write(req);
            }

            Assert.IsTrue(writer.RequestsProcessed == requestCount);
            Assert.IsTrue(writer.GetResults().Count == requestCount);
        }
        public void ResultsReportTimeTakenTest()
        {
            var time = DateTime.UtcNow;

            var requests = new List <HttpRequestData>()
            {
                new HttpRequestData()
                {
                    Timestamp   = time,
                    TimeTakenMs = 10
                },
                new HttpRequestData()
                {
                    Timestamp   = time.AddMilliseconds(20),
                    TimeTakenMs = 15
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(220),
                    TimeTakenMs = 15
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(1020),
                    TimeTakenMs = 20
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(1050),
                    TimeTakenMs = 20
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(1200),
                    TimeTakenMs = 20
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(3020),
                    TimeTakenMs = 20
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(3050),
                    TimeTakenMs = 20
                },
                new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(3200),
                    TimeTakenMs = 20
                }, new HttpRequestData
                {
                    Timestamp   = time.AddMilliseconds(3500),
                    TimeTakenMs = 50
                }
            };
            var timeTakenMs = 30000;

            var stressTester = new StressTester();
            var writer       = new RequestWriter(stressTester);

            writer.SetResults(requests);

            var parser  = new ResultsParser();
            var results = parser.GetResultReport(writer, timeTakenMs, 10);

            Assert.AreEqual(timeTakenMs / 1000, results.TestResult.TimeTakenSecs);

            Console.WriteLine(JsonSerializationUtils.Serialize(results, false, true));
        }
Example #9
0
File: Program.cs Project: fzfy6/ktv
        static void Main(string[] args)
        {
            var origColor = Console.ForegroundColor;


            var options = new CommandLineOptions();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
            {
                return;
            }


            Console.ForegroundColor = ConsoleColor.White;

            // If SessionFile is a Url assign to Url so we run on a single URL
            if (!string.IsNullOrEmpty(options.SessionFile) &&
                (options.SessionFile.StartsWith("http://") || options.SessionFile.StartsWith("https://")))
            {
                options.Url         = options.SessionFile;
                options.SessionFile = null;
            }


            var stressTester = new StressTester();

            List <HttpRequestData> requests;

            if (!string.IsNullOrEmpty(options.SessionFile))
            {
                requests = stressTester.ParseSessionFile(options.SessionFile);
            }
            else
            {
                if (string.IsNullOrEmpty(options.Url))
                {
                    Console.WriteLine(options.GetUsage());
                    Console.ForegroundColor = origColor;
                    return;
                }

                requests = new List <HttpRequestData>();
                requests.Add(new HttpRequestData
                {
                    Url = options.Url
                });
            }

            if (options.Silent != 0 && options.Silent != 1)
            {
                Console.WriteLine("West Wind WebSurge v" + GetVersion());
                Console.WriteLine("------------------------");
            }

            int time    = options.Time;
            int threads = options.Threads;

            stressTester.Options.DelayTimeMs       = options.DelayTimeMs;
            stressTester.Options.RandomizeRequests = options.RandomizeRequests;
            stressTester.Options.WarmupSeconds     = options.WarmupSeconds;

            if (options.Silent != 0 && options.Silent != 1)
            {
                stressTester.RequestProcessed += stressTester_RequestProcessed;
            }

            if (options.Silent != 0 && options.Silent != 2)
            {
                stressTester.Progress += stressTester_Progress;
            }

            Console.ForegroundColor = ConsoleColor.Green;
            var results = stressTester.CheckAllSites(requests, threads, time);

            if (results == null)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Error: " + stressTester.ErrorMessage);
                Console.ForegroundColor = origColor;
                return;
            }
            Console.ForegroundColor = ConsoleColor.White;

            if (options.Json)
            {
                var result = stressTester.ResultsParser.GetResultReport(stressTester.Results,
                                                                        stressTester.TimeTakenForLastRunMs,
                                                                        stressTester.ThreadsUsed);
                string json = JsonSerializationUtils.Serialize(result, formatJsonOutput: true);

                Console.WriteLine(json);
                Console.ForegroundColor = origColor;
                if (options.OutputFile != null)
                {
                    File.WriteAllText(options.OutputFile, json);
                }
                return;
            }

            string resultText = stressTester.ParseResults(results);

            if (options.Silent != 0)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine();
                Console.WriteLine("Summary:");
                Console.WriteLine("--------");
                Console.ForegroundColor = ConsoleColor.White;
            }

            if (options.SessionFile != null)
            {
                Console.WriteLine("Session: " + options.SessionFile);
            }
            else
            {
                Console.WriteLine("Url: " + options.Url);
            }


            Console.WriteLine();
            Console.WriteLine(resultText);

            if (options.OutputFile != null)
            {
                File.WriteAllText(options.OutputFile, resultText);
            }

            Console.ForegroundColor = origColor;
        }
Example #10
0
        static void Main(string[] args)
        {
            var origColor = Console.ForegroundColor;

            var options = new CommandLineOptions();

            if (!CommandLine.Parser.Default.ParseArguments(args, options))
                return;

            Console.ForegroundColor = ConsoleColor.White;

            // If SessionFile is a Url assign to Url so we run on a single URL
            if (!string.IsNullOrEmpty(options.SessionFile) &&
                (options.SessionFile.StartsWith("http://") || options.SessionFile.StartsWith("https://")))
            {
                options.Url = options.SessionFile;
                options.SessionFile = null;
            }

            var stressTester = new StressTester();

            List<HttpRequestData> requests;
            if (!string.IsNullOrEmpty(options.SessionFile))
                requests = stressTester.ParseSessionFile(options.SessionFile);
            else
            {
                if (string.IsNullOrEmpty(options.Url))
                {
                    Console.WriteLine(options.GetUsage());
                    Console.ForegroundColor = origColor;
                    return;
                }

                requests = new List<HttpRequestData>();
                requests.Add(new HttpRequestData
                {
                    Url =options.Url
                });
            }

            if (options.Silent != 0 && options.Silent != 1)
            {
                Console.WriteLine("West Wind WebSurge v" + GetVersion());
                Console.WriteLine("------------------------");
            }

            int time = options.Time;
            int threads = options.Threads;

            stressTester.Options.DelayTimeMs = options.DelayTimeMs;
            stressTester.Options.RandomizeRequests = options.RandomizeRequests;
            stressTester.Options.WarmupSeconds = options.WarmupSeconds;

            if (options.Silent != 0 && options.Silent != 1)
                stressTester.RequestProcessed += stressTester_RequestProcessed;

            if (options.Silent != 0  && options.Silent != 2)
                stressTester.Progress += stressTester_Progress;

            Console.ForegroundColor = ConsoleColor.Green;
            var results = stressTester.CheckAllSites(requests,threads,time);
            if (results == null)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Error: " + stressTester.ErrorMessage);
                Console.ForegroundColor = origColor;
                return;
            }
            Console.ForegroundColor = ConsoleColor.White;

            if (options.Json)
            {
                var result = stressTester.ResultsParser.GetResultReport(stressTester.Results,
                    stressTester.TimeTakenForLastRunMs,
                    stressTester.ThreadsUsed);
                string json = JsonSerializationUtils.Serialize(result, formatJsonOutput: true);
                Console.WriteLine(json);
                Console.ForegroundColor = origColor;
                return;
            }

            string resultText = stressTester.ParseResults(results);

            if (options.Silent != 0)
            {
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine();
                Console.WriteLine("Summary:");
                Console.WriteLine("--------");
                Console.ForegroundColor = ConsoleColor.White;
            }

            if (options.SessionFile != null)
                Console.WriteLine("Session: " + options.SessionFile);
            else
                Console.WriteLine("Url: " + options.Url);

            Console.WriteLine();
            Console.WriteLine(resultText);

            Console.ForegroundColor = origColor;
        }