1 | 'use strict'
|
2 |
|
3 | const fs = require('fs')
|
4 | const getLoggingPaths = require('@nearform/clinic-common').getLoggingPaths('doctor')
|
5 | const Analysis = require('../analysis/index.js')
|
6 | const SystemInfoDecoder = require('../format/system-info-decoder.js')
|
7 | const TraceEventDecoder = require('../format/trace-event-decoder.js')
|
8 | const ProcessStatDecoder = require('../format/process-stat-decoder.js')
|
9 | const TraceEventToCSV = require('./trace-event-to-csv.js')
|
10 | const ProcessStatToCSV = require('./process-stat-to-csv.js')
|
11 |
|
12 | if (process.argv.length < 3) {
|
13 | console.error('usage: node sample-to-csv.js pid.clinic-doctor')
|
14 | process.exit(1)
|
15 | }
|
16 |
|
17 |
|
18 | const paths = getLoggingPaths({ path: process.argv[2] })
|
19 | const systemInfoReader = fs.createReadStream(paths['/systeminfo'])
|
20 | .pipe(new SystemInfoDecoder())
|
21 | const traceEventReader = fs.createReadStream(paths['/traceevent'])
|
22 | .pipe(new TraceEventDecoder(systemInfoReader))
|
23 | const processStatReader = fs.createReadStream(paths['/processstat'])
|
24 | .pipe(new ProcessStatDecoder())
|
25 |
|
26 | new Analysis(traceEventReader, processStatReader)
|
27 | .once('data', function (result) {
|
28 | const systemInfoReader = fs.createReadStream(paths['/systeminfo'])
|
29 | .pipe(new SystemInfoDecoder())
|
30 |
|
31 | fs.createReadStream(paths['/traceevent'])
|
32 | .pipe(new TraceEventDecoder(systemInfoReader))
|
33 | .pipe(new TraceEventToCSV(result.interval))
|
34 | .pipe(fs.createWriteStream(paths['/traceevent'] + '.csv'))
|
35 |
|
36 | fs.createReadStream(paths['/processstat'])
|
37 | .pipe(new ProcessStatDecoder())
|
38 | .pipe(new ProcessStatToCSV(result.interval))
|
39 | .pipe(fs.createWriteStream(paths['/processstat'] + '.csv'))
|
40 | })
|
41 |
|
42 | console.log('csv file saved at:')
|
43 | console.log(` ${paths['/traceevent']}.csv`)
|
44 | console.log(` ${paths['/processstat']}.csv`)
|