@salesforce/apex-node 6.0.0 → 6.1.0
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/lib/src/execute/executeService.js +2 -1
- package/lib/src/execute/executeService.js.map +1 -1
- package/lib/src/reporters/coverageReporter.js +6 -5
- package/lib/src/reporters/coverageReporter.js.map +1 -1
- package/lib/src/reporters/humanFormatTransform.d.ts +1 -0
- package/lib/src/reporters/humanFormatTransform.js +38 -4
- package/lib/src/reporters/humanFormatTransform.js.map +1 -1
- package/lib/src/reporters/humanReporter.js +42 -12
- package/lib/src/reporters/humanReporter.js.map +1 -1
- package/lib/src/reporters/index.d.ts +2 -1
- package/lib/src/reporters/index.js +5 -3
- package/lib/src/reporters/index.js.map +1 -1
- package/lib/src/reporters/junitFormatTransformer.d.ts +8 -1
- package/lib/src/reporters/junitFormatTransformer.js +48 -19
- package/lib/src/reporters/junitFormatTransformer.js.map +1 -1
- package/lib/src/reporters/junitReporter.js +21 -15
- package/lib/src/reporters/junitReporter.js.map +1 -1
- package/lib/src/reporters/tapFormatTransform.d.ts +8 -1
- package/lib/src/reporters/tapFormatTransform.js +50 -5
- package/lib/src/reporters/tapFormatTransform.js.map +1 -1
- package/lib/src/reporters/tapReporter.js +48 -18
- package/lib/src/reporters/tapReporter.js.map +1 -1
- package/lib/src/streaming/index.d.ts +1 -2
- package/lib/src/streaming/index.js +1 -4
- package/lib/src/streaming/index.js.map +1 -1
- package/lib/src/streaming/testResultStringifyStream.d.ts +10 -2
- package/lib/src/streaming/testResultStringifyStream.js +68 -29
- package/lib/src/streaming/testResultStringifyStream.js.map +1 -1
- package/lib/src/streaming/utils.d.ts +0 -3
- package/lib/src/streaming/utils.js +7 -14
- package/lib/src/streaming/utils.js.map +1 -1
- package/lib/src/tests/asyncTests.d.ts +3 -0
- package/lib/src/tests/asyncTests.js +197 -134
- package/lib/src/tests/asyncTests.js.map +1 -1
- package/lib/src/tests/codeCoverage.js +100 -73
- package/lib/src/tests/codeCoverage.js.map +1 -1
- package/lib/src/tests/syncTests.js +113 -98
- package/lib/src/tests/syncTests.js.map +1 -1
- package/lib/src/tests/testService.d.ts +5 -0
- package/lib/src/tests/testService.js +119 -96
- package/lib/src/tests/testService.js.map +1 -1
- package/lib/src/tests/utils.d.ts +4 -1
- package/lib/src/tests/utils.js +53 -1
- package/lib/src/tests/utils.js.map +1 -1
- package/lib/src/utils/heapMonitor.d.ts +72 -0
- package/lib/src/utils/heapMonitor.js +164 -0
- package/lib/src/utils/heapMonitor.js.map +1 -0
- package/lib/src/utils/index.d.ts +1 -0
- package/lib/src/utils/index.js +3 -1
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/tableWritableStream.js +33 -5
- package/lib/src/utils/tableWritableStream.js.map +1 -1
- package/package.json +17 -15
- package/lib/src/streaming/codeCoverageStringifyStream.d.ts +0 -12
- package/lib/src/streaming/codeCoverageStringifyStream.js +0 -80
- package/lib/src/streaming/codeCoverageStringifyStream.js.map +0 -1
- package/lib/src/streaming/jsonStringifyStream.d.ts +0 -18
- package/lib/src/streaming/jsonStringifyStream.js +0 -118
- package/lib/src/streaming/jsonStringifyStream.js.map +0 -1
|
@@ -16,13 +16,14 @@ const asyncTests_1 = require("./asyncTests");
|
|
|
16
16
|
const syncTests_1 = require("./syncTests");
|
|
17
17
|
const diagnosticUtil_1 = require("./diagnosticUtil");
|
|
18
18
|
const promises_1 = require("node:fs/promises");
|
|
19
|
-
const node_fs_1 = require("node:fs");
|
|
20
19
|
const node_stream_1 = require("node:stream");
|
|
21
|
-
const promises_2 = require("node:stream/promises");
|
|
22
20
|
const streaming_1 = require("../streaming");
|
|
23
|
-
const codeCoverageStringifyStream_1 = require("../streaming/codeCoverageStringifyStream");
|
|
24
21
|
const utils_2 = require("../utils");
|
|
25
22
|
const narrowing_1 = require("../narrowing");
|
|
23
|
+
const promises_2 = require("node:stream/promises");
|
|
24
|
+
const node_fs_1 = require("node:fs");
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
26
|
+
const bfj = require('bfj');
|
|
26
27
|
class TestService {
|
|
27
28
|
connection;
|
|
28
29
|
asyncService;
|
|
@@ -130,7 +131,13 @@ class TestService {
|
|
|
130
131
|
* @param token cancellation token
|
|
131
132
|
*/
|
|
132
133
|
async runTestSynchronous(options, codeCoverage = false, token) {
|
|
133
|
-
|
|
134
|
+
utils_2.HeapMonitor.getInstance().startMonitoring();
|
|
135
|
+
try {
|
|
136
|
+
return await this.syncService.runTests(options, codeCoverage, token);
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
utils_2.HeapMonitor.getInstance().stopMonitoring();
|
|
140
|
+
}
|
|
134
141
|
}
|
|
135
142
|
/**
|
|
136
143
|
* Asynchronous Test Runs
|
|
@@ -139,9 +146,16 @@ class TestService {
|
|
|
139
146
|
* @param immediatelyReturn should not wait for test run to complete, return test run id immediately
|
|
140
147
|
* @param progress progress reporter
|
|
141
148
|
* @param token cancellation token
|
|
149
|
+
* @param timeout
|
|
142
150
|
*/
|
|
143
151
|
async runTestAsynchronous(options, codeCoverage = false, immediatelyReturn = false, progress, token, timeout) {
|
|
144
|
-
|
|
152
|
+
utils_2.HeapMonitor.getInstance().startMonitoring();
|
|
153
|
+
try {
|
|
154
|
+
return await this.asyncService.runTests(options, codeCoverage, immediatelyReturn, progress, token, timeout);
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
utils_2.HeapMonitor.getInstance().stopMonitoring();
|
|
158
|
+
}
|
|
145
159
|
}
|
|
146
160
|
/**
|
|
147
161
|
* Report Asynchronous Test Run Results
|
|
@@ -150,7 +164,13 @@ class TestService {
|
|
|
150
164
|
* @param token cancellation token
|
|
151
165
|
*/
|
|
152
166
|
async reportAsyncResults(testRunId, codeCoverage = false, token) {
|
|
153
|
-
|
|
167
|
+
utils_2.HeapMonitor.getInstance().startMonitoring();
|
|
168
|
+
try {
|
|
169
|
+
return await this.asyncService.reportAsyncResults(testRunId, codeCoverage, token);
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
utils_2.HeapMonitor.getInstance().stopMonitoring();
|
|
173
|
+
}
|
|
154
174
|
}
|
|
155
175
|
/**
|
|
156
176
|
*
|
|
@@ -160,101 +180,91 @@ class TestService {
|
|
|
160
180
|
* @returns list of result files created
|
|
161
181
|
*/
|
|
162
182
|
async writeResultFiles(result, outputDirConfig, codeCoverage = false) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
const testRunId = (0, narrowing_1.isTestResult)(result)
|
|
172
|
-
? result.summary.testRunId
|
|
173
|
-
: result.testRunId;
|
|
174
|
-
const pipeThese = [];
|
|
175
|
-
await (0, promises_1.mkdir)(dirPath, { recursive: true });
|
|
176
|
-
pipeThese.push([
|
|
177
|
-
node_stream_1.Readable.from([testRunId]),
|
|
178
|
-
(0, node_fs_1.createWriteStream)((0, path_1.join)(dirPath, 'test-run-id.txt'), 'utf8')
|
|
179
|
-
]);
|
|
180
|
-
filesWritten.push((0, path_1.join)(dirPath, 'test-run-id.txt'));
|
|
181
|
-
// produce result formats
|
|
182
|
-
if (resultFormats) {
|
|
183
|
-
if (!(0, narrowing_1.isTestResult)(result)) {
|
|
184
|
-
throw new Error(i18n_1.nls.localize('runIdFormatErr'));
|
|
183
|
+
utils_2.HeapMonitor.getInstance().startMonitoring();
|
|
184
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('testService.writeResultFiles');
|
|
185
|
+
try {
|
|
186
|
+
const filesWritten = [];
|
|
187
|
+
const { dirPath, resultFormats, fileInfos } = outputDirConfig;
|
|
188
|
+
if (resultFormats &&
|
|
189
|
+
!resultFormats.every((format) => format in types_1.ResultFormat)) {
|
|
190
|
+
throw new Error(i18n_1.nls.localize('resultFormatErr'));
|
|
185
191
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
streaming_1.TestResultStringifyStream.fromTestResult(result),
|
|
194
|
-
(0, node_fs_1.createWriteStream)(jsonFilePath)
|
|
195
|
-
]);
|
|
196
|
-
break;
|
|
197
|
-
case types_1.ResultFormat.tap:
|
|
198
|
-
const tapFilePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-tap.txt`);
|
|
199
|
-
filesWritten.push(tapFilePath);
|
|
200
|
-
pipeThese.push([
|
|
201
|
-
new reporters_1.TapFormatTransformer(result),
|
|
202
|
-
(0, node_fs_1.createWriteStream)(tapFilePath)
|
|
203
|
-
]);
|
|
204
|
-
break;
|
|
205
|
-
case types_1.ResultFormat.junit:
|
|
206
|
-
const filePath = (0, path_1.join)(dirPath, testRunId
|
|
207
|
-
? `test-result-${testRunId}-junit.xml`
|
|
208
|
-
: `test-result-junit.xml`);
|
|
209
|
-
filesWritten.push(filePath);
|
|
210
|
-
pipeThese.push([
|
|
211
|
-
new reporters_1.JUnitFormatTransformer(result),
|
|
212
|
-
(0, node_fs_1.createWriteStream)(filePath)
|
|
213
|
-
]);
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
192
|
+
await (0, promises_1.mkdir)(dirPath, { recursive: true });
|
|
193
|
+
const testRunId = (0, narrowing_1.isTestResult)(result)
|
|
194
|
+
? result.summary.testRunId
|
|
195
|
+
: result.testRunId;
|
|
196
|
+
try {
|
|
197
|
+
await (0, promises_1.writeFile)((0, path_1.join)(dirPath, 'test-run-id.txt'), testRunId);
|
|
198
|
+
filesWritten.push((0, path_1.join)(dirPath, 'test-run-id.txt'));
|
|
216
199
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (codeCoverage) {
|
|
220
|
-
if (!(0, narrowing_1.isTestResult)(result)) {
|
|
221
|
-
throw new Error(i18n_1.nls.localize('covIdFormatErr'));
|
|
200
|
+
catch (err) {
|
|
201
|
+
console.error(`Error writing file: ${err}`);
|
|
222
202
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
203
|
+
if (resultFormats) {
|
|
204
|
+
if (!(0, narrowing_1.isTestResult)(result)) {
|
|
205
|
+
throw new Error(i18n_1.nls.localize('runIdFormatErr'));
|
|
206
|
+
}
|
|
207
|
+
for (const format of resultFormats) {
|
|
208
|
+
let filePath;
|
|
209
|
+
let readable;
|
|
210
|
+
switch (format) {
|
|
211
|
+
case types_1.ResultFormat.json:
|
|
212
|
+
filePath = (0, path_1.join)(dirPath, `test-result-${testRunId || 'default'}.json`);
|
|
213
|
+
readable = streaming_1.TestResultStringifyStream.fromTestResult(result, {
|
|
214
|
+
bufferSize: (0, utils_1.getBufferSize)()
|
|
215
|
+
});
|
|
216
|
+
break;
|
|
217
|
+
case types_1.ResultFormat.tap:
|
|
218
|
+
filePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-tap.txt`);
|
|
219
|
+
readable = new reporters_1.TapFormatTransformer(result, undefined, {
|
|
220
|
+
bufferSize: (0, utils_1.getBufferSize)()
|
|
221
|
+
});
|
|
222
|
+
break;
|
|
223
|
+
case types_1.ResultFormat.junit:
|
|
224
|
+
filePath = (0, path_1.join)(dirPath, `test-result-${testRunId || 'default'}-junit.xml`);
|
|
225
|
+
readable = new reporters_1.JUnitFormatTransformer(result, {
|
|
226
|
+
bufferSize: (0, utils_1.getBufferSize)()
|
|
227
|
+
});
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
if (filePath && readable) {
|
|
231
|
+
filesWritten.push(await this.runPipeline(readable, filePath));
|
|
232
|
+
}
|
|
233
|
+
}
|
|
243
234
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
235
|
+
if (codeCoverage) {
|
|
236
|
+
if (!(0, narrowing_1.isTestResult)(result)) {
|
|
237
|
+
throw new Error(i18n_1.nls.localize('covIdFormatErr'));
|
|
238
|
+
}
|
|
239
|
+
const filePath = (0, path_1.join)(dirPath, `test-result-${testRunId}-codecoverage.json`);
|
|
240
|
+
const c = result.tests
|
|
241
|
+
.map((record) => record.perClassCoverage)
|
|
242
|
+
.filter((pcc) => pcc?.length);
|
|
243
|
+
filesWritten.push(await this.runPipeline(bfj.stringify(c, {
|
|
244
|
+
bufferLength: (0, utils_1.getBufferSize)(),
|
|
245
|
+
iterables: 'ignore',
|
|
246
|
+
space: (0, utils_1.getJsonIndent)()
|
|
247
|
+
}), filePath));
|
|
249
248
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
249
|
+
if (fileInfos) {
|
|
250
|
+
for (const fileInfo of fileInfos) {
|
|
251
|
+
const filePath = (0, path_1.join)(dirPath, fileInfo.filename);
|
|
252
|
+
const readable = typeof fileInfo.content === 'string'
|
|
253
|
+
? node_stream_1.Readable.from([fileInfo.content])
|
|
254
|
+
: bfj.stringify(fileInfo.content, {
|
|
255
|
+
bufferLength: (0, utils_1.getBufferSize)(),
|
|
256
|
+
iterables: 'ignore',
|
|
257
|
+
space: (0, utils_1.getJsonIndent)()
|
|
258
|
+
});
|
|
259
|
+
filesWritten.push(await this.runPipeline(readable, filePath));
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return filesWritten;
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
utils_2.HeapMonitor.getInstance().checkHeapSize('testService.writeResultFiles');
|
|
266
|
+
utils_2.HeapMonitor.getInstance().stopMonitoring();
|
|
267
|
+
}
|
|
258
268
|
}
|
|
259
269
|
// utils to build test run payloads that may contain namespaces
|
|
260
270
|
async buildSyncPayload(testLevel, tests, classnames) {
|
|
@@ -389,6 +399,19 @@ class TestService {
|
|
|
389
399
|
testLevel: "RunSpecifiedTests" /* TestLevel.RunSpecifiedTests */
|
|
390
400
|
};
|
|
391
401
|
}
|
|
402
|
+
async runPipeline(readable, filePath, transform) {
|
|
403
|
+
const writable = this.createStream(filePath);
|
|
404
|
+
if (transform) {
|
|
405
|
+
await (0, promises_2.pipeline)(readable, transform, writable);
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
await (0, promises_2.pipeline)(readable, writable);
|
|
409
|
+
}
|
|
410
|
+
return filePath;
|
|
411
|
+
}
|
|
412
|
+
createStream(filePath) {
|
|
413
|
+
return (0, node_fs_1.createWriteStream)(filePath, 'utf8');
|
|
414
|
+
}
|
|
392
415
|
}
|
|
393
416
|
exports.TestService = TestService;
|
|
394
417
|
__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testService.js","sourceRoot":"","sources":["../../../src/tests/testService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testService.js","sourceRoot":"","sources":["../../../src/tests/testService.ts"],"names":[],"mappings":"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"}
|
package/lib/src/tests/utils.d.ts
CHANGED
|
@@ -4,4 +4,7 @@ import type { QueryResult } from '@jsforce/jsforce-node';
|
|
|
4
4
|
export declare function calculatePercentage(dividend: number, divisor: number): string;
|
|
5
5
|
export declare function stringify(jsonObj: object): string;
|
|
6
6
|
export declare function queryNamespaces(connection: Connection): Promise<NamespaceInfo[]>;
|
|
7
|
-
export declare const queryAll: <
|
|
7
|
+
export declare const queryAll: <R>(connection: Connection, query: string, tooling?: boolean) => Promise<QueryResult<R>>;
|
|
8
|
+
export declare const getJsonIndent: () => number | undefined;
|
|
9
|
+
export declare const getBufferSize: () => number;
|
|
10
|
+
export declare const resetLimitsForTesting: () => void;
|
package/lib/src/tests/utils.js
CHANGED
|
@@ -6,7 +6,16 @@
|
|
|
6
6
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.queryAll = exports.queryNamespaces = exports.stringify = exports.calculatePercentage = void 0;
|
|
9
|
+
exports.resetLimitsForTesting = exports.getBufferSize = exports.getJsonIndent = exports.queryAll = exports.queryNamespaces = exports.stringify = exports.calculatePercentage = void 0;
|
|
10
|
+
const core_1 = require("@salesforce/core");
|
|
11
|
+
const DEFAULT_BUFFER_SIZE = 256;
|
|
12
|
+
const MIN_BUFFER_SIZE = 256;
|
|
13
|
+
const MAX_BUFFER_SIZE = 32_768;
|
|
14
|
+
const DEFAULT_JSON_INDENT = undefined;
|
|
15
|
+
const MIN_JSON_INDENT = 0;
|
|
16
|
+
const MAX_JSON_INDENT = 8;
|
|
17
|
+
let jsonIndent = null;
|
|
18
|
+
let bufferSize = null;
|
|
10
19
|
function calculatePercentage(dividend, divisor) {
|
|
11
20
|
let percentage = '0%';
|
|
12
21
|
if (dividend > 0) {
|
|
@@ -51,4 +60,47 @@ const queryAll = async (connection, query, tooling = false) => {
|
|
|
51
60
|
};
|
|
52
61
|
};
|
|
53
62
|
exports.queryAll = queryAll;
|
|
63
|
+
const getJsonIndent = () => {
|
|
64
|
+
if (jsonIndent !== null) {
|
|
65
|
+
return jsonIndent;
|
|
66
|
+
}
|
|
67
|
+
let jsonIndentNum = DEFAULT_JSON_INDENT;
|
|
68
|
+
const envJsonIndent = process.env.SF_APEX_RESULTS_JSON_INDENT;
|
|
69
|
+
if (envJsonIndent && Number.isInteger(Number(envJsonIndent))) {
|
|
70
|
+
jsonIndentNum = Number(envJsonIndent);
|
|
71
|
+
}
|
|
72
|
+
if (jsonIndentNum < MIN_JSON_INDENT || jsonIndentNum > MAX_JSON_INDENT) {
|
|
73
|
+
const logger = core_1.Logger.childFromRoot('utils');
|
|
74
|
+
logger.warn(`Json indent ${jsonIndentNum} is outside of the valid range (${MIN_JSON_INDENT}-${MAX_JSON_INDENT}). Using default json indent of ${DEFAULT_JSON_INDENT}.`);
|
|
75
|
+
jsonIndentNum = DEFAULT_JSON_INDENT;
|
|
76
|
+
}
|
|
77
|
+
jsonIndent = jsonIndentNum;
|
|
78
|
+
return jsonIndent;
|
|
79
|
+
};
|
|
80
|
+
exports.getJsonIndent = getJsonIndent;
|
|
81
|
+
const getBufferSize = () => {
|
|
82
|
+
if (bufferSize !== null) {
|
|
83
|
+
return bufferSize;
|
|
84
|
+
}
|
|
85
|
+
let bufferSizeNum = DEFAULT_BUFFER_SIZE;
|
|
86
|
+
const jsonBufferSize = process.env.SF_APEX_JSON_BUFFER_SIZE;
|
|
87
|
+
if (jsonBufferSize && Number.isInteger(Number(jsonBufferSize))) {
|
|
88
|
+
bufferSizeNum = Number(jsonBufferSize);
|
|
89
|
+
}
|
|
90
|
+
if (bufferSizeNum < MIN_BUFFER_SIZE || bufferSizeNum > MAX_BUFFER_SIZE) {
|
|
91
|
+
const logger = core_1.Logger.childFromRoot('utils');
|
|
92
|
+
logger.warn(`Buffer size ${bufferSizeNum} is outside of the valid range (${MIN_BUFFER_SIZE}-${MAX_BUFFER_SIZE}). Using default buffer size of ${DEFAULT_BUFFER_SIZE}.`);
|
|
93
|
+
bufferSizeNum = DEFAULT_BUFFER_SIZE;
|
|
94
|
+
}
|
|
95
|
+
bufferSize = bufferSizeNum;
|
|
96
|
+
JSON.stringify(bufferSize);
|
|
97
|
+
return bufferSize;
|
|
98
|
+
};
|
|
99
|
+
exports.getBufferSize = getBufferSize;
|
|
100
|
+
// exported for testing
|
|
101
|
+
const resetLimitsForTesting = () => {
|
|
102
|
+
bufferSize = null;
|
|
103
|
+
jsonIndent = null;
|
|
104
|
+
};
|
|
105
|
+
exports.resetLimitsForTesting = resetLimitsForTesting;
|
|
54
106
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare class NullHeapMonitor implements Disposable {
|
|
3
|
+
checkHeapSize(): void;
|
|
4
|
+
startMonitoring(): void;
|
|
5
|
+
stopMonitoring(): void;
|
|
6
|
+
[Symbol.dispose](): void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Class responsible for monitoring heap memory usage.
|
|
10
|
+
*/
|
|
11
|
+
export declare class HeapMonitor implements Disposable {
|
|
12
|
+
private static instance;
|
|
13
|
+
private logger;
|
|
14
|
+
private intervalId?;
|
|
15
|
+
private isMonitoring;
|
|
16
|
+
private interval;
|
|
17
|
+
/**
|
|
18
|
+
* Private constructor to enforce singleton pattern.
|
|
19
|
+
*/
|
|
20
|
+
private constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Returns the singleton instance of HeapMonitor.
|
|
23
|
+
* @returns The singleton instance.
|
|
24
|
+
*/
|
|
25
|
+
static getInstance(): HeapMonitor | NullHeapMonitor;
|
|
26
|
+
/**
|
|
27
|
+
* Checks the current heap size and logs the details.
|
|
28
|
+
* @param [applicationArea] - Optional application area to be included in the log.
|
|
29
|
+
*/
|
|
30
|
+
checkHeapSize(applicationArea?: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Starts monitoring the heap memory usage at regular intervals.
|
|
33
|
+
* WARNING: Monitoring is done on a schedule interval, which must stopped/cleared
|
|
34
|
+
* or the monitor will continue to run. The symptom of this will be a node process
|
|
35
|
+
* that seems to be hanging.
|
|
36
|
+
*
|
|
37
|
+
* One must call stopMonitoring or capture the instance in a scope with the
|
|
38
|
+
* Typescript "using"
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* async function main() {
|
|
42
|
+
* await using(HeapMonitor.getInstance(), async (heapMonitor) => {
|
|
43
|
+
* heapMonitor.startMonitoring();
|
|
44
|
+
*
|
|
45
|
+
* // Simulate some work
|
|
46
|
+
* await new Promise(resolve => setTimeout(resolve, 2000));
|
|
47
|
+
*
|
|
48
|
+
* // No need to explicitly call dispose, it will be called automatically
|
|
49
|
+
* });
|
|
50
|
+
* }
|
|
51
|
+
*
|
|
52
|
+
* main().catch(console.error);
|
|
53
|
+
* ```
|
|
54
|
+
**/
|
|
55
|
+
startMonitoring(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Stops monitoring the heap memory usage.
|
|
58
|
+
*
|
|
59
|
+
* WARNING: It is imperative that a heap monitor be stopped
|
|
60
|
+
* before the node process exits.
|
|
61
|
+
*
|
|
62
|
+
* See @{link startMonitoring}
|
|
63
|
+
*/
|
|
64
|
+
stopMonitoring(): void;
|
|
65
|
+
/**
|
|
66
|
+
* dispose method that will be called when instance of HeapMonitor
|
|
67
|
+
* is captured by Typescript "using" keyword.
|
|
68
|
+
*
|
|
69
|
+
* See {@link startMonitoring}
|
|
70
|
+
*/
|
|
71
|
+
[Symbol.dispose](): void;
|
|
72
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
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.HeapMonitor = exports.NullHeapMonitor = void 0;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright (c) 2024, salesforce.com, inc.
|
|
9
|
+
* All rights reserved.
|
|
10
|
+
* Licensed under the BSD 3-Clause license.
|
|
11
|
+
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
12
|
+
*/
|
|
13
|
+
const core_1 = require("@salesforce/core");
|
|
14
|
+
const node_v8_1 = __importDefault(require("node:v8"));
|
|
15
|
+
const node_timers_1 = require("node:timers");
|
|
16
|
+
const INTERVAL_DEFAULT = 500;
|
|
17
|
+
const INTERVAL_MIN = 100;
|
|
18
|
+
const INTERVAL_MAX = 10_000;
|
|
19
|
+
class NullHeapMonitor {
|
|
20
|
+
checkHeapSize() { }
|
|
21
|
+
startMonitoring() { }
|
|
22
|
+
stopMonitoring() { }
|
|
23
|
+
[Symbol.dispose]() { }
|
|
24
|
+
}
|
|
25
|
+
exports.NullHeapMonitor = NullHeapMonitor;
|
|
26
|
+
/**
|
|
27
|
+
* Class responsible for monitoring heap memory usage.
|
|
28
|
+
*/
|
|
29
|
+
class HeapMonitor {
|
|
30
|
+
static instance;
|
|
31
|
+
logger;
|
|
32
|
+
intervalId;
|
|
33
|
+
isMonitoring;
|
|
34
|
+
interval;
|
|
35
|
+
/**
|
|
36
|
+
* Private constructor to enforce singleton pattern.
|
|
37
|
+
*/
|
|
38
|
+
constructor() {
|
|
39
|
+
this.logger = core_1.Logger.childFromRoot('heap-monitor', {
|
|
40
|
+
tag: 'heap-monitor'
|
|
41
|
+
});
|
|
42
|
+
this.isMonitoring = false;
|
|
43
|
+
// Check for SF_HEAP_MONITOR_INTERVAL environment variable
|
|
44
|
+
this.interval = INTERVAL_DEFAULT; // default value
|
|
45
|
+
const envInterval = process.env.SF_HEAP_MONITOR_INTERVAL;
|
|
46
|
+
if (envInterval && Number.isInteger(Number(envInterval))) {
|
|
47
|
+
this.interval = Number(envInterval);
|
|
48
|
+
}
|
|
49
|
+
if (this.interval < INTERVAL_MIN || this.interval > INTERVAL_MAX) {
|
|
50
|
+
this.logger.warn(`Interval if ${this.interval} found in SF_HEAP_MONITOR_INTERVAL must be between: ${INTERVAL_MIN} and ${INTERVAL_MAX}. Using default of ${INTERVAL_DEFAULT}`);
|
|
51
|
+
this.interval = INTERVAL_DEFAULT;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Returns the singleton instance of HeapMonitor.
|
|
56
|
+
* @returns The singleton instance.
|
|
57
|
+
*/
|
|
58
|
+
static getInstance() {
|
|
59
|
+
if (!HeapMonitor.instance) {
|
|
60
|
+
if (core_1.Logger.getRoot().shouldLog(core_1.LoggerLevel.DEBUG)) {
|
|
61
|
+
HeapMonitor.instance = new HeapMonitor();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
HeapMonitor.instance = new NullHeapMonitor();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return HeapMonitor.instance;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Checks the current heap size and logs the details.
|
|
71
|
+
* @param [applicationArea] - Optional application area to be included in the log.
|
|
72
|
+
*/
|
|
73
|
+
checkHeapSize(applicationArea) {
|
|
74
|
+
if (!this.logger.shouldLog(core_1.LoggerLevel.DEBUG)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const heapStats = node_v8_1.default.getHeapStatistics();
|
|
78
|
+
const heapSpaceStats = node_v8_1.default.getHeapSpaceStatistics();
|
|
79
|
+
const memoryUsage = process.memoryUsage();
|
|
80
|
+
const logRecord = {
|
|
81
|
+
msg: 'Memory usage',
|
|
82
|
+
applicationArea,
|
|
83
|
+
rss: Number(memoryUsage.rss),
|
|
84
|
+
heapTotal: Number(memoryUsage.heapTotal),
|
|
85
|
+
heapUsed: Number(memoryUsage.heapUsed),
|
|
86
|
+
external: Number(memoryUsage.external)
|
|
87
|
+
};
|
|
88
|
+
// Convert heapStats properties to numbers and add to logRecord
|
|
89
|
+
for (const [key, value] of Object.entries(heapStats)) {
|
|
90
|
+
logRecord[key] = Number(value);
|
|
91
|
+
}
|
|
92
|
+
// Flatten heapSpaces into individual properties
|
|
93
|
+
heapSpaceStats.forEach((space) => {
|
|
94
|
+
logRecord[`${space.space_name}_total`] = Number(space.space_size);
|
|
95
|
+
logRecord[`${space.space_name}_used`] = Number(space.space_used_size);
|
|
96
|
+
logRecord[`${space.space_name}_available`] = Number(space.space_available_size);
|
|
97
|
+
});
|
|
98
|
+
this.logger.debug(logRecord);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Starts monitoring the heap memory usage at regular intervals.
|
|
102
|
+
* WARNING: Monitoring is done on a schedule interval, which must stopped/cleared
|
|
103
|
+
* or the monitor will continue to run. The symptom of this will be a node process
|
|
104
|
+
* that seems to be hanging.
|
|
105
|
+
*
|
|
106
|
+
* One must call stopMonitoring or capture the instance in a scope with the
|
|
107
|
+
* Typescript "using"
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* async function main() {
|
|
111
|
+
* await using(HeapMonitor.getInstance(), async (heapMonitor) => {
|
|
112
|
+
* heapMonitor.startMonitoring();
|
|
113
|
+
*
|
|
114
|
+
* // Simulate some work
|
|
115
|
+
* await new Promise(resolve => setTimeout(resolve, 2000));
|
|
116
|
+
*
|
|
117
|
+
* // No need to explicitly call dispose, it will be called automatically
|
|
118
|
+
* });
|
|
119
|
+
* }
|
|
120
|
+
*
|
|
121
|
+
* main().catch(console.error);
|
|
122
|
+
* ```
|
|
123
|
+
**/
|
|
124
|
+
startMonitoring() {
|
|
125
|
+
if (!this.isMonitoring) {
|
|
126
|
+
this.isMonitoring = true;
|
|
127
|
+
if (!this.logger.shouldLog(core_1.LoggerLevel.DEBUG)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
this.checkHeapSize();
|
|
131
|
+
this.intervalId = setInterval(() => this.checkHeapSize(), this.interval);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Stops monitoring the heap memory usage.
|
|
136
|
+
*
|
|
137
|
+
* WARNING: It is imperative that a heap monitor be stopped
|
|
138
|
+
* before the node process exits.
|
|
139
|
+
*
|
|
140
|
+
* See @{link startMonitoring}
|
|
141
|
+
*/
|
|
142
|
+
stopMonitoring() {
|
|
143
|
+
if (this.isMonitoring) {
|
|
144
|
+
this.isMonitoring = false;
|
|
145
|
+
if (this.intervalId) {
|
|
146
|
+
(0, node_timers_1.clearInterval)(this.intervalId);
|
|
147
|
+
this.intervalId = undefined;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* dispose method that will be called when instance of HeapMonitor
|
|
153
|
+
* is captured by Typescript "using" keyword.
|
|
154
|
+
*
|
|
155
|
+
* See {@link startMonitoring}
|
|
156
|
+
*/
|
|
157
|
+
[Symbol.dispose]() {
|
|
158
|
+
this.stopMonitoring();
|
|
159
|
+
this.logger.debug('HeapMonitor disposed');
|
|
160
|
+
HeapMonitor.instance = null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.HeapMonitor = HeapMonitor;
|
|
164
|
+
//# sourceMappingURL=heapMonitor.js.map
|