@loadmill/executer 0.1.143 → 0.1.145
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/post-script/post-script-executor.js +6 -2
- package/dist/post-script/post-script-executor.js.map +1 -1
- package/dist/redact-data.js +1 -1
- package/dist/redact-data.js.map +1 -1
- package/dist/request-stats.d.ts +2 -1
- package/dist/request-stats.js +4 -4
- package/dist/request-stats.js.map +1 -1
- package/dist/sampler.js +2 -1
- package/dist/sampler.js.map +1 -1
- package/dist/sequence.js +9 -5
- package/dist/sequence.js.map +1 -1
- package/package.json +3 -3
- package/dist/post-script/ast-walker/index.d.ts +0 -18
- package/dist/post-script/ast-walker/index.js +0 -215
- package/dist/post-script/ast-walker/index.js.map +0 -1
- package/dist/post-script/ast-walker/type-guard.d.ts +0 -11
- package/dist/post-script/ast-walker/type-guard.js +0 -56
- package/dist/post-script/ast-walker/type-guard.js.map +0 -1
- package/dist/post-script/ast-walker/types.d.ts +0 -24
- package/dist/post-script/ast-walker/types.js +0 -25
- package/dist/post-script/ast-walker/types.js.map +0 -1
- package/dist/post-script/parser/acorn-js-parser.d.ts +0 -5
- package/dist/post-script/parser/acorn-js-parser.js +0 -20
- package/dist/post-script/parser/acorn-js-parser.js.map +0 -1
- package/dist/post-script/parser/js-parser.d.ts +0 -16
- package/dist/post-script/parser/js-parser.js +0 -3
- package/dist/post-script/parser/js-parser.js.map +0 -1
- package/dist/post-script/parser/parser.d.ts +0 -6
- package/dist/post-script/parser/parser.js +0 -3
- package/dist/post-script/parser/parser.js.map +0 -1
- package/package/dist/asserter.d.ts +0 -9
- package/package/dist/asserter.js +0 -158
- package/package/dist/asserter.js.map +0 -1
- package/package/dist/constants.d.ts +0 -7
- package/package/dist/constants.js +0 -13
- package/package/dist/constants.js.map +0 -1
- package/package/dist/cookies.d.ts +0 -4
- package/package/dist/cookies.js +0 -79
- package/package/dist/cookies.js.map +0 -1
- package/package/dist/errors.d.ts +0 -5
- package/package/dist/errors.js +0 -38
- package/package/dist/errors.js.map +0 -1
- package/package/dist/extraction-combiner.d.ts +0 -17
- package/package/dist/extraction-combiner.js +0 -182
- package/package/dist/extraction-combiner.js.map +0 -1
- package/package/dist/failures.d.ts +0 -24
- package/package/dist/failures.js +0 -67
- package/package/dist/failures.js.map +0 -1
- package/package/dist/grpc.d.ts +0 -34
- package/package/dist/grpc.js +0 -269
- package/package/dist/grpc.js.map +0 -1
- package/package/dist/iteration-stats.d.ts +0 -2
- package/package/dist/iteration-stats.js +0 -38
- package/package/dist/iteration-stats.js.map +0 -1
- package/package/dist/message-creators.d.ts +0 -31
- package/package/dist/message-creators.js +0 -90
- package/package/dist/message-creators.js.map +0 -1
- package/package/dist/mill-info.d.ts +0 -70
- package/package/dist/mill-info.js +0 -3
- package/package/dist/mill-info.js.map +0 -1
- package/package/dist/mill-version.d.ts +0 -6
- package/package/dist/mill-version.js +0 -10
- package/package/dist/mill-version.js.map +0 -1
- package/package/dist/parameter-pools.d.ts +0 -3
- package/package/dist/parameter-pools.js +0 -69
- package/package/dist/parameter-pools.js.map +0 -1
- package/package/dist/performance.d.ts +0 -1
- package/package/dist/performance.js +0 -10
- package/package/dist/performance.js.map +0 -1
- package/package/dist/post-script/ast-walker/index.d.ts +0 -18
- package/package/dist/post-script/ast-walker/index.js +0 -215
- package/package/dist/post-script/ast-walker/index.js.map +0 -1
- package/package/dist/post-script/ast-walker/type-guard.d.ts +0 -11
- package/package/dist/post-script/ast-walker/type-guard.js +0 -56
- package/package/dist/post-script/ast-walker/type-guard.js.map +0 -1
- package/package/dist/post-script/ast-walker/types.d.ts +0 -24
- package/package/dist/post-script/ast-walker/types.js +0 -25
- package/package/dist/post-script/ast-walker/types.js.map +0 -1
- package/package/dist/post-script/console-log.d.ts +0 -7
- package/package/dist/post-script/console-log.js +0 -31
- package/package/dist/post-script/console-log.js.map +0 -1
- package/package/dist/post-script/constants.d.ts +0 -4
- package/package/dist/post-script/constants.js +0 -9
- package/package/dist/post-script/constants.js.map +0 -1
- package/package/dist/post-script/parser/acorn-js-parser.d.ts +0 -5
- package/package/dist/post-script/parser/acorn-js-parser.js +0 -20
- package/package/dist/post-script/parser/acorn-js-parser.js.map +0 -1
- package/package/dist/post-script/parser/js-parser.d.ts +0 -16
- package/package/dist/post-script/parser/js-parser.js +0 -3
- package/package/dist/post-script/parser/js-parser.js.map +0 -1
- package/package/dist/post-script/parser/parser.d.ts +0 -6
- package/package/dist/post-script/parser/parser.js +0 -3
- package/package/dist/post-script/parser/parser.js.map +0 -1
- package/package/dist/post-script/post-script-executor.d.ts +0 -24
- package/package/dist/post-script/post-script-executor.js +0 -125
- package/package/dist/post-script/post-script-executor.js.map +0 -1
- package/package/dist/post-script/virtual-machine/virtual-machine.d.ts +0 -13
- package/package/dist/post-script/virtual-machine/virtual-machine.js +0 -3
- package/package/dist/post-script/virtual-machine/virtual-machine.js.map +0 -1
- package/package/dist/post-script/virtual-machine/vm2-virtual-machine.d.ts +0 -12
- package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js +0 -81
- package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js.map +0 -1
- package/package/dist/post-sequence.d.ts +0 -2
- package/package/dist/post-sequence.js +0 -192
- package/package/dist/post-sequence.js.map +0 -1
- package/package/dist/redact-data.d.ts +0 -2
- package/package/dist/redact-data.js +0 -60
- package/package/dist/redact-data.js.map +0 -1
- package/package/dist/report-types.d.ts +0 -102
- package/package/dist/report-types.js +0 -11
- package/package/dist/report-types.js.map +0 -1
- package/package/dist/request-sequence-result.d.ts +0 -37
- package/package/dist/request-sequence-result.js +0 -19
- package/package/dist/request-sequence-result.js.map +0 -1
- package/package/dist/request-stats.d.ts +0 -13
- package/package/dist/request-stats.js +0 -14
- package/package/dist/request-stats.js.map +0 -1
- package/package/dist/res-keeper.d.ts +0 -16
- package/package/dist/res-keeper.js +0 -104
- package/package/dist/res-keeper.js.map +0 -1
- package/package/dist/sampler.d.ts +0 -29
- package/package/dist/sampler.js +0 -276
- package/package/dist/sampler.js.map +0 -1
- package/package/dist/sequence-executor-like.d.ts +0 -23
- package/package/dist/sequence-executor-like.js +0 -3
- package/package/dist/sequence-executor-like.js.map +0 -1
- package/package/dist/sequence.d.ts +0 -16
- package/package/dist/sequence.js +0 -1738
- package/package/dist/sequence.js.map +0 -1
- package/package/dist/single-runner.d.ts +0 -29
- package/package/dist/single-runner.js +0 -147
- package/package/dist/single-runner.js.map +0 -1
- package/package/dist/step-handlers/code-step-handler.d.ts +0 -12
- package/package/dist/step-handlers/code-step-handler.js +0 -93
- package/package/dist/step-handlers/code-step-handler.js.map +0 -1
- package/package/dist/step-handlers/extract-step-handler.d.ts +0 -12
- package/package/dist/step-handlers/extract-step-handler.js +0 -101
- package/package/dist/step-handlers/extract-step-handler.js.map +0 -1
- package/package/dist/step-handlers/request-step-handler.d.ts +0 -13
- package/package/dist/step-handlers/request-step-handler.js +0 -94
- package/package/dist/step-handlers/request-step-handler.js.map +0 -1
- package/package/dist/step-handlers/step-handler.d.ts +0 -11
- package/package/dist/step-handlers/step-handler.js +0 -3
- package/package/dist/step-handlers/step-handler.js.map +0 -1
- package/package/dist/test-run-event-emitter.d.ts +0 -15
- package/package/dist/test-run-event-emitter.js +0 -36
- package/package/dist/test-run-event-emitter.js.map +0 -1
- package/package/dist/types/grpc.d.ts +0 -14
- package/package/dist/types/grpc.js +0 -3
- package/package/dist/types/grpc.js.map +0 -1
- package/package/dist/utils.d.ts +0 -3
- package/package/dist/utils.js +0 -32
- package/package/dist/utils.js.map +0 -1
- package/package/dist/work.d.ts +0 -15
- package/package/dist/work.js +0 -3
- package/package/dist/work.js.map +0 -1
- package/package/dist/ws.d.ts +0 -71
- package/package/dist/ws.js +0 -474
- package/package/dist/ws.js.map +0 -1
|
@@ -1,192 +0,0 @@
|
|
|
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.publishMetrics = void 0;
|
|
43
|
-
var client_firehose_1 = require("@aws-sdk/client-firehose");
|
|
44
|
-
var client_cognito_identity_1 = require("@aws-sdk/client-cognito-identity");
|
|
45
|
-
var isEmpty_1 = __importDefault(require("lodash/isEmpty"));
|
|
46
|
-
var v4_1 = __importDefault(require("uuid/v4"));
|
|
47
|
-
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
48
|
-
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
49
|
-
var parameters_2 = require("@loadmill/core/dist/parameters");
|
|
50
|
-
var ONE_HOUR = 1000 * 60 * 60;
|
|
51
|
-
var FIREHOSE_API_VERSION = '2015-08-04'; //todo chek if need
|
|
52
|
-
var REGION = 'us-east-1';
|
|
53
|
-
var STREAM_NAME = process.env.AGENTS_PARAMS_METRICS_S3_BUCKET || 'agents-parameters-metrics';
|
|
54
|
-
var IdentityPoolId = 'us-east-1:79372411-2664-431b-aa0b-aad9f938f6e9';
|
|
55
|
-
var cognito = new client_cognito_identity_1.CognitoIdentity({ region: REGION });
|
|
56
|
-
var firehoseClient;
|
|
57
|
-
var lastFirehoseClientTimeCreation;
|
|
58
|
-
var clientIsOlderThanOneHour = function () {
|
|
59
|
-
return lastFirehoseClientTimeCreation &&
|
|
60
|
-
Date.now() - lastFirehoseClientTimeCreation > ONE_HOUR;
|
|
61
|
-
};
|
|
62
|
-
function createClient() {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
64
|
-
var identity, credentialResponse;
|
|
65
|
-
return __generator(this, function (_a) {
|
|
66
|
-
switch (_a.label) {
|
|
67
|
-
case 0:
|
|
68
|
-
log_1.default.debug('creating FirehoseClient');
|
|
69
|
-
return [4 /*yield*/, cognito.getId({ IdentityPoolId: IdentityPoolId })];
|
|
70
|
-
case 1:
|
|
71
|
-
identity = _a.sent();
|
|
72
|
-
return [4 /*yield*/, cognito.getCredentialsForIdentity({ IdentityId: identity.IdentityId })];
|
|
73
|
-
case 2:
|
|
74
|
-
credentialResponse = _a.sent();
|
|
75
|
-
firehoseClient = new client_firehose_1.FirehoseClient({
|
|
76
|
-
region: REGION,
|
|
77
|
-
apiVersion: FIREHOSE_API_VERSION,
|
|
78
|
-
credentials: {
|
|
79
|
-
accessKeyId: credentialResponse.Credentials.AccessKeyId,
|
|
80
|
-
secretAccessKey: credentialResponse.Credentials.SecretKey,
|
|
81
|
-
sessionToken: credentialResponse.Credentials.SessionToken,
|
|
82
|
-
expiration: credentialResponse.Credentials.Expiration
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
lastFirehoseClientTimeCreation = Date.now();
|
|
86
|
-
return [2 /*return*/, firehoseClient];
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
var getFirehoseClient = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
92
|
-
return __generator(this, function (_a) {
|
|
93
|
-
switch (_a.label) {
|
|
94
|
-
case 0:
|
|
95
|
-
if (firehoseClient && (!clientIsOlderThanOneHour())) {
|
|
96
|
-
return [2 /*return*/, firehoseClient];
|
|
97
|
-
}
|
|
98
|
-
return [4 /*yield*/, createClient()];
|
|
99
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}); };
|
|
103
|
-
var sendMetrics = function (metrics) { return __awaiter(void 0, void 0, void 0, function () {
|
|
104
|
-
var command, client, err_1;
|
|
105
|
-
return __generator(this, function (_a) {
|
|
106
|
-
switch (_a.label) {
|
|
107
|
-
case 0:
|
|
108
|
-
_a.trys.push([0, 3, , 4]);
|
|
109
|
-
if (!metrics || isEmpty_1.default(metrics)) {
|
|
110
|
-
return [2 /*return*/];
|
|
111
|
-
}
|
|
112
|
-
log_1.default.debug('Sending metrics to AWS Firhose');
|
|
113
|
-
command = new client_firehose_1.PutRecordBatchCommand({
|
|
114
|
-
Records: metrics,
|
|
115
|
-
DeliveryStreamName: STREAM_NAME
|
|
116
|
-
});
|
|
117
|
-
return [4 /*yield*/, getFirehoseClient()];
|
|
118
|
-
case 1:
|
|
119
|
-
client = _a.sent();
|
|
120
|
-
return [4 /*yield*/, client.send(command)];
|
|
121
|
-
case 2:
|
|
122
|
-
_a.sent();
|
|
123
|
-
return [3 /*break*/, 4];
|
|
124
|
-
case 3:
|
|
125
|
-
err_1 = _a.sent();
|
|
126
|
-
log_1.default.error(err_1);
|
|
127
|
-
return [3 /*break*/, 4];
|
|
128
|
-
case 4: return [2 /*return*/];
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
}); };
|
|
132
|
-
var prepareMetrics = function (testId, teamId, postParameters, parametersKeysToPublish) {
|
|
133
|
-
if (parametersKeysToPublish === void 0) { parametersKeysToPublish = []; }
|
|
134
|
-
var records = [];
|
|
135
|
-
parametersKeysToPublish.forEach(function (paramName) {
|
|
136
|
-
var value = parameters_1.parameterUtils.getValueByKeyFromArr(paramName, postParameters);
|
|
137
|
-
if (!value) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
var record = {
|
|
141
|
-
key: paramName,
|
|
142
|
-
value: value,
|
|
143
|
-
};
|
|
144
|
-
records.push(record);
|
|
145
|
-
});
|
|
146
|
-
var recordsGroup = {
|
|
147
|
-
id: v4_1.default(),
|
|
148
|
-
testId: testId,
|
|
149
|
-
teamId: teamId,
|
|
150
|
-
publishedAt: Date.now(),
|
|
151
|
-
records: records,
|
|
152
|
-
};
|
|
153
|
-
if (isEmpty_1.default(records)) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
var enc = new TextEncoder(); // always utf-8
|
|
157
|
-
var encodedRecords = enc.encode(JSON.stringify(recordsGroup) + "\n");
|
|
158
|
-
return [{ Data: encodedRecords }];
|
|
159
|
-
};
|
|
160
|
-
var publishMetrics = function (postParameters, parametersKeysToPublish) { return __awaiter(void 0, void 0, void 0, function () {
|
|
161
|
-
var testId, teamId, e_1;
|
|
162
|
-
return __generator(this, function (_a) {
|
|
163
|
-
switch (_a.label) {
|
|
164
|
-
case 0:
|
|
165
|
-
_a.trys.push([0, 2, , 3]);
|
|
166
|
-
if (isEmpty_1.default(postParameters) || isEmpty_1.default(parametersKeysToPublish)) {
|
|
167
|
-
return [2 /*return*/];
|
|
168
|
-
}
|
|
169
|
-
testId = parameters_1.parameterUtils.getValueByKeyFromArr(parameters_2.BUILT_IN_PARAMS.testRunId, postParameters);
|
|
170
|
-
if (!testId) { // very weird if happened
|
|
171
|
-
log_1.default.debug('Test has ended without a testId parameter');
|
|
172
|
-
return [2 /*return*/];
|
|
173
|
-
}
|
|
174
|
-
teamId = parameters_1.parameterUtils.getValueByKeyFromArr(parameters_2.BUILT_IN_PARAMS.launchedByTeamId, postParameters);
|
|
175
|
-
if (!teamId) { // very weird if happened
|
|
176
|
-
log_1.default.debug('Test has ended without a testId parameter');
|
|
177
|
-
return [2 /*return*/];
|
|
178
|
-
}
|
|
179
|
-
return [4 /*yield*/, sendMetrics(prepareMetrics(testId, teamId, postParameters, parametersKeysToPublish))];
|
|
180
|
-
case 1:
|
|
181
|
-
_a.sent();
|
|
182
|
-
return [3 /*break*/, 3];
|
|
183
|
-
case 2:
|
|
184
|
-
e_1 = _a.sent();
|
|
185
|
-
log_1.default.error('Failed publish metrics at the end of test', { postParameters: postParameters, parametersKeysToPublish: parametersKeysToPublish }, e_1);
|
|
186
|
-
return [3 /*break*/, 3];
|
|
187
|
-
case 3: return [2 /*return*/];
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
}); };
|
|
191
|
-
exports.publishMetrics = publishMetrics;
|
|
192
|
-
//# sourceMappingURL=post-sequence.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-sequence.js","sourceRoot":"","sources":["../src/post-sequence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
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.redactSensitiveData = void 0;
|
|
7
|
-
var parameters_1 = require("@loadmill/core/dist/parameters");
|
|
8
|
-
var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
|
|
9
|
-
var jsonpath_1 = __importDefault(require("jsonpath"));
|
|
10
|
-
var lodash_1 = require("lodash");
|
|
11
|
-
var qs_1 = __importDefault(require("qs"));
|
|
12
|
-
var utils_1 = require("./utils");
|
|
13
|
-
var BODY_DATA_REDACTED = 'Body Data Redacted';
|
|
14
|
-
function redactSensitiveData(resolvedRequests, sensitiveKeys) {
|
|
15
|
-
if (sensitiveKeys === void 0) { sensitiveKeys = []; }
|
|
16
|
-
resolvedRequests.forEach(function (rr) {
|
|
17
|
-
var _a, _b;
|
|
18
|
-
if ((_a = rr.postData) === null || _a === void 0 ? void 0 : _a.text) {
|
|
19
|
-
rr.postData.text = !lodash_1.isEmpty(sensitiveKeys) ? redactKeysFromBody(sensitiveKeys, rr.postData.text, rr.postData.mimeType) : BODY_DATA_REDACTED;
|
|
20
|
-
}
|
|
21
|
-
if ((_b = rr.response) === null || _b === void 0 ? void 0 : _b.text) {
|
|
22
|
-
rr.response.text = !lodash_1.isEmpty(sensitiveKeys) ? redactKeysFromBody(sensitiveKeys, rr.response.text, rr.response.type) : BODY_DATA_REDACTED;
|
|
23
|
-
}
|
|
24
|
-
if (rr.postParameters) {
|
|
25
|
-
parameters_1.redactPostParameters(rr.postParameters, sensitiveKeys);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
exports.redactSensitiveData = redactSensitiveData;
|
|
30
|
-
function redactKeysFromBody(sensitiveKeys, text, mimeType) {
|
|
31
|
-
try {
|
|
32
|
-
if (typeof text != 'string' || utils_1.hasBeenTrimmed(text)) {
|
|
33
|
-
return BODY_DATA_REDACTED;
|
|
34
|
-
}
|
|
35
|
-
if (mimeType === null || mimeType === void 0 ? void 0 : mimeType.startsWith('application/x-www-form-urlencoded')) {
|
|
36
|
-
var params = qs_1.default.parse(text);
|
|
37
|
-
redactKeysFromJson(params, sensitiveKeys);
|
|
38
|
-
return qs_1.default.stringify(params);
|
|
39
|
-
}
|
|
40
|
-
else if (mimeType === null || mimeType === void 0 ? void 0 : mimeType.includes('application/json')) {
|
|
41
|
-
var json = JSON.parse(text);
|
|
42
|
-
if (!json) {
|
|
43
|
-
return text;
|
|
44
|
-
}
|
|
45
|
-
redactKeysFromJson(json, sensitiveKeys);
|
|
46
|
-
return JSON.stringify(json);
|
|
47
|
-
}
|
|
48
|
-
return text;
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
log_1.default.error('Failed to redact request / response body', e);
|
|
52
|
-
return BODY_DATA_REDACTED;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function redactKeysFromJson(json, sensitiveKeys) {
|
|
56
|
-
sensitiveKeys.forEach(function (key) {
|
|
57
|
-
jsonpath_1.default.apply(json, "$.." + key, function (_value) { return parameters_1.DATA_REDACTED; });
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=redact-data.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"redact-data.js","sourceRoot":"","sources":["../src/redact-data.ts"],"names":[],"mappings":";;;;;;AAAA,6DAAqF;AACrF,qEAA+C;AAC/C,sDAAgC;AAChC,iCAAiC;AACjC,0CAAoB;AAEpB,iCAAyC;AAEzC,IAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,SAAgB,mBAAmB,CAAC,gBAAmC,EAAE,aAA4B;IAA5B,8BAAA,EAAA,kBAA4B;IACnG,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE;;QACzB,IAAI,MAAA,EAAE,CAAC,QAAQ,0CAAE,IAAI,EAAE;YACrB,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,gBAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;SAC7I;QACD,IAAI,MAAA,EAAE,CAAC,QAAQ,0CAAE,IAAI,EAAE;YACrB,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,gBAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;SACzI;QACD,IAAI,EAAE,CAAC,cAAc,EAAE;YACrB,iCAAoB,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;SACxD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,kDAYC;AAED,SAAS,kBAAkB,CAAC,aAAuB,EAAE,IAAa,EAAE,QAAiB;IACnF,IAAI;QAEF,IAAI,OAAO,IAAI,IAAI,QAAQ,IAAI,sBAAc,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,kBAAkB,CAAC;SAC3B;QAED,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,mCAAmC,CAAC,EAAE;YAC7D,IAAM,MAAM,GAAG,YAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC1C,OAAO,YAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC7B;aAAM,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE;YACjD,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,IAAI,CAAC;aACb;YACD,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,aAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,CAAC,CAAC,CAAC;QACzD,OAAO,kBAAkB,CAAC;KAC3B;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAS,EAAE,aAAuB;IAC5D,aAAa,CAAC,OAAO,CAAC,UAAA,GAAG;QACvB,kBAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,QAAM,GAAK,EAAE,UAAC,MAAM,IAAK,OAAA,0BAAa,EAAb,CAAa,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Failures } from './failures';
|
|
2
|
-
import { MillInfo } from './mill-info';
|
|
3
|
-
import { PerRequestResTime, PerRequestStats } from './request-stats';
|
|
4
|
-
export declare type LoadResult = 'done' | 'aborted' | 'failed';
|
|
5
|
-
/**
|
|
6
|
-
* This report contains all the info that comes from Redis each time there is a status update.
|
|
7
|
-
*/
|
|
8
|
-
export interface LoadStatusReport extends AggregatedStatsReport {
|
|
9
|
-
endTime?: number;
|
|
10
|
-
startTime?: number;
|
|
11
|
-
result?: LoadResult;
|
|
12
|
-
activeSessions?: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* This report contains all the aggregated stats computed from individual mill reports.
|
|
16
|
-
*/
|
|
17
|
-
export interface AggregatedStatsReport extends BasicStatsReport {
|
|
18
|
-
/**
|
|
19
|
-
* The number of separate sessions / mills that sent at least one report.
|
|
20
|
-
*/
|
|
21
|
-
reportedSessions?: number;
|
|
22
|
-
append?: boolean;
|
|
23
|
-
failures?: Failures;
|
|
24
|
-
browserStatsMap?: StatsMap;
|
|
25
|
-
locationStatsMap?: StatsMap;
|
|
26
|
-
serverMetrics?: ServerMetrics;
|
|
27
|
-
avgResTimeSequence?: SequenceObj;
|
|
28
|
-
requestStats?: PerRequestResTime;
|
|
29
|
-
failureReportsMap?: HashKeysToReportIds;
|
|
30
|
-
avgIterationTimeSequence?: SequenceObj;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* A mapping that aggregates stats according to a certain feature, e.g. stats per browser version.
|
|
34
|
-
*/
|
|
35
|
-
export interface StatsMap {
|
|
36
|
-
[feature: string]: BasicStatsReport & {
|
|
37
|
-
sessions: number;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* A sequence of stats (currently only the average response time) reported within a certain
|
|
42
|
-
* interval (between `firstTime` and `lastTime`).
|
|
43
|
-
*/
|
|
44
|
-
export interface SequenceObj {
|
|
45
|
-
append?: boolean;
|
|
46
|
-
sequence: ClientMetrics;
|
|
47
|
-
}
|
|
48
|
-
export declare type ClientMetrics = ClientMetricsClump[];
|
|
49
|
-
export declare type ClientMetricsClump = {
|
|
50
|
-
s?: number;
|
|
51
|
-
f?: number;
|
|
52
|
-
avg: number;
|
|
53
|
-
time: number;
|
|
54
|
-
p50?: number;
|
|
55
|
-
p95?: number;
|
|
56
|
-
weight: number;
|
|
57
|
-
concurrency: number;
|
|
58
|
-
};
|
|
59
|
-
export declare type ServerMetrics = ServerMetricsClump[];
|
|
60
|
-
export declare type ServerMetricsClump = {
|
|
61
|
-
_t: number;
|
|
62
|
-
uc?: number;
|
|
63
|
-
tc?: number;
|
|
64
|
-
tm?: number;
|
|
65
|
-
hm?: number;
|
|
66
|
-
uhm?: number;
|
|
67
|
-
};
|
|
68
|
-
export declare type HashKeysToReportIds = {
|
|
69
|
-
[hashKey: string]: string;
|
|
70
|
-
};
|
|
71
|
-
/**
|
|
72
|
-
* This is the report sent to Redis every time a mill report is received.
|
|
73
|
-
*/
|
|
74
|
-
export declare type ToStoreStatsReport = StatsReportWithMillInfo & {
|
|
75
|
-
timestamp: number;
|
|
76
|
-
firstReport: boolean;
|
|
77
|
-
};
|
|
78
|
-
/**
|
|
79
|
-
* This report includes a single mill stats report along with additional meta data.
|
|
80
|
-
*/
|
|
81
|
-
export declare type StatsReportWithMillInfo = FromMillStatsReport & MillInfo & {
|
|
82
|
-
lordId: string;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* The stats report sent by the mill.
|
|
86
|
-
*/
|
|
87
|
-
export interface FromMillStatsReport extends BasicStatsReport {
|
|
88
|
-
failures?: Failures;
|
|
89
|
-
requestStats?: PerRequestStats;
|
|
90
|
-
iterationTimes?: number[];
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* The basic stats we are usually interested in.
|
|
94
|
-
*/
|
|
95
|
-
export interface BasicStatsReport {
|
|
96
|
-
hits?: number;
|
|
97
|
-
avgResTime?: number;
|
|
98
|
-
failedIterations?: number;
|
|
99
|
-
successfulIterations?: number;
|
|
100
|
-
avgIterationTime?: number;
|
|
101
|
-
}
|
|
102
|
-
export declare function isInformative({ hits, avgResTime, failedIterations, successfulIterations, }: FromMillStatsReport): boolean | 0 | undefined;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isInformative = void 0;
|
|
4
|
-
function isInformative(_a) {
|
|
5
|
-
var hits = _a.hits, avgResTime = _a.avgResTime, failedIterations = _a.failedIterations, successfulIterations = _a.successfulIterations;
|
|
6
|
-
return ((hits && hits > 0 && avgResTime != null && avgResTime >= 0) ||
|
|
7
|
-
(failedIterations && failedIterations > 0) ||
|
|
8
|
-
(successfulIterations && successfulIterations > 0));
|
|
9
|
-
}
|
|
10
|
-
exports.isInformative = isInformative;
|
|
11
|
-
//# sourceMappingURL=report-types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"report-types.js","sourceRoot":"","sources":["../src/report-types.ts"],"names":[],"mappings":";;;AAsHA,SAAgB,aAAa,CAAC,EAKR;QAJpB,IAAI,UAAA,EACJ,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,oBAAoB,0BAAA;IAEpB,OAAO,CACL,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;QAC3D,CAAC,gBAAgB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAC1C,CAAC,oBAAoB,IAAI,oBAAoB,GAAG,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC;AAXD,sCAWC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Failures } from './failures';
|
|
2
|
-
import { PerRequestStats } from './request-stats';
|
|
3
|
-
import { GRPC, LoadmillHeaders, PostFormData, RequestPostData } from '@loadmill/core/dist/request';
|
|
4
|
-
import { CookiesDetails } from '@loadmill/core/dist/conf/types';
|
|
5
|
-
import { ResolvedStep } from '@loadmill/core/dist/step';
|
|
6
|
-
import { Step } from '@loadmill/core/dist/step/step-type';
|
|
7
|
-
export declare function extendSequenceResult(result: RequestSequenceResult, requests: Step[]): ExtendedSequenceResult;
|
|
8
|
-
export interface ExtendedSequenceResult extends RequestSequenceResult {
|
|
9
|
-
resolvedRequests: ExtendedRequest[];
|
|
10
|
-
err?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface RequestSequenceResult {
|
|
13
|
-
failures: Failures;
|
|
14
|
-
evaluatingFailures?: Failures;
|
|
15
|
-
avgResTime: number;
|
|
16
|
-
successfulHits: number;
|
|
17
|
-
lastStartedIndex: number;
|
|
18
|
-
requestStats: PerRequestStats;
|
|
19
|
-
resolvedRequests: ResolvedStep[];
|
|
20
|
-
cookies?: CookiesDetails;
|
|
21
|
-
}
|
|
22
|
-
export declare type ExtendedRequest = Step & ResolvedRequest;
|
|
23
|
-
export interface ResolvedRequest extends ResolvedStep {
|
|
24
|
-
url?: string;
|
|
25
|
-
headers?: LoadmillHeaders[];
|
|
26
|
-
postData?: RequestPostData;
|
|
27
|
-
postFormData?: PostFormData;
|
|
28
|
-
grpc?: GRPC;
|
|
29
|
-
response?: RequestResponse;
|
|
30
|
-
}
|
|
31
|
-
export interface RequestResponse {
|
|
32
|
-
type: string;
|
|
33
|
-
text: string;
|
|
34
|
-
status: number;
|
|
35
|
-
statusText: string;
|
|
36
|
-
headers: LoadmillHeaders[];
|
|
37
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
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.extendSequenceResult = void 0;
|
|
15
|
-
function extendSequenceResult(result, requests) {
|
|
16
|
-
return __assign(__assign({}, result), { resolvedRequests: requests.map(function (request, index) { return (__assign(__assign({}, request), result.resolvedRequests[index])); }) });
|
|
17
|
-
}
|
|
18
|
-
exports.extendSequenceResult = extendSequenceResult;
|
|
19
|
-
//# sourceMappingURL=request-sequence-result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-sequence-result.js","sourceRoot":"","sources":["../src/request-sequence-result.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAYA,SAAgB,oBAAoB,CAClC,MAA6B,EAC7B,QAAgB;IAEhB,6BACK,MAAM,KACT,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO,EAAE,KAAa,IAAK,OAAA,uBACtD,OAAO,GACP,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EACjC,EAHyD,CAGzD,CAAC,IACH;AACJ,CAAC;AAXD,oDAWC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface PerRequestStats {
|
|
2
|
-
[index: number]: RequestStats;
|
|
3
|
-
}
|
|
4
|
-
export interface RequestStats {
|
|
5
|
-
resTimes: number[];
|
|
6
|
-
}
|
|
7
|
-
export interface PerRequestResTime {
|
|
8
|
-
[index: number]: {
|
|
9
|
-
weight: number;
|
|
10
|
-
avg: number;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export declare function setReqStats(reqStats: PerRequestStats, index: any, ...resTimes: number[]): void;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setReqStats = void 0;
|
|
4
|
-
function setReqStats(reqStats, index) {
|
|
5
|
-
var _a;
|
|
6
|
-
var resTimes = [];
|
|
7
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
8
|
-
resTimes[_i - 2] = arguments[_i];
|
|
9
|
-
}
|
|
10
|
-
var stats = reqStats[index] || (reqStats[index] = { resTimes: [] });
|
|
11
|
-
(_a = stats.resTimes).push.apply(_a, resTimes);
|
|
12
|
-
}
|
|
13
|
-
exports.setReqStats = setReqStats;
|
|
14
|
-
//# sourceMappingURL=request-stats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-stats.js","sourceRoot":"","sources":["../src/request-stats.ts"],"names":[],"mappings":";;;AAYA,SAAgB,WAAW,CACzB,QAAyB,EACzB,KAAK;;IACL,kBAAqB;SAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;QAArB,iCAAqB;;IAErB,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACtE,CAAA,KAAA,KAAK,CAAC,QAAQ,CAAA,CAAC,IAAI,WAAI,QAAQ,EAAE;AACnC,CAAC;AAPD,kCAOC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { ObjectMap } from '@loadmill/universal/dist/object-map';
|
|
2
|
-
import { RequestSequenceResult } from './request-sequence-result';
|
|
3
|
-
export declare class ResKeeper {
|
|
4
|
-
private generateResultKey?;
|
|
5
|
-
knownKeysToResults: {
|
|
6
|
-
[key: string]: string;
|
|
7
|
-
};
|
|
8
|
-
results: ObjectMap<RequestSequenceResult>;
|
|
9
|
-
constructor(generateResultKey?: any);
|
|
10
|
-
getKnownKeys: () => string[];
|
|
11
|
-
mapToResultIds: (failureKeys: any) => {
|
|
12
|
-
[key: string]: string;
|
|
13
|
-
};
|
|
14
|
-
keepIfNeeded: (result: RequestSequenceResult, keepFor?: number | undefined) => void;
|
|
15
|
-
popForKeys: (failureKeys: string[], withIds?: boolean) => (RequestSequenceResult | undefined)[];
|
|
16
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.ResKeeper = void 0;
|
|
23
|
-
var object_map_1 = require("@loadmill/universal/dist/object-map");
|
|
24
|
-
var promiseUtils = __importStar(require("@loadmill/universal/dist/promise-utils"));
|
|
25
|
-
var failures_1 = require("./failures");
|
|
26
|
-
var ResKeeper = /** @class */ (function () {
|
|
27
|
-
function ResKeeper(generateResultKey) {
|
|
28
|
-
var _this = this;
|
|
29
|
-
Object.defineProperty(this, "generateResultKey", {
|
|
30
|
-
enumerable: true,
|
|
31
|
-
configurable: true,
|
|
32
|
-
writable: true,
|
|
33
|
-
value: generateResultKey
|
|
34
|
-
});
|
|
35
|
-
Object.defineProperty(this, "knownKeysToResults", {
|
|
36
|
-
enumerable: true,
|
|
37
|
-
configurable: true,
|
|
38
|
-
writable: true,
|
|
39
|
-
value: {}
|
|
40
|
-
});
|
|
41
|
-
Object.defineProperty(this, "results", {
|
|
42
|
-
enumerable: true,
|
|
43
|
-
configurable: true,
|
|
44
|
-
writable: true,
|
|
45
|
-
value: new object_map_1.ObjectMap(this.generateResultKey)
|
|
46
|
-
});
|
|
47
|
-
Object.defineProperty(this, "getKnownKeys", {
|
|
48
|
-
enumerable: true,
|
|
49
|
-
configurable: true,
|
|
50
|
-
writable: true,
|
|
51
|
-
value: function () { return Object.keys(_this.knownKeysToResults); }
|
|
52
|
-
});
|
|
53
|
-
Object.defineProperty(this, "mapToResultIds", {
|
|
54
|
-
enumerable: true,
|
|
55
|
-
configurable: true,
|
|
56
|
-
writable: true,
|
|
57
|
-
value: function (failureKeys) {
|
|
58
|
-
var map = {};
|
|
59
|
-
failureKeys.forEach(function (key) { return (map[key] = _this.knownKeysToResults[key]); });
|
|
60
|
-
return map;
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(this, "keepIfNeeded", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
configurable: true,
|
|
66
|
-
writable: true,
|
|
67
|
-
value: function (result, keepFor) {
|
|
68
|
-
var failureKeys = failures_1.getFailureKeys(result.failures);
|
|
69
|
-
if (failureKeys.find(function (key) { return !_this.knownKeysToResults[key]; })) {
|
|
70
|
-
// We keep it:
|
|
71
|
-
var id_1 = _this.results.add(result);
|
|
72
|
-
failureKeys.forEach(function (key) { return (_this.knownKeysToResults[key] = id_1); });
|
|
73
|
-
if (keepFor) {
|
|
74
|
-
promiseUtils.delay(keepFor).then(function () { return _this.results.remove(id_1); });
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
Object.defineProperty(this, "popForKeys", {
|
|
80
|
-
enumerable: true,
|
|
81
|
-
configurable: true,
|
|
82
|
-
writable: true,
|
|
83
|
-
value: function (failureKeys, withIds) {
|
|
84
|
-
if (withIds === void 0) { withIds = false; }
|
|
85
|
-
return failureKeys
|
|
86
|
-
.map(function (key) {
|
|
87
|
-
var id = _this.knownKeysToResults[key];
|
|
88
|
-
if (id) {
|
|
89
|
-
var res = _this.results.get(id);
|
|
90
|
-
_this.results.remove(id);
|
|
91
|
-
if (withIds && res) {
|
|
92
|
-
res['id'] = id;
|
|
93
|
-
}
|
|
94
|
-
return res;
|
|
95
|
-
}
|
|
96
|
-
})
|
|
97
|
-
.filter(Boolean);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
return ResKeeper;
|
|
102
|
-
}());
|
|
103
|
-
exports.ResKeeper = ResKeeper;
|
|
104
|
-
//# sourceMappingURL=res-keeper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"res-keeper.js","sourceRoot":"","sources":["../src/res-keeper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,kEAAgE;AAChE,mFAAuE;AACvE,uCAA4C;AAG5C;IAIE,mBAAoB,iBAAkB;QAAtC,iBAA0C;;;;;mBAAtB;;QAHpB;;;;mBAAgD,EAAE;WAAC;QACnD;;;;mBAAU,IAAI,sBAAS,CAAwB,IAAI,CAAC,iBAAiB,CAAC;WAAC;QAIvE;;;;mBAAe,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,kBAAkB,CAAC,EAApC,CAAoC;WAAC;QAE1D;;;;mBAAiB,UAAC,WAAW;gBAC3B,IAAM,GAAG,GAA8B,EAAE,CAAC;gBAC1C,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC;gBAExE,OAAO,GAAG,CAAC;YACb,CAAC;WAAC;QAEF;;;;mBAAe,UAAC,MAA6B,EAAE,OAAgB;gBAC7D,IAAM,WAAW,GAAG,yBAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAEpD,IAAI,WAAW,CAAC,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAA7B,CAA6B,CAAC,EAAE;oBAC5D,cAAc;oBACd,IAAM,IAAE,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpC,WAAW,CAAC,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAE,CAAC,EAAnC,CAAmC,CAAC,CAAC;oBAElE,IAAI,OAAO,EAAE;wBACX,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAM,OAAA,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAE,CAAC,EAAvB,CAAuB,CAAC,CAAC;qBACjE;iBACF;YACH,CAAC;WAAC;QAEF;;;;mBAAa,UAAC,WAAqB,EAAE,OAAe;gBAAf,wBAAA,EAAA,eAAe;gBAClD,OAAO,WAAW;qBACf,GAAG,CAAC,UAAC,GAAG;oBACP,IAAM,EAAE,GAAG,KAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;oBAExC,IAAI,EAAE,EAAE;wBACN,IAAM,GAAG,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACjC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAExB,IAAI,OAAO,IAAI,GAAG,EAAE;4BAClB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;yBAChB;wBAED,OAAO,GAAG,CAAC;qBACZ;gBACH,CAAC,CAAC;qBACD,MAAM,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;WAAC;IA1CuC,CAAC;IA2C5C,gBAAC;AAAD,CAAC,AA/CD,IA+CC;AA/CY,8BAAS"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Failures } from './failures';
|
|
2
|
-
import { PerRequestStats } from './request-stats';
|
|
3
|
-
import { Work } from './work';
|
|
4
|
-
export interface SamplerFaja {
|
|
5
|
-
cancelWork(finished: boolean): any;
|
|
6
|
-
send(obj: string): any;
|
|
7
|
-
reportIntervalId: any;
|
|
8
|
-
isStopped: boolean;
|
|
9
|
-
keeper: any;
|
|
10
|
-
}
|
|
11
|
-
export declare class Sampler {
|
|
12
|
-
private samplerMill;
|
|
13
|
-
private work;
|
|
14
|
-
avgResTime: number;
|
|
15
|
-
expired: boolean;
|
|
16
|
-
successfulHits: number;
|
|
17
|
-
failedIterations: number;
|
|
18
|
-
startedIterations: number;
|
|
19
|
-
failures: Failures;
|
|
20
|
-
successfulIterations: number;
|
|
21
|
-
requestStats: PerRequestStats;
|
|
22
|
-
avgIterationTime: number;
|
|
23
|
-
iterationTimes: number[];
|
|
24
|
-
constructor(samplerMill: SamplerFaja, work: Work);
|
|
25
|
-
startSampling: () => void;
|
|
26
|
-
runAll: () => Promise<void>;
|
|
27
|
-
isDone: () => boolean;
|
|
28
|
-
sendReport: () => void;
|
|
29
|
-
}
|