lst
- Load and Stress Test Toolsetlst
is a scalable, configurable Load and Stress Test Simulator mainly designed for User Data Repository (UDR). It offers high flexibility and adaptability to various deployment options, any data model, any traffic model definitions and multitude of test scenarios. Its key design architecture, beside configurablity, is centraly managed architecture with horizontally scalable simulator instances. The toolset itself collects wide variety of metrics to evaluate the performance of the underlying UDR.
IMPORTANT: The project has not yet reached a stable state and is in active evolution. Therefore the APIs, commands, interfaces and configurations are still subject to change as new functionality and re-work activities are under way. Upon reaching version 1.0.0 the interfaces will be stabilized.
Latest release: https://github.com/marcheg/lstsim/releases/latest
Example Dashboards.
lst
CLI Guidelstd
and lstsim
Configuration _ _
| |___| |_
| / __| __|
| \__ \ |_
|_|___/\__|
_ _ ___ ____ _ ____ _ _ _
| | ___ __ _ __| | ( _ ) / ___|| |_ _ __ ___ ___ ___ / ___|(_)_ __ ___ _ _| | __ _| |_ ___ _ __
| | / _ \ / _` |/ _` | / _ \/\ \___ \| __| '__/ _ \/ __/ __| \___ \| | '_ ` _ \| | | | |/ _` | __/ _ \| '__|
| |__| (_) | (_| | (_| | | (_> < ___) | |_| | | __/\__ \__ \ ___) | | | | | | | |_| | | (_| | || (_) | |
|_____\___/ \__,_|\__,_| \___/\/ |____/ \__|_| \___||___/___/ |____/|_|_| |_| |_|\__,_|_|\__,_|\__\___/|_|
The lst
consists of several components:
lst
- command line utility used to manage, control and observe simulation scenario. This is the main interface to interact with the lstd
. This utility is colocated with the lstd
and it communicates with the daemon over a dedicated API.lstd
- daemon process running on a dedicated server. It offers an API which is used to start, change, stop simulations as well as monitoring metrics and status of the simulation. lstd
manages all lstsim
instances directly as a central unit. lstd
by itself does not generate any traffic.lstsim
- is a specific instance of a simulator that is controlled by lstd
and runs a configured simulation scenario against destination. lstsim
instances can be deployed on the same server as lstd
, subject to sufficient CPU capacity to perform the required scenario. In addition, lstsim
can be deployed on multiple servers to scale the load or to simulate different traffic on different sites.┌─────────────────────────────────────────────────────┐
│ │
│ lst - command line utility │
│ │
└───────────────────────────┬─────────────────────────┘
│
┌───────────────────────────▼─────────────────────────┐
│ │
│ lstd - lst daemon managing simulations │
│ │
└─────────────────────────────────────────────────────┘
▲ ▲ ▲
│ │ │
┌───────┴──────┐ ┌────────┴───────┐ ┌───────┴─────┐
│ │ │ │ │ │
│ lstsim │ │ lstsim │ │ lstsim │
│ │ │ │ │ │
└──────────────┘ └────────────────┘ └─────────────┘
The tool allows great flexibility to define various traffic models and high configurability in the simulated scenario options. The configuration is based on two main configuration files:
Inventory
configuration defining the environment. It defines the target destinations (e.g. UDR in testlab), data ranges (e.g. provisioned subscriptions) and traffic models (e.g. selection of various models)Scenarios
configuration defining specific traffic simulations. Simulations are build on the inventory
configuration. The same traffic model can be used in various scenarios.Both files work together to simulate a wide variety of use cases. These files are usually prepared upfront for a specific application use cases. lstd
is live-watching eventual changes in these files in order to pick up any changes immediately without any restart. Additionally, the configuration can be completely exchanged (by providing new inventory and scenario configurations).
Inventory
# This file represents inventory for a test environment
# it will be used as a source for a possible test scenario
# it contains 3 sections - destinations, data ranges and traffic models
# Destinations
ldapDestinations:
# Data Ranges
dataRanges:
# Traffic models
trafficModels:
Scenarios
# This file represents test scenarios that can be started as simulations
scenarioName1:
interface: ldap
ldapCredentials:
bindDN: cn=user
# definition of the load parameters
load:
# type of simulation: traffic (continuous trafic)
simulation: traffic
# start rate per lstsim instance
defaultRate: 1000
policy:
# how the data range is shared/split across lstsims; shared, split or once
dataRangePolicy: shared
# failover policy in case of connection error
failover:
# maximum retries before failing over - 0 => no failover
maxRetries: 0
# delay between retry/rebind in seconds
retryDelay: 30
# amount of parallel connections per simulators (more connections => more load)
connections: 100
trafficModel: trafficModelRef
dataRange: dataRangeSetRef
# specify which simulators use which destinations
# key is tag name, value is destination group
simulators:
- tag: ldap
destinationGroup: all
scenarioName2:
...
shared
or split
across simulators or even whether is used only once
(usefull for pre-provisioning or cleaning up test data sets/supscriptions)lstsim
instance (to some extend this drives also the parallelism of simulated traffic)inventory
definition where the traffic model to be used is pre-definedinventory
definition where the data range set to be used is pre-definedlstsim
and destination group. Simulators of specific tags will be connected with specific destination groups. This configurability provides flexibility to connect specific simulators to e.g. dedicated sites and generate local (site-specific) load.Single scenarios
file can contain any number of prepared scenarios which can be selected to be run. The rate (requests per second) can be modified at scenario start and then later increased, decreased or changed online during the simulation.
The lst
collects a wide range of metrics in 15 second intervals to evaluate the performance of the UDR during various load scenarios. Those metrics can be monitored in real-time and exported to a timeseries database and visualized in charts (e.g. prometheus with grafana front-end).
The following 3GPP Technical Standards are applicable:
Note: currently only
Ud
interface is supported. 5G SBI interface is foreseen to be supported in near future too.