Skip to content

Commit 62a40a6

Browse files
committed
test: add continuous profiling configuration tests
Add test-nsolid-config-continuous-profiling.js for API configuration. Add test-nsolid-config-continuous-profiling-env.js for environment variables. PR-URL: #282 Reviewed-By: Juan José Arboleda <[email protected]>
1 parent 1ac895b commit 62a40a6

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
'use strict';
2+
3+
// This script is used by test-nsolid-config-continuous-profiling-env.js
4+
// to test environment variable configuration
5+
6+
require('../common');
7+
const nsolid = require('nsolid');
8+
9+
// Start N-Solid with default configuration
10+
nsolid.start();
11+
12+
// Output the configuration as JSON
13+
console.log(JSON.stringify({
14+
contCpuProfile: nsolid.config.contCpuProfile,
15+
contCpuProfileInterval: nsolid.config.contCpuProfileInterval,
16+
contHeapProfile: nsolid.config.contHeapProfile,
17+
contHeapProfileInterval: nsolid.config.contHeapProfileInterval
18+
}));
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
'use strict';
2+
3+
// This test verifies that continuous profiling configuration works
4+
// correctly when set via environment variables
5+
6+
require('../common');
7+
const assert = require('assert');
8+
const { spawnSync } = require('child_process');
9+
const path = require('path');
10+
11+
// Helper to run a small script with specific environment variables
12+
function runWithEnv(envVars) {
13+
const script = path.join(__dirname, '../fixtures/test-nsolid-config-continuous-profiling-env-script.js');
14+
15+
const result = spawnSync(process.execPath, [script], {
16+
env: {
17+
...process.env,
18+
...envVars
19+
},
20+
encoding: 'utf8'
21+
});
22+
23+
if (result.status !== 0) {
24+
console.error(result.stderr);
25+
throw new Error(`Script execution failed with status ${result.status}`);
26+
}
27+
28+
return JSON.parse(result.stdout.trim());
29+
}
30+
31+
// Test default values (when no environment variables are set)
32+
{
33+
const config = runWithEnv({});
34+
assert.strictEqual(config.contCpuProfile, false);
35+
assert.strictEqual(config.contCpuProfileInterval, 30000); // Default is 30 seconds
36+
}
37+
38+
// Test CPU continuous profiling configuration via environment variables
39+
{
40+
const config = runWithEnv({
41+
NSOLID_CONT_CPU_PROFILE: 'true',
42+
NSOLID_CONT_CPU_PROFILE_INTERVAL: '60000'
43+
});
44+
assert.strictEqual(config.contCpuProfile, true);
45+
assert.strictEqual(config.contCpuProfileInterval, 60000);
46+
}
47+
48+
49+
// Test boolean coercion for environment variables
50+
{
51+
const config = runWithEnv({
52+
NSOLID_CONT_CPU_PROFILE: '1',
53+
});
54+
assert.strictEqual(config.contCpuProfile, true);
55+
}
56+
57+
{
58+
const config = runWithEnv({
59+
NSOLID_CONT_CPU_PROFILE: 'yes'
60+
});
61+
assert.strictEqual(config.contCpuProfile, true);
62+
}
63+
64+
// Test disabling via environment variables
65+
{
66+
const config = runWithEnv({
67+
NSOLID_CONT_CPU_PROFILE: 'false',
68+
});
69+
assert.strictEqual(config.contCpuProfile, false);
70+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
'use strict';
2+
3+
require('../common');
4+
const assert = require('assert');
5+
const nsolid = require('nsolid');
6+
7+
// Test CPU continuous profiling configuration
8+
nsolid.start({
9+
command: 9001,
10+
contCpuProfile: true,
11+
contCpuProfileInterval: 60000
12+
});
13+
14+
assert.strictEqual(nsolid.config.contCpuProfile, true);
15+
assert.strictEqual(nsolid.config.contCpuProfileInterval, 60000);
16+
17+
// Test changing CPU continuous profiling configuration
18+
nsolid.start({
19+
contCpuProfile: false,
20+
contCpuProfileInterval: 120000
21+
});
22+
23+
assert.strictEqual(nsolid.config.contCpuProfile, false);
24+
assert.strictEqual(nsolid.config.contCpuProfileInterval, 120000);
25+
26+
// Test enabling CPU continuous profiling
27+
nsolid.start({
28+
contCpuProfile: true
29+
});
30+
31+
assert.strictEqual(nsolid.config.contCpuProfile, true);
32+
assert.strictEqual(nsolid.config.contCpuProfileInterval, 120000);
33+
34+
// Test type coercion for boolean values
35+
nsolid.start({
36+
contCpuProfile: 'true',
37+
});
38+
39+
assert.strictEqual(nsolid.config.contCpuProfile, true);
40+
41+
// Test type coercion for interval values
42+
nsolid.start({
43+
contCpuProfileInterval: '45000',
44+
});
45+
46+
assert.strictEqual(nsolid.config.contCpuProfileInterval, 45000);
47+
48+
// Test disabling CPU profiling
49+
nsolid.start({
50+
contCpuProfile: false,
51+
});
52+
53+
assert.strictEqual(nsolid.config.contCpuProfile, false);

0 commit comments

Comments
 (0)