From ce862ed3528fb8eb6c4ed2cf5196fcdc947dd784 Mon Sep 17 00:00:00 2001 From: Bobris Date: Mon, 25 Nov 2013 01:13:20 +0100 Subject: [PATCH 1/2] Fix abparse to work on various cultures. --- AbParse/Program.cs | 3 ++- LoadTests/AbParse.exe | Bin 23552 -> 21504 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/AbParse/Program.cs b/AbParse/Program.cs index 489f192..fd7602f 100644 --- a/AbParse/Program.cs +++ b/AbParse/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Text; @@ -68,7 +69,7 @@ public static void ParseFiles(AbParseCommandLineParser cl) var req = StringUtils.ExtractString(line, ":", "["); req = req.Trim(); decimal rps = 0; - decimal.TryParse(req, out rps); + decimal.TryParse(req, NumberStyles.Any, NumberFormatInfo.InvariantInfo, out rps); testInfo.RequestsPerSecond = rps; } diff --git a/LoadTests/AbParse.exe b/LoadTests/AbParse.exe index be72a533e5c47b23ed5ea3df1913b3353f99af08..b3fc62383f42655b5dd36f93a1b7d46cd9db7ef6 100644 GIT binary patch delta 9200 zcmai43z!tul|J{@yQ*K+JySgc^XP$LD7t%q0W}E7Lq>VORb~K{Q3sd_P}+kiKIlQw z5Q7Ld!N|r0N#f@#8pRk{-Ay7JvoYBuCdPzpoV<1o`4TmL=8L#)aQ}O&rXexkxBbbf zd!F~4bI(2ZR*i$tvB8JgzTKnx58S(gqTjEGGlw}u3qUYK;*5>^AH6K`#|=bF1!0hA zqPD*!6FW>41OCiCnPv& zyFRM#RrS?8ToA4xB7zft<4Rfj(!sNNFApIm7ZbT~2QZ(GG+<%% zk|i8y#bkQW47?aGEe6FgBrUItr0D(_;h<9*#Ut6g?qkh$%q}K>50fJfmxsb_5VrLl zBVpMNL#w>1wxrFB?PZ)Phav3Ru5&1(RxGWl$<;G4FB31Ubz^S)P{weL(g{o>oUx0u zE6cRDa_&PcsXrcswB=90qs`S^ORS>q#wW?xMG3I@;FJYx5@f~l>V+kd zhNhgYkvvO7a?U6;!eHtwc3db{+2JgDFc}m0=K$oJcz`-Zaz`S!uMw5WfVZVusM(4h zoC}#YrL;&xlH{20z@n<{Zp~>u4ZQ*ECwowkB;7~u3c(c6VufqW;Cu`mrL?xHt&}!m zYy{XTdTASm{#1wz&mwqbL;4d>E2Y~6e;W87mD~+hsAUGzA<=$d$To|*8C(G57fR`1 zm9LZ@u8vVb47uSnhps(JHdY1|#mU7J)#-B2_YuD?;+_FJZD*20NRI*@5$eoUN-tM! z@*OC~Fdt|FQ9cAo($D0>DNHtGK7@4{zOExYvGKymKo$#8j-|OjQ&45PjWE1#4cSIf zH^T7pQ55IW%&lP*O<@Ouzc-`S!bT}?uyksM!8XwxakG`gZk^-gViAW_?)HJ9w1XXSVNo@+LokFaP zsdPUFfM|U9tmj4Q_h15W+^ns(udH!+Fbnv=Y=D?jH*g`Iacf|XpmhQ`MmD$zPop^( zTr8gT!CX8{g9r2Q9Mal6dx(an%bd;!bzlJonX(qy%c$7*Di0Q(r4Vz~qT#B+ zBB7$^8Fmn1zs#CT8ukI>7|&f2E(y^ZYPf+kYzWZT(C8iV;F5KOniq!;f;lS=N0C04 zZ6$JA37s~S$Z5MxE%MVNgy*6cib@u>TpUlfn7oZEp5G?&C8}DZmEfXnx{5qimJguO zqEVieBW|do?dt8OE(7xNioXOkj^2zj*Y@-PD{J=!%K?{%B1RyRl@-lGArS@o9HOXk zWbR^e4o75JCe22crOQZlSiUlEiXrVUmqDN)P*UWL2!r5MR%uk*@ZMAi2dUhfG6Qn*t-v0)5ki3U+4d01LK8{HnqLA!TTR9oT0Au0D(aTZnJl17!9f9OH5omuAuY0( z(NRKraG5lvOXbv1%+*mtVLnkqu7T|=>&T&8fojTOAvtv3Y(hg3ztz;Rjr6dPR#R(K zNTPFzgBWGthGEz`mu_Qs2$x`3WCvYZWXR>sR?WaF;fk*K#js99Rz3zkWRMk+l7X_= z1vVe(!oxww5zfbkqS~v84<*iCN;7Z4d%1=>WgE#3oz!XcxNr$aq7btnA`%?fvtTRe z7WUr5F81G{n32&(%Bzq#t36jg;u={qSOXgv)s^1G zX^BC-$!mhO!usTpGeQB?zZ{4&

0Mri>WjN;?g1}eE4j%`isaUACNs&(U4H9Pq_ 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 Xo&K&7+Y$b8E%hAoSN~BQ?6Lk2eG+ec From 04d4ef4170b4e41d877f7d3012bfd1bb8a5bcc90 Mon Sep 17 00:00:00 2001 From: Bobris Date: Mon, 25 Nov 2013 01:15:06 +0100 Subject: [PATCH 2/2] Nowin server sample --- AspNetFrameworksPerformance.sln | 6 ++ HeliosSample/HeliosSample.csproj | 4 +- LoadTests/ab_Nowin.bat | 39 +++++++++++ NowinSample/App.config | 14 ++++ NowinSample/NowinSample.csproj | 95 ++++++++++++++++++++++++++ NowinSample/Person.cs | 21 ++++++ NowinSample/Program.cs | 24 +++++++ NowinSample/Properties/AssemblyInfo.cs | 36 ++++++++++ NowinSample/Startup.cs | 53 ++++++++++++++ NowinSample/TestController.cs | 35 ++++++++++ NowinSample/packages.config | 12 ++++ 11 files changed, 337 insertions(+), 2 deletions(-) create mode 100644 LoadTests/ab_Nowin.bat create mode 100644 NowinSample/App.config create mode 100644 NowinSample/NowinSample.csproj create mode 100644 NowinSample/Person.cs create mode 100644 NowinSample/Program.cs create mode 100644 NowinSample/Properties/AssemblyInfo.cs create mode 100644 NowinSample/Startup.cs create mode 100644 NowinSample/TestController.cs create mode 100644 NowinSample/packages.config diff --git a/AspNetFrameworksPerformance.sln b/AspNetFrameworksPerformance.sln index 04ae4ac..a175016 100644 --- a/AspNetFrameworksPerformance.sln +++ b/AspNetFrameworksPerformance.sln @@ -18,6 +18,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AbParse", "AbParse\AbParse. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeliosSample", "HeliosSample\HeliosSample.csproj", "{FC61909E-38A4-43D0-8DCD-F0072B37B687}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NowinSample", "NowinSample\NowinSample.csproj", "{B93C6B61-24C3-4732-AC4D-9A42FA05BC8F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -35,6 +37,10 @@ Global {FC61909E-38A4-43D0-8DCD-F0072B37B687}.Debug|Any CPU.Build.0 = Debug|Any CPU {FC61909E-38A4-43D0-8DCD-F0072B37B687}.Release|Any CPU.ActiveCfg = Release|Any CPU {FC61909E-38A4-43D0-8DCD-F0072B37B687}.Release|Any CPU.Build.0 = Release|Any CPU + {B93C6B61-24C3-4732-AC4D-9A42FA05BC8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B93C6B61-24C3-4732-AC4D-9A42FA05BC8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B93C6B61-24C3-4732-AC4D-9A42FA05BC8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B93C6B61-24C3-4732-AC4D-9A42FA05BC8F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/HeliosSample/HeliosSample.csproj b/HeliosSample/HeliosSample.csproj index 5c65888..a46b826 100644 --- a/HeliosSample/HeliosSample.csproj +++ b/HeliosSample/HeliosSample.csproj @@ -15,7 +15,7 @@ HeliosSample HeliosSample v4.5.1 - false + true @@ -111,7 +111,7 @@ True 27497 / - http://localhost/HeliosSample + http://localhost:27497/ False False diff --git a/LoadTests/ab_Nowin.bat b/LoadTests/ab_Nowin.bat new file mode 100644 index 0000000..15b974f --- /dev/null +++ b/LoadTests/ab_Nowin.bat @@ -0,0 +1,39 @@ +REM make sure you add +REM C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin +REM to your path so ab.exe can be found +REM Start NowinSample.exe and have free port 8080 + +del *.txt +del AbParseResults.* + +REM Warm up + +ab.exe -n100 -c20 http://localhost:8080/test/person/ > NowinWebApiJson.txt +ab.exe -n20000 -c20 http://localhost:8080/test/person/ > NowinWebApiJson.txt + +ab.exe -n100 -c20 http://localhost:8080/ +ab.exe -n20000 -c20 http://localhost:8080/ > Nowin.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/handler.ashx +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/handler.ashx > HttpHandler.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/Handler.ashx?action=json +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/Handler.ashx?action=json > HandlerJson.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/api/HelloWorldCode/ +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/api/HelloWorldCode/ > WebApi.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/api/HelloWorldJson/ +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/api/HelloWorldJson/ > WebApiJson.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/MvcPerformance/HelloWorldCode/ +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/MvcPerformance/HelloWorldCode/ > Mvc.txt + +ab.exe -n100 -c20 http://localhost:8080/aspnetperf/MvcPerformance/HelloWorldJson +ab.exe -n20000 -c20 http://localhost:8080/aspnetperf/MvcPerformance/HelloWorldJson > MvcJson.txt + +abParse -i"*.txt" -o"AbParseResults.html" -m"html" +abParse -i"*.txt" -o"AbParseResults.csv" -m"csv" +abParse -i"*.txt" -o"AbParseResults.xml" -m"xml" + +abparseresults.html diff --git a/NowinSample/App.config b/NowinSample/App.config new file mode 100644 index 0000000..0e899e9 --- /dev/null +++ b/NowinSample/App.config @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NowinSample/NowinSample.csproj b/NowinSample/NowinSample.csproj new file mode 100644 index 0000000..b8d86e0 --- /dev/null +++ b/NowinSample/NowinSample.csproj @@ -0,0 +1,95 @@ + + + + + Debug + AnyCPU + {B93C6B61-24C3-4732-AC4D-9A42FA05BC8F} + Exe + Properties + NowinSample + NowinSample + v4.5 + 512 + ..\ + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\Microsoft.Owin.2.0.2\lib\net45\Microsoft.Owin.dll + + + ..\packages\Microsoft.Owin.Diagnostics.2.0.2\lib\net40\Microsoft.Owin.Diagnostics.dll + + + ..\packages\Microsoft.Owin.Hosting.2.0.2\lib\net45\Microsoft.Owin.Hosting.dll + + + ..\packages\Newtonsoft.Json.5.0.8\lib\net45\Newtonsoft.Json.dll + + + ..\packages\Nowin.0.11.0.0\lib\net45\Nowin.dll + + + ..\packages\Owin.1.0\lib\net40\Owin.dll + + + + + + False + ..\packages\Microsoft.AspNet.WebApi.Client.5.0.0\lib\net45\System.Net.Http.Formatting.dll + + + False + ..\packages\Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45\System.Web.Http.dll + + + ..\packages\Microsoft.AspNet.WebApi.Owin.5.0.0\lib\net45\System.Web.Http.Owin.dll + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/NowinSample/Person.cs b/NowinSample/Person.cs new file mode 100644 index 0000000..9cd7337 --- /dev/null +++ b/NowinSample/Person.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; + +namespace NowinSample +{ + public class Person + { + public Person() + { + Id = 10; + Name = "Rick"; + Entered = DateTime.Now; + } + + public int Id { get; set; } + public string Name { get; set; } + public DateTime Entered { get; set; } + } +} diff --git a/NowinSample/Program.cs b/NowinSample/Program.cs new file mode 100644 index 0000000..0abc91d --- /dev/null +++ b/NowinSample/Program.cs @@ -0,0 +1,24 @@ +using System; +using Microsoft.Owin.Hosting; + +namespace NowinSample +{ + class Program + { + static void Main(string[] args) + { + var options = new StartOptions + { + ServerFactory = "Nowin", + Port = 8080 + }; + + using (WebApp.Start(options)) + { + Console.WriteLine("Running a http server on port 8080"); + Console.ReadKey(); + } + + } + } +} diff --git a/NowinSample/Properties/AssemblyInfo.cs b/NowinSample/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..97e7c1d --- /dev/null +++ b/NowinSample/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("NowinSample")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("NowinSample")] +[assembly: AssemblyCopyright("Copyright © 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("1cc3925f-f53c-4380-a26d-77bd9725b73f")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/NowinSample/Startup.cs b/NowinSample/Startup.cs new file mode 100644 index 0000000..bdee631 --- /dev/null +++ b/NowinSample/Startup.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using Microsoft.Owin; +using System.Web.Http; +using Owin; + +namespace NowinSample +{ + public class Startup + { + public void Configuration(IAppBuilder app) + { + //app.UseErrorPage(); + //app.UseWelcomePage(); + + // Configure Web API for self-host. + HttpConfiguration config = new HttpConfiguration(); + config.MapHttpAttributeRoutes(); + config.Formatters.Remove(config.Formatters.XmlFormatter); + app.UseWebApi(config); + + + + app.Run(async (context) => // IOWinContext + { + context.Response.StatusCode = 200; + context.Response.ContentType = "text/html"; + + await context.Response.WriteAsync("Hello World. Time is: " + DateTime.Now.ToString()); + return; + + string header = "

Helios Vars

"; + await context.Response.WriteAsync(header); + + foreach (KeyValuePair keyvalue in context.Environment) + { + if (keyvalue.Value == null) + continue; + + string t = keyvalue.Key + ": " + keyvalue.Value.ToString() + "
\r\n"; + + await context.Response.WriteAsync(t); + //await Task.Delay(1000); // no output buffering - text just goes + } + + await context.Response.WriteAsync(""); + }); + + + } + + } +} diff --git a/NowinSample/TestController.cs b/NowinSample/TestController.cs new file mode 100644 index 0000000..1748f7c --- /dev/null +++ b/NowinSample/TestController.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Web; +using System.Web.Http; + +namespace NowinSample +{ + public class TestController : ApiController + { + [HttpGet] + [Route("test/HelloWorld/{name?}")] + public string HelloWorld(string name = null) + { + return "Hello cruel World, " + name + ". " + DateTime.Now; + } + + [HttpGet] + [Route("test/WorkingSet")] + public string WorkingSet() + { + return "Helios - Working set is: " + Process.GetCurrentProcess().WorkingSet.ToString("n0") + " bytes"; + } + + [HttpGet] + [Route("test/Person")] + public Person GetPerson() + { + return new Person(); + } + + + } +} \ No newline at end of file diff --git a/NowinSample/packages.config b/NowinSample/packages.config new file mode 100644 index 0000000..208aaf5 --- /dev/null +++ b/NowinSample/packages.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file