UNPKG

@gatling.io/core

Version:

Gatling JS is a JavaScript/TypeScript interface for the [Gatling load testing tool](https://gatling.io/).

190 lines (189 loc) 7.21 kB
import { Duration } from "./utils/duration"; import { Wrapper } from "./common"; import JvmOpenInjectionStep = io.gatling.javaapi.core.OpenInjectionStep; import JvmOpenInjectionStepRamp = io.gatling.javaapi.core.OpenInjectionStep$Ramp; import JvmOpenInjectionStepStressPeak = io.gatling.javaapi.core.OpenInjectionStep$StressPeak; import JvmOpenInjectionStepConstantRate = io.gatling.javaapi.core.OpenInjectionStep$ConstantRate; import JvmOpenInjectionStepRampRate = io.gatling.javaapi.core.OpenInjectionStep$RampRate; import JvmOpenInjectionStepRampRateDuring = io.gatling.javaapi.core.RampRate$During; import JvmOpenInjectionStepStairs = io.gatling.javaapi.core.OpenInjectionStep$Stairs; import JvmOpenInjectionStepStairsTimes = io.gatling.javaapi.core.Stairs$Times; /** * An injection profile step for using an open workload model where you control the arrival rate of * new users. In 99.99% of the cases, the right choice, over closed workload model. * * <p>Immutable, so all methods return a new occurrence and leave the original unmodified. */ export interface OpenInjectionStep extends Wrapper<JvmOpenInjectionStep> { } export interface ConstantRateOpenInjectionStep extends OpenInjectionStep { randomized(): OpenInjectionStep; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject a stock of users distributed * evenly on a given period of time. Strictly equivalent to {@link ConstantRateOpenInjectionStep} */ export interface OpenInjectionStepRamp extends Wrapper<JvmOpenInjectionStepRamp> { /** * Define the duration of the ramp * * @param duration - the ramp duration * @returns a new OpenInjectionStep */ during(duration: Duration): OpenInjectionStep; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject a stock of users distributed * with a <a hreh="https://en.wikipedia.org/wiki/Heaviside_step_function">Heaviside</a> * distribution on a given period of time. Strictly equivalent to {@link OpenInjectionStepConstantRate} */ export interface OpenInjectionStepStressPeak extends Wrapper<JvmOpenInjectionStepStressPeak> { /** * Define the duration of the Heaviside distribution * * @param duration - the duration * @returns a new OpenInjectionStep */ during(duration: Duration): OpenInjectionStep; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users at a constant rate for a * given duration. */ export interface OpenInjectionStepConstantRate extends Wrapper<JvmOpenInjectionStepConstantRate> { /** * Define the duration of the step * * @param duration - the duration * @returns a new OpenInjectionStep */ during(duration: Duration): ConstantRateOpenInjectionStep; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users at a rate that will * increase linearly for a given duration. */ export interface OpenInjectionStepRampRate extends Wrapper<JvmOpenInjectionStepRampRate> { /** * Define the target rate at the end of the ramp * * @param to - the target rate * @returns the next DSL step */ to(to: number): OpenInjectionStepRampRateDuring; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users at a rate that will * increase linearly for a given duration. */ export interface OpenInjectionStepRampRateDuring extends Wrapper<JvmOpenInjectionStepRampRateDuring> { /** * Define the duration of the ramp * * @param duration - the duration * @returns a new OpenInjectionStep */ during(duration: Duration): RampRateOpenInjectionStep; } /** * A special {@link OpenInjectionStep} that supports "randomized". */ export interface RampRateOpenInjectionStep extends OpenInjectionStep { randomized(): OpenInjectionStep; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users with stairs rates. */ export interface OpenInjectionStepStairs extends Wrapper<JvmOpenInjectionStepStairs> { /** * Define the number of levels * * @param levels - the number of levels in the stairs * @returns the next DSL step */ times(levels: number): OpenInjectionStepStairsTimes; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users with stairs rates. */ export interface OpenInjectionStepStairsTimes extends Wrapper<JvmOpenInjectionStepStairsTimes> { /** * Define the duration of each level * * @param duration - the duration * @returns the next DSL step */ eachLevelLasting(duration: Duration): OpenInjectionStepStairsComposite; } /** * A DSL for creating a {@link OpenInjectionStep} that will inject users with stairs rates. */ export interface OpenInjectionStepStairsComposite extends OpenInjectionStep { /** * Define the initial number of users per second rate (optional) * * @param startingRate - the initial rate * @returns a usable {@link OpenInjectionStep} */ startingFrom(startingRate: number): OpenInjectionStepStairsComposite; /** * Define ramps separating levels (optional) * * @param duration - the duration * @returns a usable {@link OpenInjectionStep} */ separatedByRampsLasting(duration: Duration): OpenInjectionStepStairsComposite; } /** * Bootstrap a new open workload rampUsers injection profile, see {@link OpenInjectionStepRamp} * * @param users - the total number of users to inject * @returns the next DSL step */ export declare const rampUsers: (users: number) => OpenInjectionStepRamp; /** * Bootstrap a new open workload stress peak injection profile, see {@link * OpenInjectionStepStressPeak} * * @param users - the total number of users to inject * @returns the next DSL step */ export declare const stressPeakUsers: (users: number) => OpenInjectionStepStressPeak; /** * Inject a bunch of users at the same time. * * @param users - the number of users to inject * @returns a new OpenInjectionStep */ export declare const atOnceUsers: (users: number) => OpenInjectionStep; /** * Bootstrap a new open workload constantUsersPerSec injection profile, see {@link * OpenInjectionStepConstantRate} * * @param rate - the users per second rate * @returns the next DSL step */ export declare const constantUsersPerSec: (rate: number) => OpenInjectionStepConstantRate; /** * Bootstrap a new open workload rampUsersPerSec injection profile, see {@link * OpenInjectionStepRampRate} * * @param rate - the users per second start rate * @returns the next DSL step */ export declare const rampUsersPerSec: (rate: number) => OpenInjectionStepRampRate; /** * Don't inject any new user for a given duration * * @param duration - the duration * @returns a new OpenInjectionStep */ export declare const nothingFor: (duration: Duration) => OpenInjectionStep; /** * Bootstrap a new open workload incrementUsersPerSec injection profile, see {@link * OpenInjectionStepStairs} * * @param rateIncrement - the difference of users per second rate between levels of the stairs * @returns the next DSL step */ export declare const incrementUsersPerSec: (rateIncrement: number) => OpenInjectionStepStairs;