@@ -35,6 +35,49 @@ test('pool will maintain run and wait time histograms by default', async (t: Tes
3535 t . assert . strictEqual ( typeof histogram . resetWaitTime , 'function' ) ;
3636} ) ;
3737
38+ test ( 'pool will maintain reset histograms upon call' , async ( t : TestContext ) => {
39+ const pool = new Piscina ( {
40+ filename : resolve ( __dirname , 'fixtures/eval.js' )
41+ } ) ;
42+
43+ const tasks = [ ] ;
44+ for ( let n = 0 ; n < 10 ; n ++ ) {
45+ tasks . push ( pool . run ( '42' ) ) ;
46+ }
47+ await Promise . all ( tasks ) ;
48+
49+ const histogram = pool . histogram ;
50+ let waitTime = histogram . waitTime ;
51+ t . assert . ok ( waitTime ) ;
52+ t . assert . strictEqual ( typeof waitTime . average , 'number' ) ;
53+ t . assert . strictEqual ( typeof waitTime . mean , 'number' ) ;
54+ t . assert . strictEqual ( typeof waitTime . stddev , 'number' ) ;
55+ t . assert . ok ( waitTime . min > 0 ) ;
56+ t . assert . ok ( waitTime . max > 0 ) ;
57+
58+ let runTime = histogram . runTime ;
59+ t . assert . ok ( runTime ) ;
60+ t . assert . strictEqual ( typeof runTime . average , 'number' ) ;
61+ t . assert . strictEqual ( typeof runTime . mean , 'number' ) ;
62+ t . assert . strictEqual ( typeof runTime . stddev , 'number' ) ;
63+ t . assert . ok ( runTime . min > 0 ) ;
64+ t . assert . ok ( runTime . max > 0 ) ;
65+
66+ histogram . resetRunTime ( ) ;
67+ runTime = histogram . runTime ;
68+ t . assert . ok ( Number . isNaN ( runTime . average ) ) ;
69+ t . assert . ok ( Number . isNaN ( runTime . mean ) ) ;
70+ t . assert . ok ( Number . isNaN ( runTime . stddev ) ) ;
71+ t . assert . strictEqual ( runTime . max , 0 ) ;
72+
73+ histogram . resetWaitTime ( ) ;
74+ waitTime = histogram . waitTime ;
75+ t . assert . ok ( Number . isNaN ( waitTime . average ) ) ;
76+ t . assert . ok ( Number . isNaN ( waitTime . mean ) ) ;
77+ t . assert . ok ( Number . isNaN ( waitTime . stddev ) ) ;
78+ t . assert . strictEqual ( waitTime . max , 0 ) ;
79+ } ) ;
80+
3881test ( 'pool will maintain run and wait time histograms when recordTiming is true' , async ( t : TestContext ) => {
3982 const pool = new Piscina ( {
4083 filename : resolve ( __dirname , 'fixtures/eval.js' ) ,
0 commit comments