intuit / Tank

Tank is a downloadable application that can be used to load test websites
Eclipse Public License 1.0
84 stars 60 forks source link

Async Http Client #74

Open kevin-mcgoldrick opened 4 years ago

kevin-mcgoldrick commented 4 years ago

Existing State

Tank currently supports two blocking httpClients (apache httpclient 3.1 and 4.5). These httpclients make a request and wait for the response and parse the response before continuing on the the next call.

Issue

The existing state fails to produce conistent TPS, as the server endpoint changes performance. Faster RT equals higher TPS, and vise-versa. A completely non-blocking solution would not work because certain calls rely on the response data from a previous call.

Solution Stage 1

Include a Non-blocking Async http client like netty that would execute requests with a non-blocking futures form. This is a backward compatible state.

Solution Stage 2

Add an extra boolean to the request data_model, xml, gui, etc. So that requests can be marked async or not. The ultimate outcome would allow may flow events to be blocking, while beaconing/uilogger calls would be sent off and processes the responses when ever, without blocking the primary flow.

lucifercr07 commented 4 years ago

@kevin-mcgoldrick can you please share more details on it?

sojanmathew commented 3 years ago

@kevin-mcgoldrick Can you please assign to me?

rohitdumbre86 commented 3 years ago

Is this already assigned @kevin-mcgoldrick