aws-cdk
Version:
CDK Toolkit, the command line tool for CDK apps
84 lines • 10.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint-disable import/order */
const chalk_1 = require("chalk");
const logs_monitor_1 = require("../../../lib/api/logs/logs-monitor");
const util_1 = require("../../util");
const mock_sdk_1 = require("../../util/mock-sdk");
let sdk;
let stderrMock;
let monitor;
beforeEach(() => {
monitor = new logs_monitor_1.CloudWatchLogEventMonitor(new Date(T100));
stderrMock = jest.spyOn(process.stderr, 'write').mockImplementation(() => { return true; });
sdk = new mock_sdk_1.MockSdk();
});
afterEach(() => {
stderrMock.mockRestore();
monitor.deactivate();
});
test('process events', async () => {
// GIVEN
const eventDate = new Date(T0 + 102 * 1000);
sdk.stubCloudWatchLogs({
filterLogEvents() {
return {
events: [event(102, 'message', eventDate)],
};
},
});
monitor.addLogGroups({
name: 'name',
account: '11111111111',
region: 'us-east-1',
}, sdk, ['loggroup']);
// WHEN
monitor.activate();
// need time for the log processing to occur
await (0, util_1.sleep)(1000);
// THEN
const expectedLocaleTimeString = eventDate.toLocaleTimeString();
expect(stderrMock).toHaveBeenCalledTimes(1);
expect(stderrMock.mock.calls[0][0]).toContain(`[${(0, chalk_1.blue)('loggroup')}] ${(0, chalk_1.yellow)(expectedLocaleTimeString)} message`);
});
test('process truncated events', async () => {
// GIVEN
const eventDate = new Date(T0 + 102 * 1000);
const events = [];
for (let i = 0; i < 100; i++) {
events.push(event(102 + i, 'message' + i, eventDate));
}
sdk.stubCloudWatchLogs({
filterLogEvents() {
return {
events,
nextToken: 'some-token',
};
},
});
monitor.addLogGroups({
name: 'name',
account: '11111111111',
region: 'us-east-1',
}, sdk, ['loggroup']);
// WHEN
monitor.activate();
// need time for the log processing to occur
await (0, util_1.sleep)(1000);
// THEN
const expectedLocaleTimeString = eventDate.toLocaleTimeString();
expect(stderrMock).toHaveBeenCalledTimes(101);
expect(stderrMock.mock.calls[0][0]).toContain(`[${(0, chalk_1.blue)('loggroup')}] ${(0, chalk_1.yellow)(expectedLocaleTimeString)} message`);
expect(stderrMock.mock.calls[100][0]).toContain(`[${(0, chalk_1.blue)('loggroup')}] ${(0, chalk_1.yellow)(expectedLocaleTimeString)} >>> \`watch\` shows only the first 100 log messages - the rest have been truncated...`);
});
const T0 = 1597837230504;
const T100 = T0 + 100 * 1000;
function event(nr, message, timestamp) {
return {
eventId: `${nr}`,
message,
timestamp: timestamp.getTime(),
ingestionTime: timestamp.getTime(),
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ncy1tb25pdG9yLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2dzLW1vbml0b3IudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFpQztBQUNqQyxpQ0FBcUM7QUFDckMscUVBQStFO0FBQy9FLHFDQUFtQztBQUNuQyxrREFBOEM7QUFFOUMsSUFBSSxHQUFZLENBQUM7QUFDakIsSUFBSSxVQUE0QixDQUFDO0FBQ2pDLElBQUksT0FBa0MsQ0FBQztBQUN2QyxVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsT0FBTyxHQUFHLElBQUksd0NBQXlCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsR0FBRyxHQUFHLElBQUksa0JBQU8sRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUNiLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QixPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDaEMsUUFBUTtJQUNSLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1FBQ3JCLGVBQWU7WUFDYixPQUFPO2dCQUNMLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQzNDLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxDQUFDLFlBQVksQ0FDbEI7UUFDRSxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLE1BQU0sRUFBRSxXQUFXO0tBQ3BCLEVBQ0QsR0FBRyxFQUNILENBQUMsVUFBVSxDQUFDLENBQ2IsQ0FBQztJQUNGLE9BQU87SUFDUCxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsNENBQTRDO0lBQzVDLE1BQU0sSUFBQSxZQUFLLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFbEIsT0FBTztJQUNQLE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDaEUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDM0MsSUFBSSxJQUFBLFlBQUksRUFBQyxVQUFVLENBQUMsS0FBSyxJQUFBLGNBQU0sRUFBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQ3BFLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywwQkFBMEIsRUFBRSxLQUFLLElBQUksRUFBRTtJQUMxQyxRQUFRO0lBQ1IsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBeUMsRUFBRSxDQUFDO0lBQ3hELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFDLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDckQ7SUFFRCxHQUFHLENBQUMsa0JBQWtCLENBQUM7UUFDckIsZUFBZTtZQUNiLE9BQU87Z0JBQ0wsTUFBTTtnQkFDTixTQUFTLEVBQUUsWUFBWTthQUN4QixDQUFDO1FBQ0osQ0FBQztLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxZQUFZLENBQ2xCO1FBQ0UsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUsYUFBYTtRQUN0QixNQUFNLEVBQUUsV0FBVztLQUNwQixFQUNELEdBQUcsRUFDSCxDQUFDLFVBQVUsQ0FBQyxDQUNiLENBQUM7SUFDRixPQUFPO0lBQ1AsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLDRDQUE0QztJQUM1QyxNQUFNLElBQUEsWUFBSyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBRWxCLE9BQU87SUFDUCxNQUFNLHdCQUF3QixHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQzNDLElBQUksSUFBQSxZQUFJLEVBQUMsVUFBVSxDQUFDLEtBQUssSUFBQSxjQUFNLEVBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUNwRSxDQUFDO0lBQ0YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUM3QyxJQUFJLElBQUEsWUFBSSxFQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUEsY0FBTSxFQUFDLHdCQUF3QixDQUFDLHdGQUF3RixDQUNsSixDQUFDO0FBQ0osQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUM7QUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7QUFDN0IsU0FBUyxLQUFLLENBQUMsRUFBVSxFQUFFLE9BQWUsRUFBRSxTQUFlO0lBQ3pELE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDaEIsT0FBTztRQUNQLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO1FBQzlCLGFBQWEsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFO0tBQ25DLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L29yZGVyICovXG5pbXBvcnQgeyBibHVlLCB5ZWxsb3cgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBDbG91ZFdhdGNoTG9nRXZlbnRNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS9sb2dzL2xvZ3MtbW9uaXRvcic7XG5pbXBvcnQgeyBzbGVlcCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgTW9ja1NkayB9IGZyb20gJy4uLy4uL3V0aWwvbW9jay1zZGsnO1xuXG5sZXQgc2RrOiBNb2NrU2RrO1xubGV0IHN0ZGVyck1vY2s6IGplc3QuU3B5SW5zdGFuY2U7XG5sZXQgbW9uaXRvcjogQ2xvdWRXYXRjaExvZ0V2ZW50TW9uaXRvcjtcbmJlZm9yZUVhY2goKCkgPT4ge1xuICBtb25pdG9yID0gbmV3IENsb3VkV2F0Y2hMb2dFdmVudE1vbml0b3IobmV3IERhdGUoVDEwMCkpO1xuICBzdGRlcnJNb2NrID0gamVzdC5zcHlPbihwcm9jZXNzLnN0ZGVyciwgJ3dyaXRlJykubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xuICBzZGsgPSBuZXcgTW9ja1NkaygpO1xufSk7XG5cbmFmdGVyRWFjaCgoKSA9PiB7XG4gIHN0ZGVyck1vY2subW9ja1Jlc3RvcmUoKTtcbiAgbW9uaXRvci5kZWFjdGl2YXRlKCk7XG59KTtcblxudGVzdCgncHJvY2VzcyBldmVudHMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGV2ZW50RGF0ZSA9IG5ldyBEYXRlKFQwICsgMTAyICogMTAwMCk7XG4gIHNkay5zdHViQ2xvdWRXYXRjaExvZ3Moe1xuICAgIGZpbHRlckxvZ0V2ZW50cygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV2ZW50czogW2V2ZW50KDEwMiwgJ21lc3NhZ2UnLCBldmVudERhdGUpXSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG4gIG1vbml0b3IuYWRkTG9nR3JvdXBzKFxuICAgIHtcbiAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgIGFjY291bnQ6ICcxMTExMTExMTExMScsXG4gICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgIH0sXG4gICAgc2RrLFxuICAgIFsnbG9nZ3JvdXAnXSxcbiAgKTtcbiAgLy8gV0hFTlxuICBtb25pdG9yLmFjdGl2YXRlKCk7XG4gIC8vIG5lZWQgdGltZSBmb3IgdGhlIGxvZyBwcm9jZXNzaW5nIHRvIG9jY3VyXG4gIGF3YWl0IHNsZWVwKDEwMDApO1xuXG4gIC8vIFRIRU5cbiAgY29uc3QgZXhwZWN0ZWRMb2NhbGVUaW1lU3RyaW5nID0gZXZlbnREYXRlLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICBleHBlY3Qoc3RkZXJyTW9jaykudG9IYXZlQmVlbkNhbGxlZFRpbWVzKDEpO1xuICBleHBlY3Qoc3RkZXJyTW9jay5tb2NrLmNhbGxzWzBdWzBdKS50b0NvbnRhaW4oXG4gICAgYFske2JsdWUoJ2xvZ2dyb3VwJyl9XSAke3llbGxvdyhleHBlY3RlZExvY2FsZVRpbWVTdHJpbmcpfSBtZXNzYWdlYCxcbiAgKTtcbn0pO1xuXG50ZXN0KCdwcm9jZXNzIHRydW5jYXRlZCBldmVudHMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGNvbnN0IGV2ZW50RGF0ZSA9IG5ldyBEYXRlKFQwICsgMTAyICogMTAwMCk7XG4gIGNvbnN0IGV2ZW50czogQVdTLkNsb3VkV2F0Y2hMb2dzLkZpbHRlcmVkTG9nRXZlbnRzID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyBpKyspIHtcbiAgICBldmVudHMucHVzaChldmVudCgxMDIraSwgJ21lc3NhZ2UnICsgaSwgZXZlbnREYXRlKSk7XG4gIH1cblxuICBzZGsuc3R1YkNsb3VkV2F0Y2hMb2dzKHtcbiAgICBmaWx0ZXJMb2dFdmVudHMoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBldmVudHMsXG4gICAgICAgIG5leHRUb2tlbjogJ3NvbWUtdG9rZW4nLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcbiAgbW9uaXRvci5hZGRMb2dHcm91cHMoXG4gICAge1xuICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgYWNjb3VudDogJzExMTExMTExMTExJyxcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgfSxcbiAgICBzZGssXG4gICAgWydsb2dncm91cCddLFxuICApO1xuICAvLyBXSEVOXG4gIG1vbml0b3IuYWN0aXZhdGUoKTtcbiAgLy8gbmVlZCB0aW1lIGZvciB0aGUgbG9nIHByb2Nlc3NpbmcgdG8gb2NjdXJcbiAgYXdhaXQgc2xlZXAoMTAwMCk7XG5cbiAgLy8gVEhFTlxuICBjb25zdCBleHBlY3RlZExvY2FsZVRpbWVTdHJpbmcgPSBldmVudERhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gIGV4cGVjdChzdGRlcnJNb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoMTAxKTtcbiAgZXhwZWN0KHN0ZGVyck1vY2subW9jay5jYWxsc1swXVswXSkudG9Db250YWluKFxuICAgIGBbJHtibHVlKCdsb2dncm91cCcpfV0gJHt5ZWxsb3coZXhwZWN0ZWRMb2NhbGVUaW1lU3RyaW5nKX0gbWVzc2FnZWAsXG4gICk7XG4gIGV4cGVjdChzdGRlcnJNb2NrLm1vY2suY2FsbHNbMTAwXVswXSkudG9Db250YWluKFxuICAgIGBbJHtibHVlKCdsb2dncm91cCcpfV0gJHt5ZWxsb3coZXhwZWN0ZWRMb2NhbGVUaW1lU3RyaW5nKX0gPj4+IFxcYHdhdGNoXFxgIHNob3dzIG9ubHkgdGhlIGZpcnN0IDEwMCBsb2cgbWVzc2FnZXMgLSB0aGUgcmVzdCBoYXZlIGJlZW4gdHJ1bmNhdGVkLi4uYCxcbiAgKTtcbn0pO1xuXG5jb25zdCBUMCA9IDE1OTc4MzcyMzA1MDQ7XG5jb25zdCBUMTAwID0gVDAgKyAxMDAgKiAxMDAwO1xuZnVuY3Rpb24gZXZlbnQobnI6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiBBV1MuQ2xvdWRXYXRjaExvZ3MuRmlsdGVyZWRMb2dFdmVudCB7XG4gIHJldHVybiB7XG4gICAgZXZlbnRJZDogYCR7bnJ9YCxcbiAgICBtZXNzYWdlLFxuICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLmdldFRpbWUoKSxcbiAgICBpbmdlc3Rpb25UaW1lOiB0aW1lc3RhbXAuZ2V0VGltZSgpLFxuICB9O1xufVxuIl19