Timeouts
On this page, you will learn about possible timeouts in NBomber.
Scenario completion timeout​
When NBomber finishes load tests, it waits for all running scenarios to complete their tasks. By default, Scenario completion timeout is 1 minute. This setting is globally applied for all scenarios.
NBomberRunner
.RegisterScenarios(scenario)
.WithScenarioCompletionTimeout(TimeSpan.FromMinutes(5))
.Run();
You can also use JSON configuration to override this setting.
{
"GlobalSettings": {
...
},
"ScenarioCompletionTimeout": "00:05:00"
}
You can find the complete example by this link.
Operation cancellation after timeout​
There might be situations where you need to cancel some operation after specified timeout. For this, you can use standard .NET CancellationTokenSource.
Example 1:
var scenario = Scenario.Create("scenario_with_timeout", async context =>
{
using var timeout = new CancellationTokenSource();
timeout.CancelAfter(600); // the operation will be canceled after 600 ms
// here, we pass CancellationToken via timeout.Token
// and because Task.Delay(1000) is bigger than 600 ms
// the operation will be cancelled
await Task.Delay(1000, timeout.Token);
return Response.Ok(statusCode: "200", sizeBytes: 1000);
})
.WithoutWarmUp()
.WithLoadSimulations(
Simulation.KeepConstant(copies: 50, during: TimeSpan.FromSeconds(30))
);
You can find the complete example by this link.
The same approach can be applied to any other asynchronous operation.
Example 2:
var scenario = Scenario.Create("http_scenario", async context =>
{
using var timeout = new CancellationTokenSource();
timeout.CancelAfter(50); // the operation will be canceled after 50 ms
var request =
Http.CreateRequest("GET", "https://nbomber.com")
.WithHeader("Content-Type", "application/json");
//.WithBody(new StringContent("{ some JSON }", Encoding.UTF8, "application/json"));
var clientArgs = HttpClientArgs.Create(timeout.Token);
var response = await Http.Send(httpClient, clientArgs, request);
return response;
})
You can find the complete example by this link.