@@ -15,9 +15,10 @@ async function getMeasurements(instrumentFile) {
15
15
16
16
const cmd = `node ${ args . join ( ' ' ) } ` ;
17
17
18
+ log ( '--------------------------------' ) ;
18
19
log ( `Getting measurements for "${ cmd } "` ) ;
19
20
20
- const [ appProcess , appProcessClosed ] = await startAppProcess ( cmd ) ;
21
+ const killAppProcess = await startAppProcess ( cmd ) ;
21
22
22
23
log ( 'Example app listening, running autocannon...' ) ;
23
24
@@ -26,8 +27,9 @@ async function getMeasurements(instrumentFile) {
26
27
} catch ( error ) {
27
28
log ( `Error running autocannon: ${ error } ` ) ;
28
29
} finally {
29
- appProcess . kill ( 'SIGKILL' ) ;
30
- await appProcessClosed ;
30
+ log ( 'Killing app process...' ) ;
31
+ await killAppProcess ( ) ;
32
+ log ( 'App process killed' ) ;
31
33
}
32
34
}
33
35
@@ -38,9 +40,9 @@ async function startAppProcess(cmd) {
38
40
39
41
// Promise to keep track of the app process being closed
40
42
let resolveAppClose , rejectAppClose ;
41
- const appClosePromise = new Promise ( ( res , rej ) => {
42
- resolveAppClose = res ;
43
- rejectAppClose = rej ;
43
+ const appClosePromise = new Promise ( ( resolve , reject ) => {
44
+ resolveAppClose = resolve ;
45
+ rejectAppClose = reject ;
44
46
} ) ;
45
47
46
48
appProcess . on ( 'close' , code => {
@@ -66,7 +68,10 @@ async function startAppProcess(cmd) {
66
68
} ) ;
67
69
} ) ;
68
70
69
- return [ appProcess , appClosePromise ] ;
71
+ return async ( ) => {
72
+ appProcess . kill ( 'SIGKILL' ) ;
73
+ await appClosePromise ;
74
+ } ;
70
75
}
71
76
72
77
async function startAutocannonProcess ( ) {
@@ -88,15 +93,18 @@ async function startAutocannonProcess() {
88
93
return new Promise ( ( resolve , reject ) => {
89
94
autocannon . stderr . on ( 'data' , data => {
90
95
log ( `autocannon stderr: ${ data } ` ) ;
91
- autocannon . kill ( ) ;
92
- reject ( data ) ;
96
+ autocannon . kill ( 'SIGKILL' ) ;
93
97
} ) ;
94
98
95
99
autocannon . on ( 'close' , code => {
96
100
log ( `autocannon closed with code ${ code } ` ) ;
97
101
log ( `Average requests: ${ lastJson ?. requests . average } ` ) ;
98
102
99
- resolve ( lastJson ?. requests . average ) ;
103
+ if ( code && code !== 0 ) {
104
+ reject ( new Error ( `Autocannon process exited with code ${ code } ` ) ) ;
105
+ } else {
106
+ resolve ( lastJson ?. requests . average ) ;
107
+ }
100
108
} ) ;
101
109
} ) ;
102
110
}
0 commit comments