forked from DefinitelyTyped/DefinitelyTyped
-
Notifications
You must be signed in to change notification settings - Fork 1
/
options.d.ts
459 lines (366 loc) · 11.5 KB
/
options.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
/*
* Program options.
* https://grafana.com/docs/k6/latest/using-k6/k6-options/
*/
import { CipherSuite } from "./http";
/**
* Program options.
* https://grafana.com/docs/k6/latest/using-k6/k6-options/
*/
export interface Options {
/** Maximum parallel `http.batch()` connections per VU. */
batch?: number;
/** Maximum parallel `http.batch()` host connections per VU. */
batchPerHost?: number;
/** Blacklist IP ranges from being called. */
blacklistIPs?: string[];
/** Blacklist hostnames from being called. Wildcards are supported. */
blockHostnames?: string[];
/** Discard response bodies. */
discardResponseBodies?: boolean;
/** DNS resolution behavior. https://grafana.com/docs/k6/latest/using-k6/k6-options#dns */
dns?: {
/** 0, inf, or any time duration(60s, 5m30s, 10m, 2h). */
ttl: string;
select: "first" | "random" | "roundRobin";
policy: "preferIPv4" | "preferIPv6" | "onlyIPv4" | "onlyIPv6" | "any";
};
/** Test duration. */
duration?: string;
/** Partition the test run in different segments. https://grafana.com/docs/k6/latest/using-k6/k6-options#execution-segment */
executionSegment?: string;
/** Define the sequence segment to run. https://grafana.com/docs/k6/latest/using-k6/k6-options#execution-segment */
executionSegmentSequence?: string;
/** Third party collector configuration. */
ext?: { [name: string]: CollectorOptions };
/** Cloud options */
options?: CloudOptions;
/** Static hostname mapping. */
hosts?: { [name: string]: string };
/** Log all HTTP requests and responses. */
httpDebug?: string;
/** Disable TLS verification. Insecure. */
insecureSkipTLSVerify?: boolean;
/** Iterations to execute. */
iterations?: number;
/** Persist the k6 process after test completion. */
linger?: boolean;
/** Maximum HTTP redirects to follow. */
maxRedirects?: number;
/** Minimum test iteration duration. */
minIterationDuration?: string;
/** Disable keepalive connections. */
noConnectionReuse?: boolean;
/** This disables the default behavior of resetting the cookie jar after each VU iteration. If it's enabled, saved cookies will be persisted across VU iterations.. */
noCookiesReset?: boolean;
/** Disable usage reports. */
noUsageReport?: boolean;
/** Disable cross-VU TCP connection reuse. */
noVUConnectionReuse?: boolean;
/** Start test in paused state. */
paused?: boolean;
/** Maximum requests per second across all VUs. */
rps?: number;
/** Scenario specifications. */
scenarios?: { [name: string]: Scenario };
/** Setup function timeout. */
setupTimeout?: string;
/** Test stage specifications. Program of target VU stages. */
stages?: Stage[];
/** Define stats for trend metrics. */
summaryTrendStats?: string[];
/** Which system tags to include in collected metrics. */
systemTags?: string[];
/** Tags to set test wide across all metrics. */
tags?: { [name: string]: string };
/** Teardown function timeout. */
teardownTimeout?: string;
/** Threshold specifications. Defines pass and fail conditions. */
thresholds?: { [name: string]: Threshold[] };
/** Throw error on failed HTTP request. */
throw?: boolean;
/** TLS client certificates. */
tlsAuth?: Certificate[];
/** Allowed TLS cipher suites. */
tlsCipherSuites?: CipherSuite[];
/** Allowed TLS version. Use `http.SSL_*` `http.TLS_*` constants. */
tlsVersion?: string | { min: string; max: string };
/** User agent string to include in HTTP requests. */
userAgent?: string;
/** Number of VUs to run concurrently. */
vus?: number;
/** Maximum VUs. Preallocates VUs to enable faster scaling. */
vusMax?: number;
}
/**
* Third party collector configuration.
*/
export interface CollectorOptions {
[name: string]: any;
}
/**
* Options for the cloud.
*/
export interface CloudOptions {
[name: string]: any;
}
/**
* Test stage.
*/
export interface Stage {
/** Stage duration. */
duration: string;
/** Target number of VUs. */
target: number;
}
/**
* Threshold specification.
* https://grafana.com/docs/k6/latest/using-k6/thresholds/
*/
export type Threshold = string | ObjectThreshold;
/**
* Object form threshold specification.
* https://grafana.com/docs/k6/latest/using-k6/thresholds/
*/
export interface ObjectThreshold {
/** Abort test if threshold violated. */
abortOnFail?: boolean;
/** Duration to delay evaluation. Enables collecting additional metrics. */
delayAbortEval?: string;
/** Threshold expression. */
threshold: string;
}
/**
* TLS client certificate.
*/
export interface Certificate {
/** PEM encoded certificate. */
cert: string;
/** Domains certificate is valid for. */
domains?: string[];
/** PEM encoded certificate key. */
key: string;
/** PEM passphrase. */
password?: string;
}
export type ExecutorOptions =
| "shared-iterations"
| "per-vu-iterations"
| "constant-vus"
| "ramping-vus"
| "constant-arrival-rate"
| "ramping-arrival-rate"
| "externally-controlled";
/**
* BaseScenario.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/
*/
export abstract class BaseScenario {
/**
* Executor type. Options available:
* - `shared-iterations`
* - `per-vu-iterations`
* - `constant-vus`
* - `ramping-vus`
* - `constant-arrival-rate`
* - `ramping-arrival-rate`
* - `externally-controlled`
*/
executor: ExecutorOptions;
/**
* Time offset since the start of the test, at which point this scenario should begin execution.
*
* Default value is 0s.
*/
startTime?: string;
/**
* Time to wait for iterations to finish executing before stopping them forcefully.
* See https://grafana.com/docs/k6/latest/using-k6/scenarios#graceful-stop-and-ramp-down/
*
* Default value is 30s
*/
gracefulStop?: string;
/**
* Name of exported JS function to execute.
*
* The default value is "default".
*/
exec?: string;
/** Environment variables specific to this scenario. */
env?: { [name: string]: string };
/** Tags specific to this scenario. */
tags?: { [name: string]: string };
/** Additional options for each scenario */
options?: ScenarioOptions;
}
/**
* A fixed amount of iterations are shared between a number of VUs.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/shared-iterations/
*/
export interface SharedIterationsScenario extends BaseScenario {
executor: "shared-iterations";
/**
* Number of VUs to run concurrently.
*
* The default value is 1.
*/
vus?: number;
/**
* Number of iterations to execute across all VUs.
*
* The default value is 1.
*/
iterations?: number;
/**
* Maximum scenario duration before it's forcibly stopped (excluding gracefulStop).
*
* The default value is 10m.
*/
maxDuration?: string;
}
/**
* Each VU executes an exact number of iterations.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/per-vu-iterations/
*/
export interface PerVUIterationsScenario extends BaseScenario {
executor: "per-vu-iterations";
/**
* Number of VUs to run concurrently.
*
* The default value is 1.
*/
vus?: number;
/**
* Number of iterations to execute across per VU.
*
* The default value is 1.
*/
iterations?: number;
/**
* Maximum scenario duration before it's forcibly stopped (excluding gracefulStop).
*
* The default value is 10m.
*/
maxDuration?: string;
}
/**
* A fixed number of VUs execute as many iterations as possible for a specified amount of time.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/constant-vus/
*/
export interface ConstantVUsScenario extends BaseScenario {
executor: "constant-vus";
/**
* Number of VUs to run concurrently.
*
* The default value is 1.
*/
vus?: number;
/**
* Total scenario duration (excluding `gracefulStop`)
*/
duration: string;
}
/**
* A variable number of VUs execute as many iterations as possible for a specified amount of time.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/ramping-vus/
*/
export interface RampingVUsScenario extends BaseScenario {
executor: "ramping-vus";
/** Array of objects that specify the number of VUs to ramp up or down to. */
stages: Stage[];
/**
* Number of VUs to run at test start.
*
* The default value is 1.
*/
startVUs?: number;
/**
* Time to wait for an already started iteration to finish before stopping it during a ramp down.
*
* The default value is 30s.
*/
gracefulRampDown?: string;
}
/**
* A fixed number of iterations are executed in a specified period of time.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/constant-arrival-rate/
*/
export interface ConstantArrivalRateScenario extends BaseScenario {
executor: "constant-arrival-rate";
/** Total scenario duration (excluding `gracefulStop`) */
duration: string;
/** Number of iterations to execute each `timeUnit` period. */
rate: number;
/**
* Period of time to apply the `rate` value.
*
* The default value is 1s.
*/
timeUnit?: string;
/** Number of VUs to pre-allocate before test start in order to preserve runtime resources. */
preAllocatedVUs: number;
/**
* Maximum number of VUs to allow during the test run.
*
* The default value is the value of the `preAllocatedVUs` option.
*/
maxVUs?: number;
}
/**
* A variable number of iterations are executed in a specified period of time.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/ramping-arrival-rate/
*/
export interface RampingArrivalRateScenario extends BaseScenario {
executor: "ramping-arrival-rate";
/** Maximum number of VUs to allow during the test run. */
maxVUs?: number;
/** Array of objects that specify the number of iterations to ramp up or down to. */
stages: Stage[];
/** Number of iterations to execute each `timeUnit` period at test start. */
startRate?: number;
/**
* Period of time to apply the `startRate` the `stages` target value..
*
* The default value is 1s.
*/
timeUnit?: string;
/** Number of VUs to pre-allocate before test start in order to preserve runtime resources. */
preAllocatedVUs: number;
}
/**
* Control and scale execution at runtime via k6's REST API or the CLI.
*
* https://grafana.com/docs/k6/latest/using-k6/scenarios/executors/externally-controlled/
*/
export interface ExternallyControlledScenario extends BaseScenario {
executor: "externally-controlled";
/**
* Number of VUs to run concurrently.
*
* The default value is 1.
*/
vus?: number;
/** Total scenario duration (excluding `gracefulStop`) */
duration: string;
/** Maximum number of VUs to allow during the test run. */
maxVUs?: number;
}
export type Scenario =
| SharedIterationsScenario
| PerVUIterationsScenario
| ConstantVUsScenario
| RampingVUsScenario
| ConstantArrivalRateScenario
| RampingArrivalRateScenario
| ExternallyControlledScenario;
export interface ScenarioOptions {
/** Browser specific options */
browser?: any;
}