UNPKG

1.36 kBJavaScriptView Raw
1const assert = require('assert')
2const path = require('path')
3const z1 = require('../..')
4
5/**
6 * @typedef appProps
7 * @property {string} [dir]
8 * @property {number[]} [ports]
9 * @property {number} [pending]
10 * @property {number} [available]
11 * @property {number} [killed]
12 * @property {number} [reviveCount]
13 */
14
15/**
16 * Verify the statistics of an app.
17 * @param {*} name - The name of the app.
18 * @param {appProps} props - The properties of the app.
19 */
20async function verifyApp(name, props = {}) {
21 props = Object.assign({
22 dir: path.resolve('example', name),
23 ports: [],
24 pending: 0,
25 available: 0,
26 killed: 0,
27 reviveCount: 0
28 }, props)
29
30 const stats = await z1.info(name)
31
32 for (let i = 0; i < props.ports.length; i += 1) {
33 assert.strictEqual(stats.ports[i], props.ports[i], `"${name}" should listen to port ${stats.ports[i]}.`)
34 }
35
36 assert.strictEqual(stats.pending, props.pending, `"${name}" should have ${props.pending} pending worker(s).`)
37 assert.strictEqual(stats.available, props.available, `"${name}" should have ${props.available} available worker(s).`)
38 assert.strictEqual(stats.killed, props.killed, `"${name}" should have ${props.killed} killed worker(s).`)
39 assert.strictEqual(stats.reviveCount, props.reviveCount, `"${name}" should be revived ${props.reviveCount} time(s).`)
40}
41
42module.exports = verifyApp