@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
TypeScript
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;