Keycloak Performance Testsuite - Stress Testing
Requirements
- Bash
bc
: Arbitrary precision calculator.
Stress Test
The performance testsuite contains a stress-testing script: stress-test.sh
.
The stress test is implemented as a loop of individual performance test runs.
The script supports two algorithms:
- incremental (default)
- bisection
The incremental algorithm loop starts from a base load and then increases the load by a specified amount in each iteration.
The loop ends when a performance test fails, or when the maximum number of iterations is reached.
The bisection algorithm loop has a lower and an upper bound, and a resolution parameter.
In each iteration the middle of the interval is used as a value for the performance test load.
Depending on whether the test passes or fails the lower or upper half of the interval is used for the next iteration.
The loop ends if size of the interval is lower than the specified resolution, or when the maximum number of iterations is reached.
Usage
export PARAMETER1=value1
export PARAMETER2=value2
...
stress-test.sh [-DadditionalTestsuiteParam1=value1 -DadditionalTestsuiteParam2=value2 ...]
Parameters
Script Execution Parameters
Variable |
Description |
Default Value |
MVN |
The base Maven command to be used. |
mvn |
KEYCLOAK_PROJECT_HOME |
Root directory of the Keycloak project. |
Root directory relative to the location of the stress-test.sh script. |
DRY_RUN |
Don't execute performance tests. Only print out execution information for each iteration. |
false |
Performance Testuite Parameters
Variable |
Description |
Default Value |
DATASET |
Dataset to be used. |
1r_10c_100u |
WARMUP_PERIOD |
Value of warmUpPeriod testsuite parameter. |
120 seconds |
RAMPUP_PERIOD |
Value of rampUpPeriod testsuite parameter. |
60 seconds |
MEASUREMENT_PERIOD |
Value of measurementPeriod testsuite parameter. |
120 seconds |
FILTER_RESULTS |
Value of filterResults testsuite parameter. Should be enabled. |
true |
@ |
Any parameters provided to the stress-test.sh script will be passed to the performance testsuite. Optional. |
|
Stress Test Parameters
Variable |
Description |
Default Value |
STRESS_TEST_ALGORITHM |
Stress test loop algorithm: incremental or bisection . |
incremental |
STRESS_TEST_MAX_ITERATIONS |
Maximum number of stress test loop iterations. |
10 iterations |
STRESS_TEST_PROVISIONING |
Should the system be re-provisioned in each iteration? If enabled the dataset DB dump is re-imported and the warmup is run in each iteration. |
false |
STRESS_TEST_PROVISIONING_GENERATE_DATASET |
Should the dataset be generated, instead of imported from DB dump? |
false |
STRESS_TEST_PROVISIONING_PARAMETERS |
Additional parameters for the provisioning command. Optional. |
|
Incremental Algorithm
Variable |
Description |
Default Value |
STRESS_TEST_UPS_FIRST |
Value of usersPerSec parameter in the first iteration. |
1.000 users per second |
STRESS_TEST_UPS_INCREMENT |
Increment of usersPerSec parameter for each subsequent iteration. |
1.000 users per second |
Bisection Algorithm
Variable |
Description |
Default Value |
STRESS_TEST_UPS_LOWER_BOUND |
Lower bound of usersPerSec parameter. |
0.000 users per second |
STRESS_TEST_UPS_UPPER_BOUND |
Upper bound of usersPerSec parameter. |
10.000 users per second |
STRESS_TEST_UPS_RESOLUTION |
Required resolution of the bisection algorithm. |
1.000 users per second |