UNPKG

1.76 kBJavaScriptView Raw
1'use strict'
2
3const fs = require('fs')
4const getLoggingPaths = require('@nearform/clinic-common').getLoggingPaths('doctor')
5const Analysis = require('../analysis/index.js')
6const SystemInfoDecoder = require('../format/system-info-decoder.js')
7const TraceEventDecoder = require('../format/trace-event-decoder.js')
8const ProcessStatDecoder = require('../format/process-stat-decoder.js')
9const TraceEventToCSV = require('./trace-event-to-csv.js')
10const ProcessStatToCSV = require('./process-stat-to-csv.js')
11
12if (process.argv.length < 3) {
13 console.error('usage: node sample-to-csv.js pid.clinic-doctor')
14 process.exit(1)
15}
16
17// Load data
18const paths = getLoggingPaths({ path: process.argv[2] })
19const systemInfoReader = fs.createReadStream(paths['/systeminfo'])
20 .pipe(new SystemInfoDecoder())
21const traceEventReader = fs.createReadStream(paths['/traceevent'])
22 .pipe(new TraceEventDecoder(systemInfoReader))
23const processStatReader = fs.createReadStream(paths['/processstat'])
24 .pipe(new ProcessStatDecoder())
25
26new 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
42console.log('csv file saved at:')
43console.log(` ${paths['/traceevent']}.csv`)
44console.log(` ${paths['/processstat']}.csv`)