@loadmill/executer 0.1.92 → 0.1.94
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/asserter.d.ts +9 -0
- package/dist/asserter.js +141 -0
- package/dist/asserter.js.map +1 -0
- package/dist/cookies.d.ts +4 -0
- package/dist/cookies.js +79 -0
- package/dist/cookies.js.map +1 -0
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +38 -0
- package/dist/errors.js.map +1 -0
- package/dist/extraction-combiner.d.ts +17 -0
- package/dist/extraction-combiner.js +182 -0
- package/dist/extraction-combiner.js.map +1 -0
- package/dist/failures.d.ts +24 -0
- package/dist/failures.js +67 -0
- package/dist/failures.js.map +1 -0
- package/dist/iteration-stats.d.ts +2 -0
- package/dist/iteration-stats.js +38 -0
- package/dist/iteration-stats.js.map +1 -0
- package/dist/message-creators.d.ts +31 -0
- package/dist/message-creators.js +90 -0
- package/dist/message-creators.js.map +1 -0
- package/dist/mill-info.d.ts +66 -0
- package/dist/mill-info.js +3 -0
- package/dist/mill-info.js.map +1 -0
- package/dist/mill-version.d.ts +6 -0
- package/dist/mill-version.js +10 -0
- package/dist/mill-version.js.map +1 -0
- package/dist/parameter-pools.d.ts +3 -0
- package/dist/parameter-pools.js +69 -0
- package/dist/parameter-pools.js.map +1 -0
- package/dist/post-script/ast-walker/index.d.ts +18 -0
- package/dist/post-script/ast-walker/index.js +215 -0
- package/dist/post-script/ast-walker/index.js.map +1 -0
- package/dist/post-script/ast-walker/type-guard.d.ts +11 -0
- package/dist/post-script/ast-walker/type-guard.js +56 -0
- package/dist/post-script/ast-walker/type-guard.js.map +1 -0
- package/dist/post-script/ast-walker/types.d.ts +24 -0
- package/dist/post-script/ast-walker/types.js +25 -0
- package/dist/post-script/ast-walker/types.js.map +1 -0
- package/dist/post-script/console-log.d.ts +7 -0
- package/dist/post-script/console-log.js +31 -0
- package/dist/post-script/console-log.js.map +1 -0
- package/dist/post-script/parser/acorn-js-parser.d.ts +5 -0
- package/dist/post-script/parser/acorn-js-parser.js +20 -0
- package/dist/post-script/parser/acorn-js-parser.js.map +1 -0
- package/dist/post-script/parser/js-parser.d.ts +16 -0
- package/dist/post-script/parser/js-parser.js +3 -0
- package/dist/post-script/parser/js-parser.js.map +1 -0
- package/dist/post-script/parser/parser.d.ts +6 -0
- package/dist/post-script/parser/parser.js +3 -0
- package/dist/post-script/parser/parser.js.map +1 -0
- package/dist/post-script/post-script-executor.d.ts +24 -0
- package/dist/post-script/post-script-executor.js +125 -0
- package/dist/post-script/post-script-executor.js.map +1 -0
- package/dist/post-script/virtual-machine/virtual-machine.d.ts +13 -0
- package/dist/post-script/virtual-machine/virtual-machine.js +3 -0
- package/dist/post-script/virtual-machine/virtual-machine.js.map +1 -0
- package/dist/post-script/virtual-machine/vm2-virtual-machine.d.ts +12 -0
- package/dist/post-script/virtual-machine/vm2-virtual-machine.js +81 -0
- package/dist/post-script/virtual-machine/vm2-virtual-machine.js.map +1 -0
- package/dist/post-sequence.d.ts +2 -0
- package/dist/post-sequence.js +192 -0
- package/dist/post-sequence.js.map +1 -0
- package/dist/redact-data.d.ts +2 -0
- package/dist/redact-data.js +71 -0
- package/dist/redact-data.js.map +1 -0
- package/dist/report-types.d.ts +102 -0
- package/dist/report-types.js +11 -0
- package/dist/report-types.js.map +1 -0
- package/dist/request-sequence-result.d.ts +44 -0
- package/dist/request-sequence-result.js +19 -0
- package/dist/request-sequence-result.js.map +1 -0
- package/dist/request-stats.d.ts +13 -0
- package/dist/request-stats.js +14 -0
- package/dist/request-stats.js.map +1 -0
- package/dist/res-keeper.d.ts +16 -0
- package/dist/res-keeper.js +104 -0
- package/dist/res-keeper.js.map +1 -0
- package/dist/sampler.d.ts +29 -0
- package/dist/sampler.js +276 -0
- package/dist/sampler.js.map +1 -0
- package/dist/sequence.d.ts +25 -0
- package/dist/sequence.js +1502 -0
- package/dist/sequence.js.map +1 -0
- package/dist/single-runner.d.ts +22 -0
- package/dist/single-runner.js +128 -0
- package/dist/single-runner.js.map +1 -0
- package/dist/test-run-event-emitter.d.ts +11 -0
- package/dist/test-run-event-emitter.js +36 -0
- package/dist/test-run-event-emitter.js.map +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +29 -0
- package/dist/utils.js.map +1 -0
- package/dist/work.d.ts +15 -0
- package/dist/work.js +3 -0
- package/dist/work.js.map +1 -0
- package/dist/ws.d.ts +71 -0
- package/dist/ws.js +474 -0
- package/dist/ws.js.map +1 -0
- package/package.json +3 -6
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Parameters } from '@loadmill/core/dist/parameters';
|
|
2
|
+
import { Assertion } from '@loadmill/core/dist/request';
|
|
3
|
+
export declare class Asserter {
|
|
4
|
+
private parameters;
|
|
5
|
+
constructor(parameters: Parameters);
|
|
6
|
+
assert({ check, equals, notEquals, contains, notContains, matches, falsy, greater, lesser, JSONSchema, JSONContains, }: Assertion): boolean;
|
|
7
|
+
private resolve;
|
|
8
|
+
private check;
|
|
9
|
+
}
|
package/dist/asserter.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Asserter = void 0;
|
|
7
|
+
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
8
|
+
var subset_1 = require("@loadmill/core/dist/subset");
|
|
9
|
+
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
10
|
+
var Asserter = /** @class */ (function () {
|
|
11
|
+
function Asserter(parameters) {
|
|
12
|
+
Object.defineProperty(this, "parameters", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: parameters
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(Asserter.prototype, "assert", {
|
|
20
|
+
enumerable: false,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: function (_a) {
|
|
24
|
+
var check = _a.check, equals = _a.equals, notEquals = _a.notEquals, contains = _a.contains, notContains = _a.notContains, matches = _a.matches, falsy = _a.falsy, greater = _a.greater, lesser = _a.lesser, JSONSchema = _a.JSONSchema, JSONContains = _a.JSONContains;
|
|
25
|
+
var actual = parameters_1.parameterUtils.resolveParameter(check, this.parameters) || '';
|
|
26
|
+
if (contains == null &&
|
|
27
|
+
notContains == null &&
|
|
28
|
+
equals == null &&
|
|
29
|
+
notEquals == null &&
|
|
30
|
+
matches == null &&
|
|
31
|
+
greater == null &&
|
|
32
|
+
lesser == null &&
|
|
33
|
+
JSONSchema == null &&
|
|
34
|
+
JSONContains == null) {
|
|
35
|
+
// only if no other assertions exist, the target expression is to check
|
|
36
|
+
// for "truthfulness" or "falslyness"(in case falsy flag is on).
|
|
37
|
+
// Note that failed/null extractions evaluate to an empty string while
|
|
38
|
+
// other nonexistent parameters are left untouched in the resolved expression
|
|
39
|
+
var result = void 0;
|
|
40
|
+
if (falsy) {
|
|
41
|
+
result = parameters_1.valueUtils.isFalsyParameterValue(actual);
|
|
42
|
+
log_1.default.debug('Assert False:', { actual: actual, result: result });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
result = parameters_1.valueUtils.isTruthyParameterValue(actual);
|
|
46
|
+
log_1.default.debug('Assert True:', { actual: actual, result: result });
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
// short circuiting with approximate increasing complexity:
|
|
51
|
+
return (this.check(actual, checkContains, contains) ||
|
|
52
|
+
this.check(actual, checkNotContains, notContains) ||
|
|
53
|
+
this.check(actual, checkEquals, equals) ||
|
|
54
|
+
this.check(actual, checkNotEquals, notEquals) ||
|
|
55
|
+
this.check(actual, checkMatches, matches) ||
|
|
56
|
+
this.check(actual, checkGreater, greater) ||
|
|
57
|
+
this.check(actual, checkLesser, lesser) ||
|
|
58
|
+
this.check(actual, checkJSONSchema, JSONSchema) ||
|
|
59
|
+
this.check(actual, checkJSONContains, JSONContains));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(Asserter.prototype, "resolve", {
|
|
63
|
+
enumerable: false,
|
|
64
|
+
configurable: true,
|
|
65
|
+
writable: true,
|
|
66
|
+
value: function (parametrized) {
|
|
67
|
+
return parameters_1.parameterUtils.resolveExpression(parametrized, this.parameters);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(Asserter.prototype, "check", {
|
|
71
|
+
enumerable: false,
|
|
72
|
+
configurable: true,
|
|
73
|
+
writable: true,
|
|
74
|
+
value: function (actual, checker, expected) {
|
|
75
|
+
if (expected != null) {
|
|
76
|
+
var resolved = this.resolve(expected);
|
|
77
|
+
return checker(actual, resolved);
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
return Asserter;
|
|
83
|
+
}());
|
|
84
|
+
exports.Asserter = Asserter;
|
|
85
|
+
function checkMatches(actual, expected) {
|
|
86
|
+
var regExp = new RegExp(expected);
|
|
87
|
+
var result = regExp.test(actual);
|
|
88
|
+
log_1.default.debug('Assert regex:', { actual: actual, expected: expected, regExp: regExp, result: result });
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
function checkEquals(actual, expected) {
|
|
92
|
+
var result;
|
|
93
|
+
if (expected === 'null' && actual === '') {
|
|
94
|
+
result = true;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
result = actual == expected;
|
|
98
|
+
}
|
|
99
|
+
log_1.default.debug('Assert equals:', { actual: actual, expected: expected, result: result });
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
function checkNotEquals(actual, expected) {
|
|
103
|
+
var result = actual !== expected;
|
|
104
|
+
log_1.default.debug('Assert not equal:', { actual: actual, expected: expected, result: result });
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
function checkContains(actual, expected) {
|
|
108
|
+
var result = actual.includes(expected);
|
|
109
|
+
log_1.default.debug('Assert contains:', { actual: actual, expected: expected, result: result });
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
function checkNotContains(actual, expected) {
|
|
113
|
+
var result = !actual.includes(expected);
|
|
114
|
+
log_1.default.debug('Assert not contains:', { actual: actual, expected: expected, result: result });
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
function checkGreater(actual, expected) {
|
|
118
|
+
var numericActual = parseFloat(actual);
|
|
119
|
+
var numericExpected = parseFloat(expected);
|
|
120
|
+
var result = numericActual > numericExpected;
|
|
121
|
+
log_1.default.debug('Assert greater:', { actual: actual, expected: expected, result: result });
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
function checkLesser(actual, expected) {
|
|
125
|
+
var numericActual = parseFloat(actual);
|
|
126
|
+
var numericExpected = parseFloat(expected);
|
|
127
|
+
var result = numericActual < numericExpected;
|
|
128
|
+
log_1.default.debug('Assert lesser:', { actual: actual, expected: expected, result: result });
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
function checkJSONSchema(actual, expected) {
|
|
132
|
+
var result = parameters_1.parameterUtils.applyJSONSchema(actual, expected);
|
|
133
|
+
log_1.default.debug('Assert JSONSchema:', { actual: actual, expected: expected, result: result });
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
function checkJSONContains(actual, expected) {
|
|
137
|
+
var result = subset_1.isJSONContains(actual, expected);
|
|
138
|
+
log_1.default.debug('Assert JSONContains:', { actual: actual, expected: expected, result: result });
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=asserter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asserter.js","sourceRoot":"","sources":["../src/asserter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ResolvedRequest } from './request-sequence-result';
|
|
2
|
+
import { CookiesDetails } from '@loadmill/core/dist/conf/types';
|
|
3
|
+
export declare const setCookies: (httpAgent: any, cookiesList?: CookiesDetails | undefined) => void;
|
|
4
|
+
export declare const getCookies: (httpAgent: any, requests: ResolvedRequest[]) => CookiesDetails;
|
package/dist/cookies.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getCookies = exports.setCookies = void 0;
|
|
7
|
+
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
8
|
+
var lodash_1 = require("lodash");
|
|
9
|
+
var setCookies = function (httpAgent, cookiesList) {
|
|
10
|
+
if (cookiesList) {
|
|
11
|
+
for (var _i = 0, _a = Object.values(cookiesList); _i < _a.length; _i++) {
|
|
12
|
+
var cookies = _a[_i];
|
|
13
|
+
if (lodash_1.isArray(cookies)) {
|
|
14
|
+
for (var _b = 0, cookies_1 = cookies; _b < cookies_1.length; _b++) {
|
|
15
|
+
var cookieDetails = cookies_1[_b];
|
|
16
|
+
var _c = cookieDetails || {}, cookie = _c.cookie, domain = _c.domain, path = _c.path;
|
|
17
|
+
try {
|
|
18
|
+
httpAgent.jar.setCookies(cookie, domain, path);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
log_1.default.error('Failed to set cookies: ', { cookie: cookie, domain: domain, path: path, error: error });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.setCookies = setCookies;
|
|
29
|
+
var getCookies = function (httpAgent, requests) {
|
|
30
|
+
var cookiesToSend = {};
|
|
31
|
+
var _loop_1 = function (request) {
|
|
32
|
+
if (request && request.response && request.url) {
|
|
33
|
+
try {
|
|
34
|
+
var url_1 = new URL(request.url);
|
|
35
|
+
var cookies = httpAgent.jar.getCookies({
|
|
36
|
+
domain: url_1.hostname,
|
|
37
|
+
path: url_1.pathname,
|
|
38
|
+
secure: url_1.protocol.endsWith('s:')
|
|
39
|
+
});
|
|
40
|
+
if (Array.isArray(cookies)) {
|
|
41
|
+
cookies.forEach(function (cookie) {
|
|
42
|
+
var domain = cookie.domain || url_1.hostname;
|
|
43
|
+
var path = cookie.path || '/';
|
|
44
|
+
var cookieDetails = {
|
|
45
|
+
cookie: cookie.toString(),
|
|
46
|
+
domain: domain,
|
|
47
|
+
path: path
|
|
48
|
+
};
|
|
49
|
+
if (!lodash_1.isEmpty(cookiesToSend[domain + path])) {
|
|
50
|
+
if (cookieDoesNotExist(cookiesToSend[domain + path], cookieDetails)) {
|
|
51
|
+
cookiesToSend[domain + path].push(cookieDetails);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
cookiesToSend[domain + path] = [cookieDetails];
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
log_1.default.error('Failed to get a cookie from request with URL: ' + request.url, e);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
for (var _i = 0, requests_1 = requests; _i < requests_1.length; _i++) {
|
|
66
|
+
var request = requests_1[_i];
|
|
67
|
+
_loop_1(request);
|
|
68
|
+
}
|
|
69
|
+
return cookiesToSend;
|
|
70
|
+
};
|
|
71
|
+
exports.getCookies = getCookies;
|
|
72
|
+
var cookieDoesNotExist = function (cookieList, cookieDetails) {
|
|
73
|
+
return cookieList.every(function (cookie) {
|
|
74
|
+
return cookie.cookie !== cookieDetails.cookie ||
|
|
75
|
+
cookie.path !== cookieDetails.path ||
|
|
76
|
+
cookie.domain !== cookieDetails.domain;
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=cookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.js","sourceRoot":"","sources":["../src/cookies.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.RequestFailuresError = void 0;
|
|
19
|
+
var RequestFailuresError = /** @class */ (function (_super) {
|
|
20
|
+
__extends(RequestFailuresError, _super);
|
|
21
|
+
function RequestFailuresError(message, histogram) {
|
|
22
|
+
var _a;
|
|
23
|
+
if (histogram === void 0) { histogram = (_a = {}, _a[message] = 1, _a); }
|
|
24
|
+
var _this = _super.call(this, message) || this;
|
|
25
|
+
Object.defineProperty(_this, "histogram", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: histogram
|
|
30
|
+
});
|
|
31
|
+
// Workaround suggested in: https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
32
|
+
Object.setPrototypeOf(_this, RequestFailuresError.prototype);
|
|
33
|
+
return _this;
|
|
34
|
+
}
|
|
35
|
+
return RequestFailuresError;
|
|
36
|
+
}(Error));
|
|
37
|
+
exports.RequestFailuresError = RequestFailuresError;
|
|
38
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAEA;IAA0C,wCAAK;IAC7C,8BAAY,OAAe,EAAS,SAAuC;;QAAvC,0BAAA,EAAA,sBAAyB,GAAC,OAAO,IAAG,CAAC,KAAE;QAA3E,YACE,kBAAM,OAAO,CAAC,SAIf;;;;;mBALmC;;QAGlC,wKAAwK;QACxK,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;;IAC9D,CAAC;IACH,2BAAC;AAAD,CAAC,AAPD,CAA0C,KAAK,GAO9C;AAPY,oDAAoB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HeaderExtractor, CheerioExtractor, JsonPathExtractor, ExpressionExtractor, XPathExtractor } from '@loadmill/core/dist/parameters/extractors';
|
|
2
|
+
import { Parameters } from '@loadmill/core/dist/parameters';
|
|
3
|
+
import { Extraction } from '@loadmill/core/dist/request';
|
|
4
|
+
import { WSExtractionData } from '@loadmill/core/dist/parameters/extractors/ws-extractor';
|
|
5
|
+
export declare class ExtractionCombiner {
|
|
6
|
+
private contextParameters;
|
|
7
|
+
private res;
|
|
8
|
+
private wsExtractionData;
|
|
9
|
+
headerExtractor: HeaderExtractor;
|
|
10
|
+
cheerioExtractor: CheerioExtractor;
|
|
11
|
+
xmlExtractor: XPathExtractor;
|
|
12
|
+
jsonPathExtractor: JsonPathExtractor;
|
|
13
|
+
ednPathExtractor: JsonPathExtractor;
|
|
14
|
+
expressionExtractor: ExpressionExtractor;
|
|
15
|
+
constructor(contextParameters: Parameters, res: any, wsExtractionData: WSExtractionData);
|
|
16
|
+
combine(extraction: Extraction): Promise<() => string | Promise<string | undefined> | undefined>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.ExtractionCombiner = void 0;
|
|
43
|
+
var extractors_1 = require("@loadmill/core/dist/parameters/extractors");
|
|
44
|
+
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
45
|
+
var jsedn_1 = __importDefault(require("jsedn"));
|
|
46
|
+
var ExtractionCombiner = /** @class */ (function () {
|
|
47
|
+
function ExtractionCombiner(contextParameters, res, wsExtractionData) {
|
|
48
|
+
Object.defineProperty(this, "contextParameters", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
configurable: true,
|
|
51
|
+
writable: true,
|
|
52
|
+
value: contextParameters
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(this, "res", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true,
|
|
57
|
+
writable: true,
|
|
58
|
+
value: res
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(this, "wsExtractionData", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
configurable: true,
|
|
63
|
+
writable: true,
|
|
64
|
+
value: wsExtractionData
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(this, "headerExtractor", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
writable: true,
|
|
70
|
+
value: void 0
|
|
71
|
+
});
|
|
72
|
+
Object.defineProperty(this, "cheerioExtractor", {
|
|
73
|
+
enumerable: true,
|
|
74
|
+
configurable: true,
|
|
75
|
+
writable: true,
|
|
76
|
+
value: void 0
|
|
77
|
+
});
|
|
78
|
+
Object.defineProperty(this, "xmlExtractor", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
configurable: true,
|
|
81
|
+
writable: true,
|
|
82
|
+
value: void 0
|
|
83
|
+
});
|
|
84
|
+
Object.defineProperty(this, "jsonPathExtractor", {
|
|
85
|
+
enumerable: true,
|
|
86
|
+
configurable: true,
|
|
87
|
+
writable: true,
|
|
88
|
+
value: void 0
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(this, "ednPathExtractor", {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
configurable: true,
|
|
93
|
+
writable: true,
|
|
94
|
+
value: void 0
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(this, "expressionExtractor", {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
configurable: true,
|
|
99
|
+
writable: true,
|
|
100
|
+
value: void 0
|
|
101
|
+
});
|
|
102
|
+
this.headerExtractor = new extractors_1.HeaderExtractor(res, this.contextParameters);
|
|
103
|
+
this.expressionExtractor = new extractors_1.ExpressionExtractor(this.contextParameters);
|
|
104
|
+
}
|
|
105
|
+
Object.defineProperty(ExtractionCombiner.prototype, "combine", {
|
|
106
|
+
enumerable: false,
|
|
107
|
+
configurable: true,
|
|
108
|
+
writable: true,
|
|
109
|
+
value: function (extraction) {
|
|
110
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
111
|
+
var query, extractor, header, jQuery, xPath, jsonPath, edn, regex, ws, converted;
|
|
112
|
+
var _this = this;
|
|
113
|
+
return __generator(this, function (_a) {
|
|
114
|
+
if (typeof extraction === 'string') {
|
|
115
|
+
query = extraction;
|
|
116
|
+
extractor = this.expressionExtractor;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
header = extraction.header, jQuery = extraction.jQuery, xPath = extraction.xPath, jsonPath = extraction.jsonPath, edn = extraction.edn, regex = extraction.regex, ws = extraction.ws;
|
|
120
|
+
if (header != null) {
|
|
121
|
+
query = header;
|
|
122
|
+
extractor = this.headerExtractor;
|
|
123
|
+
}
|
|
124
|
+
else if (jQuery != null) {
|
|
125
|
+
if (!this.cheerioExtractor) {
|
|
126
|
+
this.cheerioExtractor = new extractors_1.CheerioExtractor(this.res.text, this.contextParameters);
|
|
127
|
+
}
|
|
128
|
+
query =
|
|
129
|
+
typeof jQuery === 'string'
|
|
130
|
+
? jQuery
|
|
131
|
+
: [jQuery.query, '0', jQuery.attr || ''];
|
|
132
|
+
extractor = this.cheerioExtractor;
|
|
133
|
+
}
|
|
134
|
+
else if (xPath != null) {
|
|
135
|
+
if (!this.xmlExtractor) {
|
|
136
|
+
this.xmlExtractor = new extractors_1.XPathExtractor(this.res.text, this.contextParameters);
|
|
137
|
+
}
|
|
138
|
+
query = xPath;
|
|
139
|
+
extractor = this.xmlExtractor;
|
|
140
|
+
}
|
|
141
|
+
else if (jsonPath != null) {
|
|
142
|
+
if (!this.jsonPathExtractor) {
|
|
143
|
+
this.jsonPathExtractor = new extractors_1.JsonPathExtractor(this.res.text, this.contextParameters);
|
|
144
|
+
}
|
|
145
|
+
query = jsonPath;
|
|
146
|
+
extractor = this.jsonPathExtractor;
|
|
147
|
+
}
|
|
148
|
+
else if (edn != null) {
|
|
149
|
+
if (!this.ednPathExtractor) {
|
|
150
|
+
converted = '';
|
|
151
|
+
try {
|
|
152
|
+
converted = JSON.stringify(jsedn_1.default.toJS(jsedn_1.default.parse(this.res.text)));
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
log_1.default.error(e); // just log. The error will shown later because we send '' to JsonPathExtractor
|
|
156
|
+
}
|
|
157
|
+
this.ednPathExtractor = new extractors_1.JsonPathExtractor(converted, this.contextParameters);
|
|
158
|
+
}
|
|
159
|
+
query = edn;
|
|
160
|
+
extractor = this.ednPathExtractor;
|
|
161
|
+
}
|
|
162
|
+
if (regex != null) {
|
|
163
|
+
extractor = new extractors_1.RegexExtractor(extractor ? wrap(extractor, query) : function () { return _this.res.text; }, this.contextParameters);
|
|
164
|
+
query = regex;
|
|
165
|
+
}
|
|
166
|
+
if (ws != null) {
|
|
167
|
+
extractor = new extractors_1.WsExtractor(this.wsExtractionData, this.contextParameters);
|
|
168
|
+
query = ws;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return [2 /*return*/, function () { return extractor.extract(query); }];
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
return ExtractionCombiner;
|
|
177
|
+
}());
|
|
178
|
+
exports.ExtractionCombiner = ExtractionCombiner;
|
|
179
|
+
function wrap(extractor, query) {
|
|
180
|
+
return function () { return extractor.extract(query); };
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=extraction-combiner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction-combiner.js","sourceRoot":"","sources":["../src/extraction-combiner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function OneFailure(histogram: Histogram): RequestFailures;
|
|
2
|
+
export declare function mergeFailures(to: Failures, from: Failures): void;
|
|
3
|
+
export declare function getFailureKeys(failures?: Failures): string[];
|
|
4
|
+
export declare function getFailureKey(reqIndex: string | number, reason: string): string;
|
|
5
|
+
export interface Failures {
|
|
6
|
+
[index: number]: RequestFailures;
|
|
7
|
+
}
|
|
8
|
+
export interface RequestFailures {
|
|
9
|
+
/**
|
|
10
|
+
* Counts the number of times the request has failed.
|
|
11
|
+
*/
|
|
12
|
+
numFailures: number;
|
|
13
|
+
/**
|
|
14
|
+
* Maps each failure reason (an error message or assertion name) to the
|
|
15
|
+
* [positive] number of times the request has failed because of it.
|
|
16
|
+
*
|
|
17
|
+
* Note that these may sum up to more than `numFailures`!
|
|
18
|
+
* This happens when multiple assertions fail for the same request.
|
|
19
|
+
*/
|
|
20
|
+
histogram: Histogram;
|
|
21
|
+
}
|
|
22
|
+
export declare type Histogram = {
|
|
23
|
+
[reason: string]: number;
|
|
24
|
+
};
|
package/dist/failures.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getFailureKey = exports.getFailureKeys = exports.mergeFailures = exports.OneFailure = void 0;
|
|
15
|
+
function OneFailure(histogram) {
|
|
16
|
+
return {
|
|
17
|
+
histogram: histogram,
|
|
18
|
+
numFailures: 1,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
exports.OneFailure = OneFailure;
|
|
22
|
+
function mergeFailures(to, from) {
|
|
23
|
+
Object.keys(from).forEach(function (index) {
|
|
24
|
+
var fromReqFailures = from[index];
|
|
25
|
+
var toReqFailures = to[index];
|
|
26
|
+
if (toReqFailures == null) {
|
|
27
|
+
to[index] = {
|
|
28
|
+
numFailures: fromReqFailures.numFailures,
|
|
29
|
+
histogram: __assign({}, fromReqFailures.histogram),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
mergeRequestFailures(toReqFailures, fromReqFailures);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.mergeFailures = mergeFailures;
|
|
38
|
+
function mergeRequestFailures(to, from) {
|
|
39
|
+
to.numFailures += from.numFailures;
|
|
40
|
+
mergeHistograms(to.histogram, from.histogram);
|
|
41
|
+
}
|
|
42
|
+
function mergeHistograms(to, from) {
|
|
43
|
+
Object.keys(from).forEach(function (reason) {
|
|
44
|
+
var fromCount = from[reason];
|
|
45
|
+
var toCount = to[reason];
|
|
46
|
+
if (toCount != null) {
|
|
47
|
+
to[reason] = toCount + fromCount;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
to[reason] = fromCount;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function getFailureKeys(failures) {
|
|
55
|
+
var safeFailures = failures || {};
|
|
56
|
+
return Object.keys(safeFailures).map(function (reqIndex) {
|
|
57
|
+
return Object.keys(safeFailures[reqIndex].histogram).map(function (reason) {
|
|
58
|
+
return getFailureKey(reqIndex, reason);
|
|
59
|
+
});
|
|
60
|
+
}).reduce(function (a, b) { return a.concat(b); }, []);
|
|
61
|
+
}
|
|
62
|
+
exports.getFailureKeys = getFailureKeys;
|
|
63
|
+
function getFailureKey(reqIndex, reason) {
|
|
64
|
+
return reqIndex + "," + reason;
|
|
65
|
+
}
|
|
66
|
+
exports.getFailureKey = getFailureKey;
|
|
67
|
+
//# sourceMappingURL=failures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failures.js","sourceRoot":"","sources":["../src/failures.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,SAAgB,UAAU,CAAC,SAAoB;IAC7C,OAAO;QACL,SAAS,WAAA;QACT,WAAW,EAAE,CAAC;KACf,CAAC;AACJ,CAAC;AALD,gCAKC;AAED,SAAgB,aAAa,CAAC,EAAY,EAAE,IAAc;IACxD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;QAC7B,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAM,aAAa,GAAG,EAAE,CAAC,KAAM,CAAC,CAAC;QAEjC,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,EAAE,CAAC,KAAM,CAAC,GAAG;gBACX,WAAW,EAAE,eAAe,CAAC,WAAW;gBACxC,SAAS,eAAO,eAAe,CAAC,SAAS,CAAE;aAC5C,CAAC;SACH;aAAM;YACL,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;SACtD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAdD,sCAcC;AAED,SAAS,oBAAoB,CAC3B,EAAmB,EACnB,IAAqB;IAErB,EAAE,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;IACnC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,EAAa,EAAE,IAAe;IACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;QAC9B,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAM,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,OAAO,IAAI,IAAI,EAAE;YACnB,EAAE,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,SAAS,CAAC;SAClC;aAAM;YACL,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,QAAmB;IAChD,IAAM,YAAY,GAAG,QAAQ,IAAI,EAAE,CAAC;IAEpC,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,QAAQ;QAC3C,OAAA,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAA,MAAM;YACtD,OAAA,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAA/B,CAA+B,CAChC;IAFD,CAEC,CACF,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAX,CAAW,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AARD,wCAQC;AAED,SAAgB,aAAa,CAAC,QAAyB,EAAE,MAAc;IACrE,OAAU,QAAQ,SAAI,MAAQ,CAAC;AACjC,CAAC;AAFD,sCAEC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.calcIterationDuration = void 0;
|
|
7
|
+
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
8
|
+
var findLast_1 = __importDefault(require("lodash/findLast"));
|
|
9
|
+
var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
|
10
|
+
var calcIterationDuration = function (iterationRes) {
|
|
11
|
+
var iterationStartTime = _getIterationStartTime(iterationRes);
|
|
12
|
+
var iterationEndTime = _getIterationEndTime(iterationRes);
|
|
13
|
+
var iterationDuration = iterationEndTime ? iterationEndTime - iterationStartTime : 0;
|
|
14
|
+
return iterationDuration;
|
|
15
|
+
};
|
|
16
|
+
exports.calcIterationDuration = calcIterationDuration;
|
|
17
|
+
var _getIterationStartTime = function (iterationRes) {
|
|
18
|
+
var _a;
|
|
19
|
+
var firstResolvedRequest = (_a = iterationRes.resolvedRequests) === null || _a === void 0 ? void 0 : _a.find(function (rr) { return !isEmpty_1.default(rr.postParameters); });
|
|
20
|
+
return firstResolvedRequest ? _getRequestsStartTime(firstResolvedRequest) : 0;
|
|
21
|
+
};
|
|
22
|
+
var _getRequestsStartTime = function (request) {
|
|
23
|
+
return _getReqStartOrEndTime(request, parameters_1.BUILT_IN_PARAMS.requestStartTime);
|
|
24
|
+
};
|
|
25
|
+
var _getIterationEndTime = function (iterationRes) {
|
|
26
|
+
var lastResolvedRequest = findLast_1.default(iterationRes.resolvedRequests, function (rr) { return !isEmpty_1.default(rr.postParameters); });
|
|
27
|
+
return lastResolvedRequest ? _getRequestsEndTime(lastResolvedRequest) : 0;
|
|
28
|
+
};
|
|
29
|
+
var _getRequestsEndTime = function (request) {
|
|
30
|
+
return _getReqStartOrEndTime(request, parameters_1.BUILT_IN_PARAMS.responseEndTime);
|
|
31
|
+
};
|
|
32
|
+
var _getReqStartOrEndTime = function (request, paramName) {
|
|
33
|
+
var _a;
|
|
34
|
+
var param = (_a = request.postParameters) === null || _a === void 0 ? void 0 : _a.find(function (p) { return p[paramName]; });
|
|
35
|
+
var paramVal = param === null || param === void 0 ? void 0 : param[paramName];
|
|
36
|
+
return Number(paramVal) || 0;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=iteration-stats.js.map
|