Benchmark WebApi Core
Бюджет $30-250 USD
Job Description:
Web Api Benchmark utility
Create a DotNet Core 2.1 Console Application to benchmark the execution speed of Web Api Core 2.1 authentication and invocation.
Inside a VM I have an OAuth2 server running. You need to create a set of usernames and password and arbitrary JWT Claims on this server (a very quick task that takes up to maximum 15 minutes). This server runs local and may NOT be copied to outside the VM, as it is proprietary. You should thus develop inside this VM to which I will give you access. PLEASE ACKNOWLEDGE THAT YOU READ AND UNDERSTOOD THIS SPECIFIC REQUIREMENT!
Create a simple Web Api with 1 GET method which returns a static string (specified in [login to view URL]). It also should have 1 POST method, having in the BODY a Geometry (4326) parameter, which inside it contains a set of Lat/Long coordinates. I can supply you some sourcecode to show how to populate and use this datatype.
The POST method should return a static string, specified in [login to view URL], composed with the Lat/Long data.
First you login to the OAuth2 server, using the usernames and passwords you established on that server. It will return a long living token. Then you logon to OAuth2 server again, using the long living token, which returns a short living token. You use this short living token to authenticate to the test Web Api that you will create.
It should do this measuring in a multi-threaded way. All configuration data, like authentication keys, OAuth2 configuration properties, quantity of threads, time limit for each thread execution, should be specified and gathered from appsettings.json. Including the WebApi URIs should be specified in [login to view URL], in a list of addresses.
Measure and display the execution speed, for each of these steps, according to the quantity of worker threads specified in configuration, of the following:
1 - Web Api GET calls
1a - No authentication (No OAuth2 relied server in the pipeline)
1b - No authentication (OAuth2 relied server in the pipeline; no authentication in the Controller)
1c - No authentication (OAuth2 relied server in the pipeline; no authentication in the Method)
1d - Authentication - Token without Claims; authentication in Controller
1e - Authentication - Token with 1 Claim; authentication in Controller
1f - Authentication - Token with 2 Claims; authentication in Controller
1g - Authentication - Token with 3 Claims; authentication in Controller
1h - Authentication - Token with 10 Claims; authentication in Controller
1i - Authentication - Token without Claims; authentication in Method
1j - Authentication - Token with 1 Claim; authentication in Method
1k - Authentication - Token with 2 Claims; authentication in Method
1l - Authentication - Token with 3 Claims; authentication in Method
1m - Authentication - Token with 10 Claims; authentication in Method
2 - Web Api POST calls (without BODY parameter)
2a - No authentication (No OAuth2 relied server in the pipeline)
2b - No authentication (OAuth2 relied server in the pipeline; no authentication in the Controller)
2c - No authentication (OAuth2 relied server in the pipeline; no authentication in the Method)
2d - Authentication - Token without Claims; authentication in Controller
2e - Authentication - Token with 1 Claim; authentication in Controller
2f - Authentication - Token with 2 Claims; authentication in Controller
2g - Authentication - Token with 3 Claims; authentication in Controller
2h - Authentication - Token with 10 Claims; authentication in Controller
2i - Authentication - Token without Claims; authentication in Method
2j - Authentication - Token with 1 Claim; authentication in Method
2k - Authentication - Token with 2 Claims; authentication in Method
2l - Authentication - Token with 3 Claims; authentication in Method
2m - Authentication - Token with 10 Claims; authentication in Method
3 - Web Api POST calls (with BODY parameter: Geometry of type 4326)
3a - No authentication (No OAuth2 relied server in the pipeline)
3b - No authentication (OAuth2 relied server in the pipeline; no authentication in the Controller)
3c - No authentication (OAuth2 relied server in the pipeline; no authentication in the Method)
3d - Authentication - Token without Claims; authentication in Controller
3e - Authentication - Token with 1 Claim; authentication in Controller
3f - Authentication - Token with 2 Claims; authentication in Controller
3g - Authentication - Token with 3 Claims; authentication in Controller
3h - Authentication - Token with 10 Claims; authentication in Controller
3i - Authentication - Token without Claims; authentication in Method
3j - Authentication - Token with 1 Claim; authentication in Method
3k - Authentication - Token with 2 Claims; authentication in Method
3l - Authentication - Token with 3 Claims; authentication in Method
3m - Authentication - Token with 10 Claims; authentication in Method
Run each of these steps sequentially, for the time specified in [login to view URL], and with the quantity of Theads specified in appsettings.json.
And for the quantity of elements to be executed within each step, specified in appsettings.json.
Measure the time of execution for each step, as well as the quantity of executed calls, and show this results data on the screen.
The purpose of this Utility is to determine how much performance impact the OAuth2 Token Authorization has, and also how much performance impact the OAuth2 Token authentication takes on Web Api Core 2.1 Controllers. Also, to measure how performant Web Api Core 2.1 is in different scenarios, including non-aurhenticated and authenticated.
DELIVERABLE: Visual Studio 2017 Solution with 2 projects in DotNet Core 2.1, being one with a test Web Api and one with the benchmark utility.
BUDGET: US$ 30 maximum.
Please type in beluga in your response to show that you read all these requirements.
Thanks for bidding.
Regards