UNPKG

1.91 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
9test('Format - process stat - encoder-decoder', function (t) {
10 const stat = new ProcessStat(1)
11
12 const encoder = new ProcessStatEncoder()
13 const decoder = new ProcessStatDecoder()
14 encoder.pipe(decoder)
15
16 const inputSamples = []
17 for (let i = 0; i < 1; i++) {
18 const sample = stat.sample()
19 encoder.write(sample)
20 inputSamples.push(sample)
21 }
22 encoder.end()
23
24 decoder.pipe(endpoint({ objectMode: true }, function (err, outputSamples) {
25 if (err) t.ifError(err)
26 t.strictDeepEqual(inputSamples, outputSamples)
27 t.end()
28 }))
29})
30
31test('Format - process stat - partial decoding', function (t) {
32 const stat = new ProcessStat(1)
33
34 const encoder = new ProcessStatEncoder()
35 const decoder = new ProcessStatDecoder()
36
37 // encode a sample
38 const sample = stat.sample()
39 encoder.write(sample)
40 const sampleEncoded = encoder.read()
41
42 // No data, chunk is too small
43 decoder.write(sampleEncoded.slice(0, 20))
44 t.strictEqual(decoder.read(), null)
45
46 // Ended previuse sample, but a partial remains
47 decoder.write(Buffer.concat([
48 sampleEncoded.slice(20),
49 sampleEncoded.slice(0, 30)
50 ]))
51 t.strictDeepEqual(decoder.read(), sample)
52 t.strictEqual(decoder.read(), null)
53
54 // Ended previuse, no partial remains
55 decoder.write(Buffer.concat([
56 sampleEncoded.slice(30),
57 sampleEncoded
58 ]))
59 t.strictDeepEqual(decoder.read(), sample)
60 t.strictDeepEqual(decoder.read(), sample)
61 t.strictEqual(decoder.read(), null)
62
63 // No previuse ended
64 decoder.write(sampleEncoded)
65 t.strictDeepEqual(decoder.read(), sample)
66
67 // No more data
68 t.strictEqual(decoder.read(), null)
69 t.end()
70})