2020-02-22 23:31:31 +00:00
|
|
|
import { SinonStub, stub } from 'sinon';
|
2021-05-07 01:47:10 +00:00
|
|
|
import { expect } from 'chai';
|
|
|
|
|
2020-02-22 23:31:31 +00:00
|
|
|
import constants = require('../src/lib/constants');
|
|
|
|
import { spawnJournalctl } from '../src/lib/journald';
|
|
|
|
|
|
|
|
describe('journald', () => {
|
|
|
|
let spawn: SinonStub;
|
|
|
|
|
2020-05-15 11:01:51 +00:00
|
|
|
beforeEach((done) => {
|
2020-02-22 23:31:31 +00:00
|
|
|
spawn = stub(require('child_process'), 'spawn');
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
|
2020-05-15 11:01:51 +00:00
|
|
|
afterEach((done) => {
|
2020-02-22 23:31:31 +00:00
|
|
|
spawn.restore();
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('spawnJournalctl calls spawn child process with expected args', () => {
|
|
|
|
spawnJournalctl({
|
|
|
|
all: true,
|
|
|
|
follow: true,
|
|
|
|
count: 10,
|
|
|
|
unit: 'nginx.service',
|
|
|
|
containerId: 'abc123',
|
|
|
|
format: 'json-pretty',
|
|
|
|
});
|
|
|
|
|
|
|
|
const expectedCommand = `chroot`;
|
|
|
|
const expectedCoreArgs = [`${constants.rootMountPoint}`, 'journalctl'];
|
|
|
|
const expectedOptionalArgs = [
|
|
|
|
'-a',
|
|
|
|
'--follow',
|
|
|
|
'-u',
|
|
|
|
'nginx.service',
|
|
|
|
'-t',
|
|
|
|
'abc123',
|
|
|
|
'-n',
|
|
|
|
'10',
|
|
|
|
'-o',
|
|
|
|
'json-pretty',
|
|
|
|
];
|
|
|
|
|
|
|
|
const actualCommand = spawn.firstCall.args[0];
|
|
|
|
const actualCoreArgs = spawn.firstCall.args[1].slice(0, 2);
|
|
|
|
const actualOptionalArgs = spawn.firstCall.args[1].slice(2);
|
|
|
|
|
|
|
|
expect(spawn.calledOnce).to.be.true;
|
|
|
|
|
|
|
|
expect(actualCommand).deep.equal(expectedCommand);
|
|
|
|
expect(actualCoreArgs).deep.equal(expectedCoreArgs);
|
|
|
|
|
2020-05-15 11:01:51 +00:00
|
|
|
expectedOptionalArgs.forEach((arg) => {
|
2020-02-22 23:31:31 +00:00
|
|
|
expect(actualOptionalArgs).to.include(arg);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|