1 | 'use strict'
|
2 |
|
3 | const test = require('tap').test
|
4 | const issueCategory = require('../analysis/issue-category.js')
|
5 |
|
6 | test('Analysis - issue category', function (t) {
|
7 | const testQueries = [
|
8 | 'cpu memory delay handles -> unknown',
|
9 | 'cpu memory delay ....... -> unknown',
|
10 | 'cpu memory ..... handles -> unknown',
|
11 | 'cpu memory ..... ....... -> unknown',
|
12 | 'cpu ...... delay handles -> unknown',
|
13 | 'cpu ...... delay ....... -> unknown',
|
14 | 'cpu ...... ..... handles -> io',
|
15 | 'cpu ...... ..... ....... -> io',
|
16 | '... memory delay handles -> unknown',
|
17 | '... memory delay ....... -> gc',
|
18 | '... memory ..... handles -> unknown',
|
19 | '... memory ..... ....... -> gc',
|
20 | '... ...... delay handles -> unknown',
|
21 | '... ...... delay ....... -> event-loop',
|
22 | '... ...... ..... handles -> io',
|
23 | '... ...... ..... ....... -> none'
|
24 | ]
|
25 |
|
26 | const queryParser = new RegExp([
|
27 | /^(cpu|\.{3}) (memory|\.{6})/.source,
|
28 | / (delay|\.{5}) (handles|\.{7})/.source,
|
29 | / -> (gc|event-loop|io|none|unknown)$/.source
|
30 | ].join(''))
|
31 |
|
32 | for (const testQuery of testQueries) {
|
33 | const parsed = testQuery.match(queryParser)
|
34 | if (parsed === null) {
|
35 | t.fail(`could not parse "${testQuery}"`)
|
36 | }
|
37 |
|
38 | const issues = {
|
39 | cpu: parsed[1] === 'cpu',
|
40 | memory: {
|
41 | external: false,
|
42 | rss: false,
|
43 | heapTotal: false,
|
44 | heapUsed: parsed[2] === 'memory'
|
45 | },
|
46 | delay: parsed[3] === 'delay',
|
47 | handles: parsed[4] === 'handles'
|
48 | }
|
49 | const expected = parsed[5]
|
50 |
|
51 | t.strictEqual(issueCategory(issues), expected, testQuery)
|
52 | }
|
53 |
|
54 | t.end()
|
55 | })
|