lstsim

lst - Load and Stress Test Toolset

lst 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

lst demo

Example Dashboards.


Content

  1. Use Cases
  2. Benefits
  3. Features
  4. Quick Overview
  5. Inventory and Scenarios API
  6. Deployment Options
  7. Use Case Examples
  8. lst CLI Guide
  9. Metrics
  10. Installation and Update
  11. lstd and lstsim Configuration
  12. Automation API
  13. 3GPP Standards
 _     _   
| |___| |_ 
| / __| __|
| \__ \ |_ 
|_|___/\__|
 _                    _    ___     ____  _                       ____  _                 _       _             
| |    ___   __ _  __| |  ( _ )   / ___|| |_ _ __ ___  ___ ___  / ___|(_)_ __ ___  _   _| | __ _| |_ ___  _ __ 
| |   / _ \ / _` |/ _` |  / _ \/\ \___ \| __| '__/ _ \/ __/ __| \___ \| | '_ ` _ \| | | | |/ _` | __/ _ \| '__|
| |__| (_) | (_| | (_| | | (_>  <  ___) | |_| | |  __/\__ \__ \  ___) | | | | | | | |_| | | (_| | || (_) | |   
|_____\___/ \__,_|\__,_|  \___/\/ |____/ \__|_|  \___||___/___/ |____/|_|_| |_| |_|\__,_|_|\__,_|\__\___/|_|   
                                                                                                               


Use Cases

Benefits

Features

Quick Overview

The lst consists of several components:

┌─────────────────────────────────────────────────────┐
│                                                     │
│              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:

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:
...

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).

3GPP Standards

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.