Наследование: Westwind.Utilities.System.CommandLineParser
Пример #1
0
        public static void ParseFiles(AbParseCommandLineParser cl)
        {
            var path = Path.GetDirectoryName(cl.InputFilePath);
            if (path == string.Empty)
                path = ".\\";
            var fileName = Path.GetFileName(cl.InputFilePath);
            var files = Directory.GetFiles(path,fileName);
            var testInfoList = new List<TestInfo>();

            foreach (var file in files)
            {
                var testInfo = new TestInfo();

                var lines = File.ReadAllLines(file);
                testInfo.RequestName = Path.GetFileNameWithoutExtension(file);

                foreach (var line in lines)
                {
                    //Requests per second:    174.14 [#/sec] (mean)
                    if (line.StartsWith("Requests per"))
                    {
                        var req = StringUtils.ExtractString(line, ":", "[");
                        req = req.Trim();
                        decimal rps = 0;
                        decimal.TryParse(req, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out rps);
                        testInfo.RequestsPerSecond = rps;
                    }

                }
                testInfoList.Add(testInfo);

            }

            WriteOutput(testInfoList,cl);
        }
        static void Main(string[] args)
        {
            var cl = new AbParseCommandLineParser();

            cl.Parse();

            Console.WriteLine("*** Apache Bench Output Parser\r\n\n");


            if (cl.IsHelp)
            {
                string syntax = @"
Usage:

AbParse -i""InputFilePathOrWildCard"" -o""OutputFile"" -m""OutputMode""

    -i - Input file or WildCard to match output generated from ab.exe
    -o - Filename for the output generated
    -m - Output Mode: html,csv, xml
";
                Console.WriteLine(syntax);
                return;
            }

            if (string.IsNullOrEmpty(cl.InputFilePath))
            {
                Console.WriteLine("Input filename is required. Please use the -i switch to specify a file or wildcard path");
                return;
            }

            ParseFiles(cl);
        }
        public static void ParseFiles(AbParseCommandLineParser cl)
        {
            var path = Path.GetDirectoryName(cl.InputFilePath);

            if (path == string.Empty)
            {
                path = ".\\";
            }
            var fileName     = Path.GetFileName(cl.InputFilePath);
            var files        = Directory.GetFiles(path, fileName);
            var testInfoList = new List <TestInfo>();

            foreach (var file in files)
            {
                var testInfo = new TestInfo();

                var lines = File.ReadAllLines(file);
                testInfo.RequestName = Path.GetFileNameWithoutExtension(file);

                foreach (var line in lines)
                {
                    if (string.IsNullOrEmpty(line))
                    {
                        continue;
                    }

                    //Requests per second:    174.14 [#/sec] (mean)
                    if (line.StartsWith("Requests per"))
                    {
                        var req = StringUtils.ExtractString(line, ":", "[");
                        req = req.Trim();
                        decimal rps = 0;
                        decimal.TryParse(req, out rps);
                        testInfo.RequestsPerSecond = rps;
                    }
                    if (line.StartsWith("   (Connect"))
                    {
                        var req = StringUtils.ExtractString(line, "(", ")", returnDelimiters: true);
                        testInfo.FailedRequests = req;
                    }
                }
                testInfoList.Add(testInfo);
            }

            WriteOutput(testInfoList, cl);
        }
        public static void ParseFiles(AbParseCommandLineParser cl)
        {
            var path = Path.GetDirectoryName(cl.InputFilePath);
            if (path == string.Empty)
                path = ".\\";
            var fileName = Path.GetFileName(cl.InputFilePath);
            var files = Directory.GetFiles(path,fileName);
            var testInfoList = new List<TestInfo>();

            foreach (var file in files)
            {
                var testInfo = new TestInfo();

                var lines = File.ReadAllLines(file);
                testInfo.RequestName = Path.GetFileNameWithoutExtension(file);

                foreach (var line in lines)
                {
                    if (string.IsNullOrEmpty(line))
                        continue;

                    //Requests per second:    174.14 [#/sec] (mean)
                    if (line.StartsWith("Requests per"))
                    {
                        var req = StringUtils.ExtractString(line, ":", "[");
                        req = req.Trim();
                        decimal rps = 0;
                        decimal.TryParse(req, out rps);
                        testInfo.RequestsPerSecond = rps;
                    }
                    if (line.StartsWith("   (Connect"))
                    {
                        var req = StringUtils.ExtractString(line, "(", ")",returnDelimiters: true);
                        testInfo.FailedRequests = req;
                    }

                }
                testInfoList.Add(testInfo);

            }

            WriteOutput(testInfoList,cl);
        }
        public static void WriteOutput(List <TestInfo> testInfoList, AbParseCommandLineParser cl)
        {
            var sb = new StringBuilder();

            if (cl.OutputMode == "html")
            {
                WriteHtmlOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "html");
            }
            else if (cl.OutputMode == "xml")
            {
                WriteXmlOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "xml");
            }
            else
            {
                WriteCsvOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "csv");
            }

            File.WriteAllText(cl.OutputFile, sb.ToString());
        }
        static void Main(string[] args)
        {
            var cl = new AbParseCommandLineParser();
            cl.Parse();

            Console.WriteLine("*** Apache Bench Output Parser\r\n\n");

            if (cl.IsHelp)
            {
                string syntax = @"
            Usage:

            AbParse -i""InputFilePathOrWildCard"" -o""OutputFile"" -m""OutputMode""

            -i - Input file or WildCard to match output generated from ab.exe
            -o - Filename for the output generated
            -m - Output Mode: html,csv, xml
            ";
                Console.WriteLine(syntax);
                return;
            }

            if (string.IsNullOrEmpty(cl.InputFilePath))
            {
                Console.WriteLine("Input filename is required. Please use the -i switch to specify a file or wildcard path");
                return;
            }

            ParseFiles(cl);
        }
        public static void WriteOutput(List<TestInfo> testInfoList, AbParseCommandLineParser cl)
        {
            var sb = new StringBuilder();
            if (cl.OutputMode == "html")
            {
                WriteHtmlOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "html");
            }
            else if (cl.OutputMode == "xml")
            {
                WriteXmlOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "xml");
            }
            else
            {
                WriteCsvOutput(testInfoList, sb);
                cl.OutputFile = Path.ChangeExtension(cl.OutputFile, "csv");
            }

            File.WriteAllText(cl.OutputFile, sb.ToString());
        }