@@ -50,18 +50,43 @@ if (common.isWindows) {
5050FIB = 40 ;
5151}
5252
53+ // We need to set --cpu-interval to a smaller value to make sure we can
54+ // find our workload in the samples. 50us should be a small enough sampling
55+ // interval for this.
56+ const kCpuProfInterval = 50 ;
5357const env = {
5458 ...process . env ,
5559FIB ,
5660NODE_DEBUG_NATIVE : 'INSPECTOR_PROFILER'
5761} ;
5862
63+ // Test --cpu-prof without --cpu-prof-interval. Here we just verify that
64+ // we manage to generate a profile.
65+ {
66+ tmpdir . refresh ( ) ;
67+ const output = spawnSync ( process . execPath , [
68+ '--cpu-prof' ,
69+ fixtures . path ( 'workload' , 'fibonacci.js' ) ,
70+ ] , {
71+ cwd : tmpdir . path ,
72+ env
73+ } ) ;
74+ if ( output . status !== 0 ) {
75+ console . log ( output . stderr . toString ( ) ) ;
76+ }
77+ assert . strictEqual ( output . status , 0 ) ;
78+ const profiles = getCpuProfiles ( tmpdir . path ) ;
79+ assert . strictEqual ( profiles . length , 1 ) ;
80+ }
81+
5982// Outputs CPU profile when event loop is drained.
6083// TODO(joyeecheung): share the fixutres with v8 coverage tests
6184{
6285tmpdir . refresh ( ) ;
6386const output = spawnSync ( process . execPath , [
6487'--cpu-prof' ,
88+ '--cpu-prof-interval' ,
89+ kCpuProfInterval ,
6590fixtures . path ( 'workload' , 'fibonacci.js' ) ,
6691] , {
6792cwd : tmpdir . path ,
@@ -81,6 +106,8 @@ const env = {
81106tmpdir . refresh ( ) ;
82107const output = spawnSync ( process . execPath , [
83108'--cpu-prof' ,
109+ '--cpu-prof-interval' ,
110+ kCpuProfInterval ,
84111fixtures . path ( 'workload' , 'fibonacci-exit.js' ) ,
85112] , {
86113cwd : tmpdir . path ,
@@ -100,6 +127,8 @@ const env = {
100127tmpdir . refresh ( ) ;
101128const output = spawnSync ( process . execPath , [
102129'--cpu-prof' ,
130+ '--cpu-prof-interval' ,
131+ kCpuProfInterval ,
103132fixtures . path ( 'workload' , 'fibonacci-sigint.js' ) ,
104133] , {
105134cwd : tmpdir . path ,
@@ -123,7 +152,10 @@ const env = {
123152fixtures . path ( 'workload' , 'fibonacci-worker-argv.js' ) ,
124153] , {
125154cwd : tmpdir . path ,
126- env
155+ env : {
156+ ...process . env ,
157+ CPU_PROF_INTERVAL : kCpuProfInterval
158+ }
127159} ) ;
128160if ( output . status !== 0 ) {
129161console . log ( output . stderr . toString ( ) ) ;
@@ -176,12 +208,35 @@ const env = {
176208`${ process . execPath } : --cpu-prof-dir must be used with --cpu-prof` ) ;
177209}
178210
211+ // --cpu-prof-interval without --cpu-prof
212+ {
213+ tmpdir . refresh ( ) ;
214+ const output = spawnSync ( process . execPath , [
215+ '--cpu-prof-interval' ,
216+ kCpuProfInterval ,
217+ fixtures . path ( 'workload' , 'fibonacci.js' ) ,
218+ ] , {
219+ cwd : tmpdir . path ,
220+ env
221+ } ) ;
222+ const stderr = output . stderr . toString ( ) . trim ( ) ;
223+ if ( output . status !== 9 ) {
224+ console . log ( stderr ) ;
225+ }
226+ assert . strictEqual ( output . status , 9 ) ;
227+ assert . strictEqual (
228+ stderr ,
229+ `${ process . execPath } : --cpu-prof-interval must be used with --cpu-prof` ) ;
230+ }
231+
179232// --cpu-prof-name
180233{
181234tmpdir . refresh ( ) ;
182235const file = path . join ( tmpdir . path , 'test.cpuprofile' ) ;
183236const output = spawnSync ( process . execPath , [
184237'--cpu-prof' ,
238+ '--cpu-prof-interval' ,
239+ kCpuProfInterval ,
185240'--cpu-prof-name' ,
186241'test.cpuprofile' ,
187242fixtures . path ( 'workload' , 'fibonacci.js' ) ,
@@ -203,6 +258,8 @@ const env = {
203258tmpdir . refresh ( ) ;
204259const output = spawnSync ( process . execPath , [
205260'--cpu-prof' ,
261+ '--cpu-prof-interval' ,
262+ kCpuProfInterval ,
206263'--cpu-prof-dir' ,
207264'prof' ,
208265fixtures . path ( 'workload' , 'fibonacci.js' ) ,
@@ -227,6 +284,8 @@ const env = {
227284const dir = path . join ( tmpdir . path , 'prof' ) ;
228285const output = spawnSync ( process . execPath , [
229286'--cpu-prof' ,
287+ '--cpu-prof-interval' ,
288+ kCpuProfInterval ,
230289'--cpu-prof-dir' ,
231290dir ,
232291fixtures . path ( 'workload' , 'fibonacci.js' ) ,
@@ -251,6 +310,8 @@ const env = {
251310const file = path . join ( dir , 'test.cpuprofile' ) ;
252311const output = spawnSync ( process . execPath , [
253312'--cpu-prof' ,
313+ '--cpu-prof-interval' ,
314+ kCpuProfInterval ,
254315'--cpu-prof-name' ,
255316'test.cpuprofile' ,
256317'--cpu-prof-dir' ,
@@ -274,6 +335,8 @@ const env = {
274335{
275336tmpdir . refresh ( ) ;
276337const output = spawnSync ( process . execPath , [
338+ '--cpu-prof-interval' ,
339+ kCpuProfInterval ,
277340'--cpu-prof-dir' ,
278341'prof' ,
279342'--cpu-prof' ,
0 commit comments