@loadmill/executer 0.1.163 → 0.1.164
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-assertion/index.js +53 -15
- package/dist/ai-assertion/index.js.map +1 -1
- package/dist/ai-assertion/prompts.js +2 -2
- package/dist/ai-assertion/prompts.js.map +1 -1
- package/dist/asserter.js +47 -9
- package/dist/asserter.js.map +1 -1
- package/dist/block-request.d.ts +1 -1
- package/dist/block-request.js +22 -12
- package/dist/block-request.js.map +1 -1
- package/dist/cookies.d.ts +1 -1
- package/dist/cookies.js +8 -6
- package/dist/cookies.js.map +1 -1
- package/dist/errors.js +16 -2
- package/dist/errors.js.map +1 -1
- package/dist/extraction-combiner.js +43 -5
- package/dist/extraction-combiner.js.map +1 -1
- package/dist/failures.js +13 -3
- package/dist/failures.js.map +1 -1
- package/dist/grpc.js +72 -15
- package/dist/grpc.js.map +1 -1
- package/dist/iteration-stats.js +7 -5
- package/dist/iteration-stats.js.map +1 -1
- package/dist/mill-version.js +1 -1
- package/dist/mill-version.js.map +1 -1
- package/dist/parameter-pools.js +44 -6
- package/dist/parameter-pools.js.map +1 -1
- package/dist/performance.js +4 -2
- package/dist/performance.js.map +1 -1
- package/dist/post-script/post-script-executor.js +25 -7
- package/dist/post-script/post-script-executor.js.map +1 -1
- package/dist/post-sequence.js +55 -17
- package/dist/post-sequence.js.map +1 -1
- package/dist/redact-data.js +11 -9
- package/dist/redact-data.js.map +1 -1
- package/dist/request-sequence-result.js +12 -2
- package/dist/request-sequence-result.js.map +1 -1
- package/dist/res-keeper.d.ts +1 -1
- package/dist/res-keeper.js +21 -3
- package/dist/res-keeper.js.map +1 -1
- package/dist/sampler.js +75 -13
- package/dist/sampler.js.map +1 -1
- package/dist/sequence.d.ts +1 -1
- package/dist/sequence.js +203 -130
- package/dist/sequence.js.map +1 -1
- package/dist/single-runner.js +81 -11
- package/dist/single-runner.js.map +1 -1
- package/dist/step-handlers/code-step-handler.js +41 -6
- package/dist/step-handlers/code-step-handler.js.map +1 -1
- package/dist/step-handlers/extract-step-handler.js +41 -6
- package/dist/step-handlers/extract-step-handler.js.map +1 -1
- package/dist/step-handlers/playwright/constants.js +5 -3
- package/dist/step-handlers/playwright/constants.js.map +1 -1
- package/dist/step-handlers/playwright/files-manager.js +34 -13
- package/dist/step-handlers/playwright/files-manager.js.map +1 -1
- package/dist/step-handlers/playwright/index.js +44 -9
- package/dist/step-handlers/playwright/index.js.map +1 -1
- package/dist/step-handlers/playwright/transformer.js +8 -8
- package/dist/step-handlers/playwright/transformer.js.map +1 -1
- package/dist/step-handlers/playwright-step-handler.js +49 -11
- package/dist/step-handlers/playwright-step-handler.js.map +1 -1
- package/dist/step-handlers/request-step-handler.js +41 -6
- package/dist/step-handlers/request-step-handler.js.map +1 -1
- package/dist/step-handlers/wait-step-handler.js +46 -11
- package/dist/step-handlers/wait-step-handler.js.map +1 -1
- package/dist/step-handlers/web-socket-step-handler.js +75 -18
- package/dist/step-handlers/web-socket-step-handler.js.map +1 -1
- package/dist/test-run-event-emitter.js +4 -2
- package/dist/test-run-event-emitter.js.map +1 -1
- package/dist/utils.js +20 -2
- package/dist/utils.js.map +1 -1
- package/dist/ws.js +58 -20
- package/dist/ws.js.map +1 -1
- package/package.json +3 -3
package/dist/sequence.js
CHANGED
|
@@ -1,31 +1,104 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
33
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
34
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
35
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
36
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
37
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
38
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
42
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
43
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
44
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
45
|
+
function step(op) {
|
|
46
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
47
|
+
while (_) try {
|
|
48
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
49
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
50
|
+
switch (op[0]) {
|
|
51
|
+
case 0: case 1: t = op; break;
|
|
52
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
53
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
54
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
55
|
+
default:
|
|
56
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
57
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
58
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
59
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
60
|
+
if (t[2]) _.ops.pop();
|
|
61
|
+
_.trys.pop(); continue;
|
|
62
|
+
}
|
|
63
|
+
op = body.call(thisArg, _);
|
|
64
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
65
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
69
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
70
|
+
to[j] = from[i];
|
|
71
|
+
return to;
|
|
72
|
+
};
|
|
73
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
74
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
75
|
+
};
|
|
2
76
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
77
|
exports.sequence = exports.reqIdParamName = void 0;
|
|
4
|
-
var
|
|
5
|
-
var urijs_1 = tslib_1.__importDefault(require("urijs"));
|
|
78
|
+
var urijs_1 = __importDefault(require("urijs"));
|
|
6
79
|
var HTTPSAgent = require('agentkeepalive').HttpsAgent;
|
|
7
80
|
var HTTPAgent = require('agentkeepalive');
|
|
8
|
-
var randomstring_1 =
|
|
9
|
-
var isEmpty_1 =
|
|
10
|
-
var flatMap_1 =
|
|
11
|
-
var clamp_1 =
|
|
12
|
-
var find_1 =
|
|
13
|
-
var map_1 =
|
|
14
|
-
var filter_1 =
|
|
15
|
-
var cloneDeep_1 =
|
|
16
|
-
var isFunction_1 =
|
|
81
|
+
var randomstring_1 = __importDefault(require("randomstring"));
|
|
82
|
+
var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
|
83
|
+
var flatMap_1 = __importDefault(require("lodash/flatMap"));
|
|
84
|
+
var clamp_1 = __importDefault(require("lodash/clamp"));
|
|
85
|
+
var find_1 = __importDefault(require("lodash/find"));
|
|
86
|
+
var map_1 = __importDefault(require("lodash/map"));
|
|
87
|
+
var filter_1 = __importDefault(require("lodash/filter"));
|
|
88
|
+
var cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
|
|
89
|
+
var isFunction_1 = __importDefault(require("lodash/isFunction"));
|
|
17
90
|
var asserter_1 = require("./asserter");
|
|
18
91
|
var failures_1 = require("./failures");
|
|
19
92
|
var request_stats_1 = require("./request-stats");
|
|
20
93
|
var mill_version_1 = require("./mill-version");
|
|
21
94
|
var extraction_combiner_1 = require("./extraction-combiner");
|
|
22
95
|
var post_script_executor_1 = require("./post-script/post-script-executor");
|
|
23
|
-
var log_1 =
|
|
24
|
-
var envUtils =
|
|
25
|
-
var mathUtils =
|
|
26
|
-
var uriUtils =
|
|
27
|
-
var promiseUtils =
|
|
28
|
-
var manipulationUtils =
|
|
96
|
+
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
97
|
+
var envUtils = __importStar(require("@loadmill/universal/dist/env-utils"));
|
|
98
|
+
var mathUtils = __importStar(require("@loadmill/universal/dist/math-utils"));
|
|
99
|
+
var uriUtils = __importStar(require("@loadmill/universal/dist/uri-utils"));
|
|
100
|
+
var promiseUtils = __importStar(require("@loadmill/universal/dist/promise-utils"));
|
|
101
|
+
var manipulationUtils = __importStar(require("@loadmill/universal/dist/manipulation-utils"));
|
|
29
102
|
var errors_1 = require("@loadmill/universal/dist/errors");
|
|
30
103
|
var array_utils_1 = require("@loadmill/universal/dist/array-utils");
|
|
31
104
|
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
@@ -67,8 +140,8 @@ exports.sequence = {
|
|
|
67
140
|
};
|
|
68
141
|
var SequenceExecutor = /** @class */ (function () {
|
|
69
142
|
function SequenceExecutor(httpAgent, parameters, domainsWhiteList, _a, protoFileRootPath) {
|
|
70
|
-
var increaseResSize = _a.increaseResSize, sequentialParameterPools = _a.sequentialParameterPools, sensitiveData = _a.sensitiveData, sensitiveKeys = _a.sensitiveKeys, executionBlockers = _a.executionBlockers, metricsKeys = _a.metricsKeys, xmlDecode = _a.xmlDecode, apiNoVerifyDomain = _a.apiNoVerifyDomain, integrations = _a.integrations;
|
|
71
143
|
var _this = this;
|
|
144
|
+
var increaseResSize = _a.increaseResSize, sequentialParameterPools = _a.sequentialParameterPools, sensitiveData = _a.sensitiveData, sensitiveKeys = _a.sensitiveKeys, executionBlockers = _a.executionBlockers, metricsKeys = _a.metricsKeys, xmlDecode = _a.xmlDecode, apiNoVerifyDomain = _a.apiNoVerifyDomain, integrations = _a.integrations;
|
|
72
145
|
Object.defineProperty(this, "httpAgent", {
|
|
73
146
|
enumerable: true,
|
|
74
147
|
configurable: true,
|
|
@@ -265,7 +338,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
265
338
|
configurable: true,
|
|
266
339
|
writable: true,
|
|
267
340
|
value: function (url, reqIndex) {
|
|
268
|
-
var resolvedUrl = _this.resolve(url, function (e) { return
|
|
341
|
+
var resolvedUrl = _this.resolve(url, function (e) { return failures_1.setParameterErrorHistogram(e, 'Failed to compute URL - '); });
|
|
269
342
|
_this.resolvedRequests[reqIndex].url = resolvedUrl;
|
|
270
343
|
return resolvedUrl;
|
|
271
344
|
}
|
|
@@ -276,7 +349,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
276
349
|
writable: true,
|
|
277
350
|
value: function (headers, reqIndex) {
|
|
278
351
|
var resolvedHeadersObj = {};
|
|
279
|
-
if (headers && !
|
|
352
|
+
if (headers && !isEmpty_1.default(headers)) {
|
|
280
353
|
_this.resolveHeaders(headers)
|
|
281
354
|
.forEach(function (_a) {
|
|
282
355
|
var name = _a.name, value = _a.value;
|
|
@@ -296,9 +369,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
296
369
|
var mimeType = (postData === null || postData === void 0 ? void 0 : postData.mimeType) === request_1.WsMessageType.BINARY ? request_1.WsMessageType.BINARY : request_1.WsMessageType.TEXT;
|
|
297
370
|
if (postData) {
|
|
298
371
|
resolvedMessage = _this.resolve(postData.text, function (err) {
|
|
299
|
-
return
|
|
372
|
+
return failures_1.setParameterErrorHistogram(err, 'Failed to compute Websocket message - ');
|
|
300
373
|
});
|
|
301
|
-
if (resolvedMessage && resolvedMessage.length >
|
|
374
|
+
if (resolvedMessage && resolvedMessage.length > utils_1.getMaxRequestBodySize()) {
|
|
302
375
|
throw new errors_2.RequestFailuresError('Websocket message size is too large');
|
|
303
376
|
}
|
|
304
377
|
_this.resolvedRequests[reqIndex].postData = {
|
|
@@ -329,7 +402,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
329
402
|
if (user && password) {
|
|
330
403
|
headers.push({
|
|
331
404
|
name: 'authorization',
|
|
332
|
-
value: 'Basic ' + Buffer.from(
|
|
405
|
+
value: 'Basic ' + Buffer.from(user + ":" + password).toString('base64'),
|
|
333
406
|
});
|
|
334
407
|
}
|
|
335
408
|
}
|
|
@@ -355,12 +428,12 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
355
428
|
var resolvedMessage = '';
|
|
356
429
|
if (grpc) {
|
|
357
430
|
resolvedMessage = _this.resolve(grpc.message, function (err) {
|
|
358
|
-
return
|
|
431
|
+
return failures_1.setParameterErrorHistogram(err, 'Failed to compute gRPC message - ');
|
|
359
432
|
});
|
|
360
|
-
if (resolvedMessage && resolvedMessage.length >
|
|
433
|
+
if (resolvedMessage && resolvedMessage.length > utils_1.getMaxRequestBodySize()) {
|
|
361
434
|
throw new errors_2.RequestFailuresError('gRPC message size is too large');
|
|
362
435
|
}
|
|
363
|
-
_this.resolvedRequests[reqIndex].grpc =
|
|
436
|
+
_this.resolvedRequests[reqIndex].grpc = __assign(__assign({}, grpc), { message: resolvedMessage });
|
|
364
437
|
}
|
|
365
438
|
_this.setVolatileParameters(parameters_1.BUILT_IN_VOLATILE_PARAMS.requestBody, resolvedMessage);
|
|
366
439
|
return { resolvedMessage: resolvedMessage };
|
|
@@ -384,9 +457,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
384
457
|
configurable: true,
|
|
385
458
|
writable: true,
|
|
386
459
|
value: function (extractions) {
|
|
387
|
-
return
|
|
460
|
+
return filter_1.default(extractions, function (extraction) { return extraction.header != null; }).map(function (extraction) {
|
|
388
461
|
return _this.resolve(extraction.header, function (err) {
|
|
389
|
-
return
|
|
462
|
+
return failures_1.setParameterErrorHistogram(err, "Failed to compute extraction header " + extraction.header + " - ");
|
|
390
463
|
});
|
|
391
464
|
});
|
|
392
465
|
}
|
|
@@ -434,7 +507,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
434
507
|
configurable: true,
|
|
435
508
|
writable: true,
|
|
436
509
|
value: function () {
|
|
437
|
-
return
|
|
510
|
+
return cookies_1.getCookies(this.httpAgent, this.resolvedRequests);
|
|
438
511
|
}
|
|
439
512
|
});
|
|
440
513
|
Object.defineProperty(SequenceExecutor.prototype, "start", {
|
|
@@ -442,9 +515,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
442
515
|
configurable: true,
|
|
443
516
|
writable: true,
|
|
444
517
|
value: function (steps) {
|
|
445
|
-
return
|
|
518
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
446
519
|
var stepIndex, step, shouldApplyFlowControl, skipIndex, isLastStep, isPrevStepALoadmillRequest, error_1, reason, stack, message, unexpectedError;
|
|
447
|
-
return
|
|
520
|
+
return __generator(this, function (_a) {
|
|
448
521
|
switch (_a.label) {
|
|
449
522
|
case 0: return [4 /*yield*/, this.handleParameterPools()];
|
|
450
523
|
case 1:
|
|
@@ -480,7 +553,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
480
553
|
return [3 /*break*/, 7];
|
|
481
554
|
}
|
|
482
555
|
this.lastStartedIndex = stepIndex;
|
|
483
|
-
isPrevStepALoadmillRequest = stepIndex > 0 &&
|
|
556
|
+
isPrevStepALoadmillRequest = stepIndex > 0 && type_guards_1.isLoadmillRequest(steps[stepIndex - 1]);
|
|
484
557
|
return [4 /*yield*/, this.executeStep(step, stepIndex, isPrevStepALoadmillRequest)];
|
|
485
558
|
case 5:
|
|
486
559
|
_a.sent();
|
|
@@ -493,7 +566,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
493
566
|
// Failures could be set before error was thrown,
|
|
494
567
|
// i.e. !error.histogram && !_.isEmpty(this.failures[reqIndex])
|
|
495
568
|
// CAN be true:
|
|
496
|
-
if (
|
|
569
|
+
if (isEmpty_1.default(this.failures[stepIndex])) {
|
|
497
570
|
reason = 'Unexpected sampler error';
|
|
498
571
|
this.setSingleFailure(stepIndex, reason);
|
|
499
572
|
stack = error_1.stack, message = error_1.message;
|
|
@@ -534,7 +607,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
534
607
|
writable: true,
|
|
535
608
|
value: function () {
|
|
536
609
|
var postParameters = parameters_1.parameterUtils.getRunPostParameters(this.resolvedRequests);
|
|
537
|
-
|
|
610
|
+
post_sequence_1.publishMetrics(cloneDeep_1.default(postParameters), this.metricsKeys);
|
|
538
611
|
}
|
|
539
612
|
});
|
|
540
613
|
Object.defineProperty(SequenceExecutor.prototype, "cleanup", {
|
|
@@ -544,7 +617,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
544
617
|
value: function (stepIndex) {
|
|
545
618
|
this.wsHandler.closeAllConnections();
|
|
546
619
|
if (this.sensitiveData) {
|
|
547
|
-
|
|
620
|
+
redact_data_1.redactSensitiveData(this.resolvedRequests, this.sensitiveKeys);
|
|
548
621
|
}
|
|
549
622
|
if (stepIndex != null) {
|
|
550
623
|
this.removeVolatilePostParameters(stepIndex);
|
|
@@ -556,13 +629,13 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
556
629
|
configurable: true,
|
|
557
630
|
writable: true,
|
|
558
631
|
value: function () {
|
|
559
|
-
return
|
|
632
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
560
633
|
var newValues;
|
|
561
|
-
return
|
|
634
|
+
return __generator(this, function (_a) {
|
|
562
635
|
switch (_a.label) {
|
|
563
636
|
case 0:
|
|
564
637
|
if (!this.sequentialParameterPools) return [3 /*break*/, 2];
|
|
565
|
-
return [4 /*yield*/,
|
|
638
|
+
return [4 /*yield*/, parameter_pools_1.generateValuesForParameterPools(this.parameters.__testRunId)];
|
|
566
639
|
case 1:
|
|
567
640
|
newValues = _a.sent();
|
|
568
641
|
this.assignParameters(newValues);
|
|
@@ -608,9 +681,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
608
681
|
configurable: true,
|
|
609
682
|
writable: true,
|
|
610
683
|
value: function (index, loop) {
|
|
611
|
-
return
|
|
684
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
612
685
|
var asserter;
|
|
613
|
-
return
|
|
686
|
+
return __generator(this, function (_a) {
|
|
614
687
|
switch (_a.label) {
|
|
615
688
|
case 0:
|
|
616
689
|
asserter = new asserter_1.Asserter(this.parameters, this.integrations);
|
|
@@ -626,9 +699,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
626
699
|
configurable: true,
|
|
627
700
|
writable: true,
|
|
628
701
|
value: function (index, loop) {
|
|
629
|
-
return
|
|
702
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
630
703
|
var asserter, _a;
|
|
631
|
-
return
|
|
704
|
+
return __generator(this, function (_b) {
|
|
632
705
|
switch (_b.label) {
|
|
633
706
|
case 0:
|
|
634
707
|
asserter = new asserter_1.Asserter(this.parameters, this.integrations);
|
|
@@ -651,7 +724,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
651
724
|
value: function (conditionType, parameterName) {
|
|
652
725
|
var value = parameterName &&
|
|
653
726
|
parameters_1.parameterUtils.resolveParameter(parameterName, this.parameters, function (err) {
|
|
654
|
-
return
|
|
727
|
+
return failures_1.setParameterErrorHistogram(err, "Failed to compute " + conditionType + " condition - ");
|
|
655
728
|
});
|
|
656
729
|
return parameters_1.valueUtils.isTruthyParameterValue(value);
|
|
657
730
|
}
|
|
@@ -667,7 +740,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
667
740
|
var shouldSkip = this.isTruthyParameter('skip', condition);
|
|
668
741
|
if ((shouldSkip && !negate) || (!shouldSkip && negate)) {
|
|
669
742
|
if (goTo) {
|
|
670
|
-
return
|
|
743
|
+
return step_1.findStepIndex(steps, goTo);
|
|
671
744
|
}
|
|
672
745
|
else {
|
|
673
746
|
return reqIndex + 1;
|
|
@@ -681,9 +754,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
681
754
|
configurable: true,
|
|
682
755
|
writable: true,
|
|
683
756
|
value: function (step, shouldApplyFlowControl) {
|
|
684
|
-
return
|
|
757
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
685
758
|
var delay;
|
|
686
|
-
return
|
|
759
|
+
return __generator(this, function (_a) {
|
|
687
760
|
switch (_a.label) {
|
|
688
761
|
case 0:
|
|
689
762
|
delay = (shouldApplyFlowControl && step.delay) ? step.delay : DEFAULT_REQUEST_DELAY;
|
|
@@ -701,20 +774,20 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
701
774
|
configurable: true,
|
|
702
775
|
writable: true,
|
|
703
776
|
value: function (delay, key) {
|
|
704
|
-
return
|
|
777
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
705
778
|
var resolvedDelay, validationError;
|
|
706
|
-
return
|
|
779
|
+
return __generator(this, function (_a) {
|
|
707
780
|
switch (_a.label) {
|
|
708
781
|
case 0:
|
|
709
782
|
if (!delay) return [3 /*break*/, 2];
|
|
710
|
-
resolvedDelay =
|
|
783
|
+
resolvedDelay = clamp_1.default(Math.round(Number(conf_1.isParameterCandidate(delay)
|
|
711
784
|
? parameters_1.parameterUtils.resolveParameter(delay, this.parameters, function (err) {
|
|
712
|
-
return
|
|
785
|
+
return failures_1.setParameterErrorHistogram(err, "Failed to compute " + (key === null || key === void 0 ? void 0 : key.toLowerCase()) + " - ");
|
|
713
786
|
})
|
|
714
787
|
: delay)), MIN_REQUEST_DELAY, Infinity);
|
|
715
|
-
validationError =
|
|
788
|
+
validationError = conf_1.validateIntegerDelay(resolvedDelay, false);
|
|
716
789
|
if (validationError) {
|
|
717
|
-
throw new errors_2.RequestFailuresError("Invalid "
|
|
790
|
+
throw new errors_2.RequestFailuresError("Invalid " + key + ": " + validationError);
|
|
718
791
|
}
|
|
719
792
|
return [4 /*yield*/, promiseUtils.delay(resolvedDelay)];
|
|
720
793
|
case 1:
|
|
@@ -731,7 +804,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
731
804
|
configurable: true,
|
|
732
805
|
writable: true,
|
|
733
806
|
value: function (index, histogram) {
|
|
734
|
-
this.failures[index] =
|
|
807
|
+
this.failures[index] = failures_1.OneFailure(histogram);
|
|
735
808
|
}
|
|
736
809
|
});
|
|
737
810
|
Object.defineProperty(SequenceExecutor.prototype, "executeStep", {
|
|
@@ -740,10 +813,10 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
740
813
|
writable: true,
|
|
741
814
|
value: function (step, index, shouldOverrideLastResponseBody) {
|
|
742
815
|
var _a;
|
|
743
|
-
return
|
|
816
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
744
817
|
var failedAssertionsHistogram, resTime, res, loopIteration, maxIterations, handler, _b, timeout, message;
|
|
745
818
|
var _this = this;
|
|
746
|
-
return
|
|
819
|
+
return __generator(this, function (_c) {
|
|
747
820
|
switch (_c.label) {
|
|
748
821
|
case 0:
|
|
749
822
|
resTime = 0;
|
|
@@ -759,21 +832,21 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
759
832
|
this.initVolatileParameters();
|
|
760
833
|
handler = this.handlers.find(function (h) { return h.canHandle(step); });
|
|
761
834
|
if (!handler) {
|
|
762
|
-
throw new Error("No handler found for step type: "
|
|
835
|
+
throw new Error("No handler found for step type: " + step.type);
|
|
763
836
|
}
|
|
764
837
|
return [4 /*yield*/, handler.execute(step, index)];
|
|
765
838
|
case 2:
|
|
766
839
|
res = _c.sent();
|
|
767
840
|
// Setting now to avoid possible user overwrite:
|
|
768
841
|
resTime = Number(this.parameters.__responseTime);
|
|
769
|
-
if (
|
|
842
|
+
if (type_guards_1.isTransportableStep(step)) {
|
|
770
843
|
_b = step.timeout, timeout = _b === void 0 ? request_1.DEFAULT_REQUEST_TIMEOUT : _b;
|
|
771
844
|
if (resTime > timeout) {
|
|
772
845
|
if (step.expectedStatus === request_1.ALLOWED_RESPONSE_STATUSES.ANY) {
|
|
773
|
-
log_1.default.warn("Response received after timeout of "
|
|
846
|
+
log_1.default.warn("Response received after timeout of " + timeout + "ms exceeded, but expectedStatus is ANY");
|
|
774
847
|
}
|
|
775
848
|
else {
|
|
776
|
-
throw new errors_2.RequestFailuresError("Response received after timeout of "
|
|
849
|
+
throw new errors_2.RequestFailuresError("Response received after timeout of " + timeout + "ms exceeded");
|
|
777
850
|
}
|
|
778
851
|
}
|
|
779
852
|
res.wsExtractionData = { getMessages: function () { return _this.wsHandler.getMessages(); }, timeLimit: timeout - resTime };
|
|
@@ -795,12 +868,12 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
795
868
|
case 8: return [4 /*yield*/, this.hasLoopingFailed(index, step.loop)];
|
|
796
869
|
case 9:
|
|
797
870
|
if (_c.sent()) {
|
|
798
|
-
throw new errors_2.RequestFailuresError(
|
|
871
|
+
throw new errors_2.RequestFailuresError(errors_1.createLoopErrorMessage(maxIterations));
|
|
799
872
|
}
|
|
800
873
|
_c.label = 10;
|
|
801
874
|
case 10: return [3 /*break*/, 1];
|
|
802
875
|
case 11:
|
|
803
|
-
if (!
|
|
876
|
+
if (!isEmpty_1.default(failedAssertionsHistogram)) {
|
|
804
877
|
message = 'Request failed due to assertions.';
|
|
805
878
|
log_1.default.debug(message, {
|
|
806
879
|
failedAssertionsHistogram: failedAssertionsHistogram,
|
|
@@ -826,7 +899,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
826
899
|
this.avgResTime = mathUtils.calcAvg(this.avgResTime, this.successfulHits, resTime, 1);
|
|
827
900
|
++this.successfulHits;
|
|
828
901
|
}
|
|
829
|
-
|
|
902
|
+
request_stats_1.setReqStats(this.requestStats, index, excludeInAvgStats, resTime);
|
|
830
903
|
}
|
|
831
904
|
});
|
|
832
905
|
Object.defineProperty(SequenceExecutor.prototype, "initVolatileParameters", {
|
|
@@ -857,7 +930,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
857
930
|
var _a;
|
|
858
931
|
var postParams = (_a = _this.resolvedRequests[idx]) === null || _a === void 0 ? void 0 : _a.postParameters;
|
|
859
932
|
if (postParams) {
|
|
860
|
-
var toRemove = postParams.findIndex(function (param) { return !
|
|
933
|
+
var toRemove = postParams.findIndex(function (param) { return !isEmpty_1.default(param[parameterName]); });
|
|
861
934
|
toRemove >= 0 && postParams.splice(toRemove, 1);
|
|
862
935
|
}
|
|
863
936
|
});
|
|
@@ -869,11 +942,11 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
869
942
|
writable: true,
|
|
870
943
|
value: function (request, reqIndex) {
|
|
871
944
|
var _a;
|
|
872
|
-
return
|
|
945
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
873
946
|
var res, reqId, redirectHeaders, requestStartTime, beforeTime, error_2, status_1, message, code, prefix, reportedReason, response, failure;
|
|
874
947
|
var _b, _c;
|
|
875
948
|
var _this = this;
|
|
876
|
-
return
|
|
949
|
+
return __generator(this, function (_d) {
|
|
877
950
|
switch (_d.label) {
|
|
878
951
|
case 0:
|
|
879
952
|
redirectHeaders = [];
|
|
@@ -896,8 +969,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
896
969
|
return [4 /*yield*/, request.ok(function (res, isExpectedStatus) {
|
|
897
970
|
if (isExpectedStatus === void 0) { isExpectedStatus = isExpectedHttpStatus; }
|
|
898
971
|
var status = res.status;
|
|
899
|
-
if (_this.xmlDecode &&
|
|
900
|
-
res.text =
|
|
972
|
+
if (_this.xmlDecode && is_xml_1.isXML(res.type) && res.text) {
|
|
973
|
+
res.text = decode_1.decodePriorityResponse(res.text);
|
|
901
974
|
}
|
|
902
975
|
_this.setTimeParams(requestStartTime, beforeTime);
|
|
903
976
|
_this.setResolvedResponse(reqIndex, {
|
|
@@ -917,7 +990,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
917
990
|
error_2 = _d.sent();
|
|
918
991
|
log_1.default.debug('Request failed:', error_2);
|
|
919
992
|
status_1 = error_2.status, message = error_2.message, code = error_2.code;
|
|
920
|
-
prefix = status_1 ? "HTTP status "
|
|
993
|
+
prefix = status_1 ? "HTTP status " + status_1 + " - " : '';
|
|
921
994
|
reportedReason = prefix + message;
|
|
922
995
|
if (!(message === errors_1.superagentCorsError)) return [3 /*break*/, 8];
|
|
923
996
|
if (!(typeof loadmillGetResponse === 'function')) return [3 /*break*/, 7];
|
|
@@ -931,7 +1004,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
931
1004
|
? errors_1.corsPreFlightErrorStatusPrefix
|
|
932
1005
|
: errors_1.corsErrorStatusPrefix) + response.status;
|
|
933
1006
|
this.resolvedRequests[reqIndex].headers = manipulationUtils.objToSingletonArray(response.requestHeaders);
|
|
934
|
-
this.setResolvedResponse(reqIndex,
|
|
1007
|
+
this.setResolvedResponse(reqIndex, __assign(__assign({}, response), { type: response.headers['content-type'] }));
|
|
935
1008
|
return [3 /*break*/, 8];
|
|
936
1009
|
case 7:
|
|
937
1010
|
reportedReason = errors_1.unknownStatusCorsError;
|
|
@@ -1025,7 +1098,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1025
1098
|
writable: true,
|
|
1026
1099
|
value: function (_a) {
|
|
1027
1100
|
var url = _a.url;
|
|
1028
|
-
var resolvedUrl = this.resolve(url, function (e) { return
|
|
1101
|
+
var resolvedUrl = this.resolve(url, function (e) { return failures_1.setParameterErrorHistogram(e, 'Failed to compute URL - '); });
|
|
1029
1102
|
return resolvedUrl.startsWith('ws://') || resolvedUrl.startsWith('wss://');
|
|
1030
1103
|
}
|
|
1031
1104
|
});
|
|
@@ -1035,7 +1108,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1035
1108
|
writable: true,
|
|
1036
1109
|
value: function (_a) {
|
|
1037
1110
|
var url = _a.url;
|
|
1038
|
-
var resolvedUrl = this.resolve(url, function (e) { return
|
|
1111
|
+
var resolvedUrl = this.resolve(url, function (e) { return failures_1.setParameterErrorHistogram(e, 'Failed to compute URL - '); });
|
|
1039
1112
|
return resolvedUrl.startsWith('grpc://');
|
|
1040
1113
|
}
|
|
1041
1114
|
});
|
|
@@ -1046,8 +1119,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1046
1119
|
value: function (requestConf, reqIndex) {
|
|
1047
1120
|
var _this = this;
|
|
1048
1121
|
var _a;
|
|
1049
|
-
var urlObj = new urijs_1.default(
|
|
1050
|
-
return
|
|
1122
|
+
var urlObj = new urijs_1.default(request_1.resolveUrl(requestConf.url, this.parameters, function (err) {
|
|
1123
|
+
return failures_1.setParameterErrorHistogram(err, 'Failed to compute URL - ');
|
|
1051
1124
|
}));
|
|
1052
1125
|
// these are empty strings when missing!
|
|
1053
1126
|
var user = urlObj.username();
|
|
@@ -1077,8 +1150,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1077
1150
|
}
|
|
1078
1151
|
this.preparePostData(requestConf, request, reqIndex);
|
|
1079
1152
|
// todo itay: instead we should collect from all extractions but some kind of `defer` flag to header extractors:
|
|
1080
|
-
var extractionHeaders =
|
|
1081
|
-
if (!
|
|
1153
|
+
var extractionHeaders = flatMap_1.default(requestConf.extract, this.collectExtractionHeaders).filter(isNonSimpleResponseHeader);
|
|
1154
|
+
if (!isEmpty_1.default(extractionHeaders)) {
|
|
1082
1155
|
// this is not required in a node environment but also does not matter
|
|
1083
1156
|
// thus we prefer to keep it in order to reduce dissimilarities:
|
|
1084
1157
|
//todo itay: allow users to overwrite / disable this headers?
|
|
@@ -1134,7 +1207,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1134
1207
|
}
|
|
1135
1208
|
this.resolvedRequests[reqIndex].headers = manipulationUtils.objToSingletonArray(request.header);
|
|
1136
1209
|
request.expectedStatus = requestConf.expectedStatus || request_1.ALLOWED_RESPONSE_STATUSES.SUCCESS;
|
|
1137
|
-
|
|
1210
|
+
block_request_1.enforceExecutionBlockers(this.executionBlockers, request);
|
|
1138
1211
|
return request;
|
|
1139
1212
|
}
|
|
1140
1213
|
});
|
|
@@ -1144,7 +1217,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1144
1217
|
writable: true,
|
|
1145
1218
|
value: function (headers, request, filter) {
|
|
1146
1219
|
if (filter === void 0) { filter = function (_h) { return true; }; }
|
|
1147
|
-
if (headers && !
|
|
1220
|
+
if (headers && !isEmpty_1.default(headers)) {
|
|
1148
1221
|
this.resolveHeaders(headers)
|
|
1149
1222
|
.filter(filter)
|
|
1150
1223
|
.forEach(function (_a) {
|
|
@@ -1194,13 +1267,13 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1194
1267
|
data = this.prepareUrlEncoded(postData.params);
|
|
1195
1268
|
}
|
|
1196
1269
|
else {
|
|
1197
|
-
data = this.resolve(postData.text, function (err) { return
|
|
1270
|
+
data = this.resolve(postData.text, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to compute request body - '); });
|
|
1198
1271
|
}
|
|
1199
|
-
if (data && data.length >
|
|
1272
|
+
if (data && data.length > utils_1.getMaxRequestBodySize()) {
|
|
1200
1273
|
throw new errors_2.RequestFailuresError('Request body size is too large');
|
|
1201
1274
|
}
|
|
1202
|
-
if (this.xmlDecode &&
|
|
1203
|
-
data =
|
|
1275
|
+
if (this.xmlDecode && is_xml_1.isXML(mimeType)) {
|
|
1276
|
+
data = encode_1.encodeXMLRequestBody(data);
|
|
1204
1277
|
}
|
|
1205
1278
|
// This invocation will behave differently according to different types set on the request:
|
|
1206
1279
|
request.send(data);
|
|
@@ -1218,21 +1291,21 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1218
1291
|
value: function (postFormData, request, reqIndex) {
|
|
1219
1292
|
var resolvedPostFormData = [];
|
|
1220
1293
|
var size = 0;
|
|
1221
|
-
var MAX_BODY_SIZE =
|
|
1294
|
+
var MAX_BODY_SIZE = utils_1.getMaxRequestBodySize();
|
|
1222
1295
|
for (var _i = 0, postFormData_1 = postFormData; _i < postFormData_1.length; _i++) {
|
|
1223
1296
|
var entry = postFormData_1[_i];
|
|
1224
1297
|
var name_1 = entry.name, value = entry.value, fileName = entry.fileName;
|
|
1225
|
-
var resolvedName = this.resolve(name_1, function (err) { return
|
|
1298
|
+
var resolvedName = this.resolve(name_1, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve form-data key - '); });
|
|
1226
1299
|
size += resolvedName.length;
|
|
1227
1300
|
if (fileName) {
|
|
1228
|
-
var resolvedFileName = this.resolve(fileName, function (err) { return
|
|
1301
|
+
var resolvedFileName = this.resolve(fileName, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve form-data fileName - '); });
|
|
1229
1302
|
size += (resolvedFileName.length + value.length);
|
|
1230
1303
|
var buffer = Buffer.from(value, 'binary');
|
|
1231
1304
|
request.attach(resolvedName, buffer, resolvedFileName);
|
|
1232
1305
|
resolvedPostFormData.push({ name: resolvedName, value: value, fileName: resolvedFileName });
|
|
1233
1306
|
}
|
|
1234
1307
|
else {
|
|
1235
|
-
var resolvedValue = this.resolve(value, function (err) { return
|
|
1308
|
+
var resolvedValue = this.resolve(value, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve form-data value - '); });
|
|
1236
1309
|
size += resolvedValue.length;
|
|
1237
1310
|
request.field(resolvedName, resolvedValue);
|
|
1238
1311
|
resolvedPostFormData.push({ name: resolvedName, value: resolvedValue });
|
|
@@ -1254,9 +1327,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1254
1327
|
for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {
|
|
1255
1328
|
var param = params_1[_i];
|
|
1256
1329
|
var name_2 = param.name, value = param.value;
|
|
1257
|
-
var resolvedName = this.resolve(name_2, function (err) { return
|
|
1258
|
-
var resolvedValue = this.resolve(value, function (err) { return
|
|
1259
|
-
resolvedParams.push(
|
|
1330
|
+
var resolvedName = this.resolve(name_2, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve params key - '); });
|
|
1331
|
+
var resolvedValue = this.resolve(value, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve params value - '); });
|
|
1332
|
+
resolvedParams.push(resolvedName + "=" + resolvedValue);
|
|
1260
1333
|
}
|
|
1261
1334
|
return resolvedParams.join('&');
|
|
1262
1335
|
}
|
|
@@ -1269,8 +1342,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1269
1342
|
var query = _a.query, operationName = _a.operationName, variables = _a.variables;
|
|
1270
1343
|
var mimeType = request_1.ConfMimeTypes.APPLICATION_JSON;
|
|
1271
1344
|
request.type(mimeType);
|
|
1272
|
-
var data = JSON.stringify(
|
|
1273
|
-
if (data.length >
|
|
1345
|
+
var data = JSON.stringify(__assign(__assign(__assign({}, (query && { query: this.resolve(query, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve graphql query - '); }) })), (operationName && { operationName: this.resolve(operationName, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve graphql operationName - '); }) })), (variables && { variables: this.prepareGraphqlVariables(variables) })));
|
|
1346
|
+
if (data.length > utils_1.getMaxRequestBodySize()) {
|
|
1274
1347
|
throw new errors_2.RequestFailuresError('Request body size is too large');
|
|
1275
1348
|
}
|
|
1276
1349
|
request.send(data);
|
|
@@ -1286,7 +1359,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1286
1359
|
configurable: true,
|
|
1287
1360
|
writable: true,
|
|
1288
1361
|
value: function (variables) {
|
|
1289
|
-
var resolvedVariables = this.resolve(variables, function (err) { return
|
|
1362
|
+
var resolvedVariables = this.resolve(variables, function (err) { return failures_1.setParameterErrorHistogram(err, 'Failed to resolve graphql variables - '); });
|
|
1290
1363
|
try {
|
|
1291
1364
|
resolvedVariables = JSON.parse(resolvedVariables);
|
|
1292
1365
|
}
|
|
@@ -1324,16 +1397,16 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1324
1397
|
value: function (domain, requestType) {
|
|
1325
1398
|
var _a, _b, _c;
|
|
1326
1399
|
if (requestType === void 0) { requestType = constants_1.RequestType.HTTP; }
|
|
1327
|
-
if (
|
|
1328
|
-
var message =
|
|
1400
|
+
if (isEmpty_1.default(domain)) {
|
|
1401
|
+
var message = requestType + " request domain name is empty";
|
|
1329
1402
|
throw new errors_2.RequestFailuresError(message, (_a = {}, _a[message] = 1, _a));
|
|
1330
1403
|
}
|
|
1331
1404
|
if (conf_1.validate.isUrl(domain)) {
|
|
1332
|
-
var message =
|
|
1405
|
+
var message = requestType + " request domain name [" + domain + "] is not valid";
|
|
1333
1406
|
throw new errors_2.RequestFailuresError(message, (_b = {}, _b[message] = 1, _b));
|
|
1334
1407
|
}
|
|
1335
1408
|
else if (!this.apiNoVerifyDomain && !uriUtils.isVerified(domain, this.domainsWhiteList)) {
|
|
1336
|
-
var message =
|
|
1409
|
+
var message = requestType + " request domain name [" + domain + "] is not on white list";
|
|
1337
1410
|
throw new errors_2.RequestFailuresError(message, (_c = {}, _c[message] = 1, _c));
|
|
1338
1411
|
}
|
|
1339
1412
|
}
|
|
@@ -1344,7 +1417,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1344
1417
|
writable: true,
|
|
1345
1418
|
value: function (service) {
|
|
1346
1419
|
var _a;
|
|
1347
|
-
if (
|
|
1420
|
+
if (isEmpty_1.default(service)) {
|
|
1348
1421
|
var message = 'gRPC request service name is empty';
|
|
1349
1422
|
throw new errors_2.RequestFailuresError(message, (_a = {}, _a[message] = 1, _a));
|
|
1350
1423
|
}
|
|
@@ -1365,11 +1438,11 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1365
1438
|
writable: true,
|
|
1366
1439
|
value: function (headers) {
|
|
1367
1440
|
var _this = this;
|
|
1368
|
-
return
|
|
1369
|
-
return
|
|
1441
|
+
return flatMap_1.default(headers, function (aHeaders) {
|
|
1442
|
+
return map_1.default(aHeaders, function (value, name) { return ({
|
|
1370
1443
|
name: name,
|
|
1371
1444
|
value: _this.resolve(value, function (err) {
|
|
1372
|
-
return
|
|
1445
|
+
return failures_1.setParameterErrorHistogram(err, "Failed to compute " + name + " header value - ");
|
|
1373
1446
|
}),
|
|
1374
1447
|
}); });
|
|
1375
1448
|
});
|
|
@@ -1380,8 +1453,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1380
1453
|
configurable: true,
|
|
1381
1454
|
writable: true,
|
|
1382
1455
|
value: function (reqIndex, requestConf, res) {
|
|
1383
|
-
return
|
|
1384
|
-
return
|
|
1456
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1457
|
+
return __generator(this, function (_a) {
|
|
1385
1458
|
switch (_a.label) {
|
|
1386
1459
|
case 0:
|
|
1387
1460
|
this.setVolatileParameters(parameters_1.BUILT_IN_VOLATILE_PARAMS.responseBody, res.text);
|
|
@@ -1406,9 +1479,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1406
1479
|
configurable: true,
|
|
1407
1480
|
writable: true,
|
|
1408
1481
|
value: function (reqIndex, step) {
|
|
1409
|
-
return
|
|
1482
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1410
1483
|
var _a, evaluatedAssertions, evaluatedDisabledAssertions;
|
|
1411
|
-
return
|
|
1484
|
+
return __generator(this, function (_b) {
|
|
1412
1485
|
switch (_b.label) {
|
|
1413
1486
|
case 0: return [4 /*yield*/, this.evaluateAssertions(step)];
|
|
1414
1487
|
case 1:
|
|
@@ -1428,8 +1501,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1428
1501
|
value: function (reqIndex) {
|
|
1429
1502
|
this.resolvedRequests[reqIndex].postParameters =
|
|
1430
1503
|
manipulationUtils.objToSingletonArray(this.parameters)
|
|
1431
|
-
.filter(function (p) { return !
|
|
1432
|
-
.filter(function (p) { return !
|
|
1504
|
+
.filter(function (p) { return !isEmpty_1.default(p); })
|
|
1505
|
+
.filter(function (p) { return !isFunction_1.default(parameters_1.parameterUtils.getParameterValue(p)); });
|
|
1433
1506
|
}
|
|
1434
1507
|
});
|
|
1435
1508
|
Object.defineProperty(SequenceExecutor.prototype, "handleExtractions", {
|
|
@@ -1437,9 +1510,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1437
1510
|
configurable: true,
|
|
1438
1511
|
writable: true,
|
|
1439
1512
|
value: function (requestConf, res) {
|
|
1440
|
-
return
|
|
1513
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1441
1514
|
var _i, _a, extractions;
|
|
1442
|
-
return
|
|
1515
|
+
return __generator(this, function (_b) {
|
|
1443
1516
|
switch (_b.label) {
|
|
1444
1517
|
case 0:
|
|
1445
1518
|
_i = 0, _a = (requestConf.extract || []);
|
|
@@ -1465,9 +1538,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1465
1538
|
configurable: true,
|
|
1466
1539
|
writable: true,
|
|
1467
1540
|
value: function (res, extractions) {
|
|
1468
|
-
return
|
|
1541
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1469
1542
|
var contextParameters, extractionCombiner, _i, _a, _b, name_3, extraction;
|
|
1470
|
-
return
|
|
1543
|
+
return __generator(this, function (_c) {
|
|
1471
1544
|
switch (_c.label) {
|
|
1472
1545
|
case 0:
|
|
1473
1546
|
contextParameters = Object.assign({}, this.parameters);
|
|
@@ -1495,9 +1568,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1495
1568
|
configurable: true,
|
|
1496
1569
|
writable: true,
|
|
1497
1570
|
value: function (parameterName, extraction, extractionCombiner) {
|
|
1498
|
-
return
|
|
1571
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1499
1572
|
var result, combinedExtractor, error_3, genericMessage, prettyMessage, publicMessage, reqIndex;
|
|
1500
|
-
return
|
|
1573
|
+
return __generator(this, function (_a) {
|
|
1501
1574
|
switch (_a.label) {
|
|
1502
1575
|
case 0:
|
|
1503
1576
|
log_1.default.trace('Parameter extraction start: ', { parameterName: parameterName, extraction: extraction });
|
|
@@ -1513,11 +1586,11 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1513
1586
|
return [3 /*break*/, 5];
|
|
1514
1587
|
case 4:
|
|
1515
1588
|
error_3 = _a.sent();
|
|
1516
|
-
genericMessage = "Failed to extract value for parameter \""
|
|
1589
|
+
genericMessage = "Failed to extract value for parameter \"" + parameterName + "\"";
|
|
1517
1590
|
log_1.default.debug(genericMessage, error_3);
|
|
1518
1591
|
prettyMessage = error_3.prettyMessage;
|
|
1519
1592
|
publicMessage = prettyMessage
|
|
1520
|
-
?
|
|
1593
|
+
? genericMessage + " - " + prettyMessage
|
|
1521
1594
|
: genericMessage;
|
|
1522
1595
|
if (error_3 instanceof errors_1.WebsocketError) {
|
|
1523
1596
|
reqIndex = this.resolvedRequests.length - 1;
|
|
@@ -1604,7 +1677,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1604
1677
|
configurable: true,
|
|
1605
1678
|
writable: true,
|
|
1606
1679
|
value: function (reqIndex, stdout) {
|
|
1607
|
-
if (!
|
|
1680
|
+
if (!isEmpty_1.default(stdout)) {
|
|
1608
1681
|
(this.resolvedRequests[reqIndex].stdout = stdout);
|
|
1609
1682
|
}
|
|
1610
1683
|
}
|
|
@@ -1628,14 +1701,14 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1628
1701
|
configurable: true,
|
|
1629
1702
|
writable: true,
|
|
1630
1703
|
value: function (step) {
|
|
1631
|
-
return
|
|
1704
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1632
1705
|
var asserter, evaluatedAssertions, evaluatedDisabledAssertions, index, assertion, _a, _b, _c, _d, _e, _f;
|
|
1633
|
-
return
|
|
1706
|
+
return __generator(this, function (_g) {
|
|
1634
1707
|
switch (_g.label) {
|
|
1635
1708
|
case 0:
|
|
1636
1709
|
asserter = new asserter_1.Asserter(this.parameters, this.integrations);
|
|
1637
1710
|
evaluatedAssertions = [], evaluatedDisabledAssertions = [];
|
|
1638
|
-
if (!
|
|
1711
|
+
if (!array_utils_1.isNonEmptyArray(step.assert)) return [3 /*break*/, 7];
|
|
1639
1712
|
index = 0;
|
|
1640
1713
|
_g.label = 1;
|
|
1641
1714
|
case 1:
|
|
@@ -1688,9 +1761,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1688
1761
|
configurable: true,
|
|
1689
1762
|
writable: true,
|
|
1690
1763
|
value: function (asserter, reqIndex, assertion) {
|
|
1691
|
-
return
|
|
1764
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1692
1765
|
var _a, e_1;
|
|
1693
|
-
return
|
|
1766
|
+
return __generator(this, function (_b) {
|
|
1694
1767
|
switch (_b.label) {
|
|
1695
1768
|
case 0:
|
|
1696
1769
|
_b.trys.push([0, 3, , 4]);
|
|
@@ -1704,7 +1777,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1704
1777
|
case 3:
|
|
1705
1778
|
e_1 = _b.sent();
|
|
1706
1779
|
if (!(e_1 instanceof errors_2.RequestFailuresError)) {
|
|
1707
|
-
|
|
1780
|
+
failures_1.setParameterErrorHistogram(e_1, "Failed to compute ${" + (assertion === null || assertion === void 0 ? void 0 : assertion.check) + "} (assertion #" + (reqIndex + 1) + ") - ");
|
|
1708
1781
|
}
|
|
1709
1782
|
throw e_1;
|
|
1710
1783
|
case 4: return [2 /*return*/];
|
|
@@ -1718,9 +1791,9 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1718
1791
|
configurable: true,
|
|
1719
1792
|
writable: true,
|
|
1720
1793
|
value: function (asserter, assertion) {
|
|
1721
|
-
return
|
|
1794
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1722
1795
|
var _a;
|
|
1723
|
-
return
|
|
1796
|
+
return __generator(this, function (_b) {
|
|
1724
1797
|
switch (_b.label) {
|
|
1725
1798
|
case 0:
|
|
1726
1799
|
_b.trys.push([0, 2, , 3]);
|
|
@@ -1759,8 +1832,8 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1759
1832
|
writable: true,
|
|
1760
1833
|
value: function (reqIndex, evaluatedAssertions) {
|
|
1761
1834
|
var failuresHistogram = _evaluatedAssertionsToFailuresHistogram(evaluatedAssertions);
|
|
1762
|
-
if (!
|
|
1763
|
-
this.evaluatingFailures[reqIndex] =
|
|
1835
|
+
if (!isEmpty_1.default(failuresHistogram)) {
|
|
1836
|
+
this.evaluatingFailures[reqIndex] = failures_1.OneFailure(failuresHistogram);
|
|
1764
1837
|
}
|
|
1765
1838
|
}
|
|
1766
1839
|
});
|
|
@@ -1769,7 +1842,7 @@ var SequenceExecutor = /** @class */ (function () {
|
|
|
1769
1842
|
configurable: true,
|
|
1770
1843
|
writable: true,
|
|
1771
1844
|
value: function (cookies) {
|
|
1772
|
-
|
|
1845
|
+
cookies_1.setCookies(this.httpAgent, cookies);
|
|
1773
1846
|
}
|
|
1774
1847
|
});
|
|
1775
1848
|
Object.defineProperty(SequenceExecutor.prototype, "setHtmlReport", {
|
|
@@ -1810,7 +1883,7 @@ function isSimpleRequest(headers) {
|
|
|
1810
1883
|
return false;
|
|
1811
1884
|
}
|
|
1812
1885
|
}
|
|
1813
|
-
return !
|
|
1886
|
+
return !find_1.default(headers, function (_, key) {
|
|
1814
1887
|
return key !== 'accept' &&
|
|
1815
1888
|
key !== 'accept-language' &&
|
|
1816
1889
|
key !== 'content-language' &&
|
|
@@ -1822,9 +1895,9 @@ var getLoopIterations = function (LoopConf) {
|
|
|
1822
1895
|
return Math.min(MAX_REQUEST_LOOPS_ITERATIONS, declared);
|
|
1823
1896
|
};
|
|
1824
1897
|
var extendResponseHeaders = function (headers, redirectHeaders) {
|
|
1825
|
-
if (!
|
|
1898
|
+
if (!isEmpty_1.default(redirectHeaders) && headers) {
|
|
1826
1899
|
redirectHeaders.forEach(function (loc, idx) {
|
|
1827
|
-
headers["location_"
|
|
1900
|
+
headers["location_" + (idx + 1)] = loc;
|
|
1828
1901
|
});
|
|
1829
1902
|
headers.location = redirectHeaders[redirectHeaders.length - 1]; // stroe the last one as location
|
|
1830
1903
|
}
|
|
@@ -1866,8 +1939,8 @@ var setTCPReuse = function (request, agent, sslAgent) {
|
|
|
1866
1939
|
this.agent(agent);
|
|
1867
1940
|
}
|
|
1868
1941
|
// then continue with superagent logic
|
|
1869
|
-
_oldRequest.apply.apply(_oldRequest,
|
|
1942
|
+
_oldRequest.apply.apply(_oldRequest, __spreadArray([this], args));
|
|
1870
1943
|
};
|
|
1871
1944
|
};
|
|
1872
|
-
var _shouldExcludeResTimeInAvg = function (step) { return !
|
|
1945
|
+
var _shouldExcludeResTimeInAvg = function (step) { return !type_guards_1.isLoadmillRequest(step); };
|
|
1873
1946
|
//# sourceMappingURL=sequence.js.map
|