UNPKG

3.73 kBJavaScriptView Raw
1'use strict'
2
3const test = require('tap').test
4const semver = require('semver')
5const analyseMemory = require('../analysis/analyse-memory.js')
6const generateTraceEvent = require('./generate-trace-event.js')
7
8const oldNodeVersion = semver.parse('6.9.9')
9const newNodeVersion = semver.parse('10.0.0')
10
11test('analyse memory - genereate trace event', function (t) {
12 const gcevents = generateTraceEvent(
13 'SSSSS.....--MMMMMFC'
14 )
15 t.strictDeepEquals(gcevents, [
16 {
17 pid: 0,
18 tid: 0,
19 ts: 0,
20 ph: 'X',
21 cat: 'v8',
22 name: 'V8.GCScavenger',
23 dur: 50000,
24 args: { startTimestamp: 0, endTimestamp: 50 }
25 },
26 {
27 pid: 0,
28 tid: 0,
29 ts: 300000,
30 ph: 'X',
31 cat: 'v8',
32 name: 'V8.GCIncrementalMarking',
33 dur: 50000,
34 args: { startTimestamp: 300, endTimestamp: 350 }
35 },
36 {
37 pid: 0,
38 tid: 0,
39 ts: 350000,
40 ph: 'X',
41 cat: 'v8',
42 name: 'V8.GCIncrementalMarkingFinalize',
43 dur: 10000,
44 args: { startTimestamp: 350, endTimestamp: 360 }
45 },
46 {
47 pid: 0,
48 tid: 0,
49 ts: 360000,
50 ph: 'X',
51 cat: 'v8',
52 name: 'V8.GCFinalizeMC',
53 dur: 10000,
54 args: { startTimestamp: 360, endTimestamp: 370 }
55 }
56 ])
57 t.end()
58})
59
60test('analyse memory - no issues', function (t) {
61 const gcevents = generateTraceEvent(
62 '-S....-S....-S....-S....-S....-S....-S....-S....-S....-S....' +
63 '-M....-M....-S....-M....-M....-S....-M....-M....-FFF.. CCC..'
64 )
65
66 for (const nodeVersion of [oldNodeVersion, newNodeVersion]) {
67 t.strictDeepEquals(analyseMemory({ nodeVersion }, [], gcevents), {
68 external: 'none',
69 heapTotal: 'none',
70 heapUsed: 'none',
71 rss: 'none'
72 })
73 }
74 t.end()
75})
76
77test('analyse memory - no data', function (t) {
78 const gcevents = generateTraceEvent(
79 '.....'
80 )
81
82 for (const nodeVersion of [oldNodeVersion, newNodeVersion]) {
83 t.strictDeepEquals(analyseMemory({ nodeVersion }, [], gcevents), {
84 external: 'none',
85 heapTotal: 'data',
86 heapUsed: 'data',
87 rss: 'none'
88 })
89 }
90 t.end()
91})
92
93test('analyse memory - only old node version has issue', function (t) {
94 const gcevents = generateTraceEvent(
95 '-S....-S....-S....-S....-S....-S....-S....-S....-S....-S....' +
96 ' MMM..-MMM..-MMM..-MMM..-S....-MMM-.-MMM-.-MMM..-FFFF. CCCCC'
97 )
98
99 t.strictDeepEquals(analyseMemory({ nodeVersion: newNodeVersion }, [], gcevents), {
100 external: 'none',
101 heapTotal: 'none',
102 heapUsed: 'none',
103 rss: 'none'
104 })
105
106 t.strictDeepEquals(analyseMemory({ nodeVersion: oldNodeVersion }, [], gcevents), {
107 external: 'none',
108 heapTotal: 'performance',
109 heapUsed: 'none',
110 rss: 'none'
111 })
112 t.end()
113})
114
115test('analyse memory - issue old space', function (t) {
116 const gcevents = generateTraceEvent(
117 '-S....-S....-S....-S....-S....-S....-S....-S....-S....-S....' +
118 '-M.M.M.-FFF. CCCCCCCCCC.-S....-S....-S....-S....-S....-S....'
119 )
120
121 for (const nodeVersion of [oldNodeVersion, newNodeVersion]) {
122 t.strictDeepEquals(analyseMemory({ nodeVersion }, [], gcevents), {
123 external: 'none',
124 heapTotal: 'performance',
125 heapUsed: 'none',
126 rss: 'none'
127 })
128 }
129 t.end()
130})
131
132test('analyse memory - issue with new space', function (t) {
133 const gcevents = generateTraceEvent(
134 ' S.S.. S.S.. S.S.. S.S.. S.S.. S.S.. S.S.. S.S.. S.S.. S.S..' +
135 ' S.M.. S.M.. S.S.. S.M.. S.M.. S.S.. S.M.. S.S.. FFF.. CCC..'
136 )
137
138 for (const nodeVersion of [oldNodeVersion, newNodeVersion]) {
139 t.strictDeepEquals(analyseMemory({ nodeVersion }, [], gcevents), {
140 external: 'none',
141 heapTotal: 'none',
142 heapUsed: 'performance',
143 rss: 'none'
144 })
145 }
146 t.end()
147})