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()); }