UNPKG

2.28 kBJavaScriptView Raw
1'use strict'
2
3const test = require('tap').test
4const endpoint = require('endpoint')
5const ProcessStat = require('../collect/process-stat.js')
6const ProcessStatDecoder = require('../format/process-stat-decoder.js')
7const ProcessStatEncoder = require('../format/process-stat-encoder.js')
8
9const normalizeSample = Object.prototype.hasOwnProperty.call(process.memoryUsage(), 'arrayBuffers')
10 ? function (sample) { return sample }
11 : function (sample) {
12 return {
13 ...sample,
14 memory: {
15 arrayBuffers: 0,
16 ...sample.memory
17 }
18 }
19 }
20
21test('Format - process stat - encoder-decoder', function (t) {
22 const stat = new ProcessStat(1)
23
24 const encoder = new ProcessStatEncoder()
25 const decoder = new ProcessStatDecoder()
26 encoder.pipe(decoder)
27
28 const inputSamples = []
29 for (let i = 0; i < 1; i++) {
30 const sample = stat.sample()
31 encoder.write(sample)
32 inputSamples.push(normalizeSample(sample))
33 }
34 encoder.end()
35
36 decoder.pipe(endpoint({ objectMode: true }, function (err, outputSamples) {
37 if (err) t.ifError(err)
38 t.strictDeepEqual(inputSamples, outputSamples)
39 t.end()
40 }))
41})
42
43test('Format - process stat - partial decoding', function (t) {
44 const stat = new ProcessStat(1)
45
46 const encoder = new ProcessStatEncoder()
47 const decoder = new ProcessStatDecoder()
48
49 // encode a sample
50 const sample = stat.sample()
51 encoder.write(sample)
52 const sampleEncoded = encoder.read()
53
54 // No data, chunk is too small
55 decoder.write(sampleEncoded.slice(0, 20))
56 t.strictEqual(decoder.read(), null)
57
58 // Ended previuse sample, but a partial remains
59 decoder.write(Buffer.concat([
60 sampleEncoded.slice(20),
61 sampleEncoded.slice(0, 30)
62 ]))
63 t.strictDeepEqual(decoder.read(), normalizeSample(sample))
64 t.strictEqual(decoder.read(), null)
65
66 // Ended previuse, no partial remains
67 decoder.write(Buffer.concat([
68 sampleEncoded.slice(30),
69 sampleEncoded
70 ]))
71 t.strictDeepEqual(decoder.read(), normalizeSample(sample))
72 t.strictDeepEqual(decoder.read(), normalizeSample(sample))
73 t.strictEqual(decoder.read(), null)
74
75 // No previuse ended
76 decoder.write(sampleEncoded)
77 t.strictDeepEqual(decoder.read(), normalizeSample(sample))
78
79 // No more data
80 t.strictEqual(decoder.read(), null)
81 t.end()
82})