1 | 'use strict'
|
2 |
|
3 | const test = require('tap').test
|
4 | const endpoint = require('endpoint')
|
5 | const ProcessStat = require('../collect/process-stat.js')
|
6 | const ProcessStatDecoder = require('../format/process-stat-decoder.js')
|
7 | const ProcessStatEncoder = require('../format/process-stat-encoder.js')
|
8 |
|
9 | const 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 |
|
21 | test('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 |
|
43 | test('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 |
|
50 | const sample = stat.sample()
|
51 | encoder.write(sample)
|
52 | const sampleEncoded = encoder.read()
|
53 |
|
54 |
|
55 | decoder.write(sampleEncoded.slice(0, 20))
|
56 | t.strictEqual(decoder.read(), null)
|
57 |
|
58 |
|
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 |
|
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 |
|
76 | decoder.write(sampleEncoded)
|
77 | t.strictDeepEqual(decoder.read(), normalizeSample(sample))
|
78 |
|
79 |
|
80 | t.strictEqual(decoder.read(), null)
|
81 | t.end()
|
82 | })
|