Benchmark WebApi Core

Mbyllur Postuar 5 vite mё parё Paguhet në dorëzim
Mbyllur Paguhet në dorëzim

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

.NET OAuth

ID Projekti: #17717105

Rreth projektit

Projekti në distancë Aktiv 5 vite mё parё