@@ -6,21 +6,18 @@ const sinon = require("sinon");
6
6
const SocketIO = require ( "socket.io" ) ;
7
7
const config = require ( "../../lib/config" ) ;
8
8
const dashboardAgent = require ( "../../lib/dashboard-agent" ) ;
9
- const _ = require ( "lodash " ) ;
9
+ const pusage = require ( "pidusage " ) ;
10
10
11
11
describe ( "dashboard-agent" , ( ) => {
12
12
13
13
let server ;
14
- let clock ;
15
14
let agent ;
16
15
const TEST_PORT = 12345 ;
17
- const REPORTING_THRESHOLD = 2000 ;
16
+ const REPORTING_THRESHOLD = 1500 ;
18
17
19
18
before ( ( ) => {
20
- clock = sinon . useFakeTimers ( ) ;
21
19
process . env [ config . PORT_KEY ] = TEST_PORT ;
22
20
process . env [ config . BLOCKED_THRESHOLD_KEY ] = 1 ;
23
-
24
21
} ) ;
25
22
26
23
beforeEach ( ( ) => {
@@ -34,15 +31,23 @@ describe("dashboard-agent", () => {
34
31
} ) ;
35
32
36
33
describe ( "initialization" , ( ) => {
34
+ let clock ;
35
+ before ( ( ) => {
36
+ clock = sinon . useFakeTimers ( ) ;
37
+ } ) ;
37
38
38
- it ( "should use environment variables for configuration" , ( done ) => {
39
+ after ( ( ) => {
40
+ clock . restore ( ) ;
41
+ } ) ;
39
42
43
+ it ( "should use environment variables for configuration" , ( done ) => {
40
44
const checkMetrics = ( metrics ) => {
41
45
expect ( metrics ) . to . be . exist ;
42
46
expect ( metrics . eventLoop . delay ) . to . equal ( 0 ) ;
43
47
} ;
44
48
45
49
clock . tick ( REPORTING_THRESHOLD ) ;
50
+
46
51
server . on ( "connection" , ( socket ) => {
47
52
expect ( socket ) . to . be . defined ;
48
53
socket . on ( "error" , done ) ;
@@ -68,40 +73,32 @@ describe("dashboard-agent", () => {
68
73
expect ( metrics . cpu . utilization ) . to . be . above ( 0 ) ;
69
74
} ;
70
75
71
- clock . tick ( REPORTING_THRESHOLD ) ;
72
- server . on ( "connection" , ( socket ) => {
73
- socket . on ( "error" , done ) ;
74
- socket . on ( "metrics" , ( data ) => {
75
- checkMetrics ( JSON . parse ( data ) ) ;
76
- done ( ) ;
77
- } ) ;
76
+ agent . _getStats ( ( err , metrics ) => {
77
+ expect ( err ) . to . be . null ;
78
+ checkMetrics ( metrics ) ;
79
+ done ( ) ;
78
80
} ) ;
79
81
} ) ;
80
82
81
- it ( "should report an event loop delay" , ( done ) => {
82
- clock . restore ( ) ;
83
- agent . destroy ( ) ;
84
- agent = dashboardAgent ( ) ;
85
-
86
- const slowFunc = ( ) => {
87
- const count = 10000 ;
88
- let values = _ . times ( count , ( ) => _ . random ( 0 , count ) ) ;
83
+ it ( "should report an event loop delay and cpu stats" , ( done ) => {
84
+ const delay = { current : 100 , max : 150 } ;
85
+ const pusageResults = { cpu : 50 } ;
86
+ const pidStub = sinon . stub ( pusage , "stat" ) . yields ( null , pusageResults ) ;
89
87
90
- values = _ . sortBy ( values ) ;
91
- } ;
88
+ agent . _delayed ( delay . max ) ;
89
+ agent . _delayed ( delay . current ) ;
92
90
93
91
const checkMetrics = ( metrics ) => {
94
- expect ( metrics . eventLoop . delay ) . to . be . above ( 0 ) ;
95
- expect ( metrics . eventLoop . high ) . to . be . above ( 0 ) ;
92
+ expect ( metrics . eventLoop . delay ) . to . equal ( delay . current ) ;
93
+ expect ( metrics . eventLoop . high ) . to . be . equal ( delay . max ) ;
94
+ expect ( metrics . cpu . utilization ) . to . equal ( pusageResults . cpu ) ;
96
95
} ;
97
96
98
- slowFunc ( ) ;
99
- server . on ( "connection" , ( socket ) => {
100
- socket . on ( "error" , ( err ) => done ( err ) ) ;
101
- socket . on ( "metrics" , ( data ) => {
102
- checkMetrics ( JSON . parse ( data ) ) ;
103
- done ( ) ;
104
- } ) ;
97
+ agent . _getStats ( ( err , metrics ) => {
98
+ expect ( err ) . to . be . null ;
99
+ checkMetrics ( metrics ) ;
100
+ pidStub . restore ( ) ;
101
+ done ( ) ;
105
102
} ) ;
106
103
} ) ;
107
104
} ) ;
0 commit comments