From 3621d656a63dc207e71bb408668bc0e7bc59f1d5 Mon Sep 17 00:00:00 2001 From: Stephane MEYER Date: Tue, 10 Sep 2024 00:42:17 +0200 Subject: [PATCH 1/9] write unit tests for logCapture --- @xen-orchestra/log/capture.test.js | 225 +++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 @xen-orchestra/log/capture.test.js diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js new file mode 100644 index 00000000000..954cfb18638 --- /dev/null +++ b/@xen-orchestra/log/capture.test.js @@ -0,0 +1,225 @@ +'use strict' + +const { describe, it, beforeEach } = require('node:test') +const assert = require('node:assert/strict') +const { createLogger } = require('@xen-orchestra/log') +const { configure } = require('@xen-orchestra/log/configure') +const { captureLogs } = require('@xen-orchestra/log/capture') +const { createCaptureTransport } = require('@xen-orchestra/log/capture') +const { dedupe } = require('@xen-orchestra/log/dedupe') + +describe('capture log', () => { + const logger = createLogger('test-logger') + + const logsTransportDefault = [] + const transportTest = message => { + logsTransportDefault.push(message) + } + + const logsTransportFatal = [] + const transportFatal = message => { + logsTransportFatal.push(message) + } + + beforeEach(() => { + configure( + createCaptureTransport([ + { + level: 'fatal', + transport: transportFatal, + }, + { + level: 'debug', + transport: transportTest, + }, + ]) + ) + + logsTransportDefault.length = 0 + logsTransportFatal.length = 0 + }) + + it('should log test with all its attributes', () => { + const expected1 = { + level: 20, + namespace: 'test-logger', + message: 'test 1 with all its attributes', + time: new Date(), + } + logger.debug(expected1.message) + assert.equal(logsTransportDefault[0]?.message, expected1.message) + assert.equal(typeof logsTransportDefault[0]?.level, 'number', `level attribute should exist`) + assert.ok(typeof logsTransportDefault[0]?.namespace === 'string', `namespace attribute should exist`) + assert.ok(logsTransportDefault[0]?.time instanceof Date, `time attribute should exist`) + }) + it('should log test 1 and 2', () => { + const expected1 = { + level: 20, + namespace: 'test-logger', + message: 'should log test 1/2', + time: new Date(), + } + const expected2 = { + level: 20, + namespace: 'test-logger', + message: 'should log test 2/2', + time: new Date(), + } + logger.debug(expected1.message) + logger.debug(expected2.message) + assert.equal(logsTransportDefault[0].message, expected1.message) + assert.equal(logsTransportDefault[1].message, expected2.message) + }) + it('should log tests for debug', () => { + const expectedDebug = { + data: undefined, + level: 20, + namespace: 'test-logger', + message: 'synchronous log debug', + time: new Date(), + } + logger.debug(expectedDebug.message) + assert.deepEqual(logsTransportDefault[0].message, expectedDebug.message) + assert.deepEqual(logsTransportDefault[0].level, expectedDebug.level) + }) + it('should log tests for info', () => { + const expectedInfo = { + data: undefined, + level: 30, + namespace: 'test-logger', + message: 'synchronous log info', + time: new Date(), + } + logger.info(expectedInfo.message) + assert.deepEqual(logsTransportDefault[0].message, expectedInfo.message) + assert.deepEqual(logsTransportDefault[0].level, expectedInfo.level) + }) + it('should log tests for warn', () => { + const expectedWarn = { + data: undefined, + level: 40, + namespace: 'test-logger', + message: 'synchronous log warn', + time: new Date(), + } + logger.warn(expectedWarn.message) + assert.deepEqual(logsTransportDefault[0].message, expectedWarn.message) + assert.deepEqual(logsTransportDefault[0].level, expectedWarn.level) + }) + it('should log tests for error', () => { + const expectedError = { + data: undefined, + level: 50, + namespace: 'test-logger', + message: 'synchronous log error', + time: new Date(), + } + logger.error(expectedError.message) + assert.deepEqual(logsTransportDefault[0].message, expectedError.message) + assert.deepEqual(logsTransportDefault[0].level, expectedError.level) + assert.ok(logsTransportFatal.length === 0, 'fatal logs should be empty') + }) + it('should log tests for fatal', () => { + const expectedFatal = { + data: undefined, + level: 60, + namespace: 'test-logger', + message: 'synchronous log fatal', + time: new Date(), + } + logger.fatal(expectedFatal.message) + assert.deepEqual(logsTransportFatal[0].message, expectedFatal.message) + assert.deepEqual(logsTransportFatal[0].level, expectedFatal.level) + }) + it('should log an error on null', () => { + const expected1 = { + data: { level: 20, value: null }, + level: 40, + namespace: 'test-logger', + message: 'incorrect value passed to logger', + time: new Date(), + } + logger.debug(null) + assert.deepEqual(logsTransportDefault[0].data, expected1.data) + }) + it('should log an error on undefined', () => { + const expected1 = { + data: { level: 20, value: undefined }, + level: 40, + namespace: 'test-logger', + message: 'incorrect value passed to logger', + time: new Date(), + } + logger.debug(undefined) + assert.deepEqual(logsTransportDefault[0].data, expected1.data) + }) + it('should capture logs', async () => { + const captureLog = [] + await captureLogs( + log => { + // every logs emitted in the async context of `fn` will arrive here + // + // do not emit logs in this function or this will create a loop. + captureLog.push(log) + // console.log(`[captureLog] ${JSON.stringify(log)}`) + // console.log(`[captureLog]`, captureLog) // ${JSON.stringify(captureLog)}`) + }, + async () => { + logger.debug('synchronous logs are captured') + + setTimeout(() => { + logger.debug('logs from asynchronous callbacks too') + }, 50) + + await new Promise(resolve => setTimeout(resolve, 50)) + + logger.debug('logs in async functions or promise chains too') + + // To escape capture, run code in `captureLogs` with `undefined` + // as the first param + captureLogs(undefined, () => { + logger.debug('this log will not be captured') + }) + + // Returned value and error is forwarded by `captureLogs` + return 'returned value' + } + ) + + assert.equal(captureLog[0].message, 'synchronous logs are captured') + assert.equal(captureLog[1].message, 'logs from asynchronous callbacks too') + assert.equal(captureLog[2].message, 'logs in async functions or promise chains too') + assert.ok(captureLog[3] === undefined, 'this log will not be captured') + assert.equal(logsTransportDefault[0].message, 'this log will not be captured') + }) + + it('should not dedup logs', () => { + configure( + createCaptureTransport([ + { + transport: transportTest, + }, + ]) + ) + + for (let i = 0; i < 3; i++) { + logger.debug('this line should be logged 3 times') + } + assert.equal(logsTransportDefault.length, 3) + }) + it('should dedup logs', () => { + configure( + createCaptureTransport([ + dedupe({ + timeout: 50, // without a defined timeout, the test will wait for 10 minutes + transport: transportTest, + }), + ]) + ) + + for (let i = 0; i < 3; i++) { + logger.debug('this line should be logged only once') + } + assert.equal(logsTransportDefault.length, 1) + }) +}) From ffe45a422bf13988ff9a2e35d621e76e338dd393 Mon Sep 17 00:00:00 2001 From: Stephane MEYER Date: Tue, 17 Sep 2024 00:43:09 +0200 Subject: [PATCH 2/9] Changes after code review --- @xen-orchestra/log/capture.test.js | 124 ----------------------- @xen-orchestra/log/logger.test.js | 154 +++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+), 124 deletions(-) create mode 100644 @xen-orchestra/log/logger.test.js diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js index 954cfb18638..258cb22baa2 100644 --- a/@xen-orchestra/log/capture.test.js +++ b/@xen-orchestra/log/capture.test.js @@ -16,18 +16,9 @@ describe('capture log', () => { logsTransportDefault.push(message) } - const logsTransportFatal = [] - const transportFatal = message => { - logsTransportFatal.push(message) - } - beforeEach(() => { configure( createCaptureTransport([ - { - level: 'fatal', - transport: transportFatal, - }, { level: 'debug', transport: transportTest, @@ -36,123 +27,8 @@ describe('capture log', () => { ) logsTransportDefault.length = 0 - logsTransportFatal.length = 0 }) - it('should log test with all its attributes', () => { - const expected1 = { - level: 20, - namespace: 'test-logger', - message: 'test 1 with all its attributes', - time: new Date(), - } - logger.debug(expected1.message) - assert.equal(logsTransportDefault[0]?.message, expected1.message) - assert.equal(typeof logsTransportDefault[0]?.level, 'number', `level attribute should exist`) - assert.ok(typeof logsTransportDefault[0]?.namespace === 'string', `namespace attribute should exist`) - assert.ok(logsTransportDefault[0]?.time instanceof Date, `time attribute should exist`) - }) - it('should log test 1 and 2', () => { - const expected1 = { - level: 20, - namespace: 'test-logger', - message: 'should log test 1/2', - time: new Date(), - } - const expected2 = { - level: 20, - namespace: 'test-logger', - message: 'should log test 2/2', - time: new Date(), - } - logger.debug(expected1.message) - logger.debug(expected2.message) - assert.equal(logsTransportDefault[0].message, expected1.message) - assert.equal(logsTransportDefault[1].message, expected2.message) - }) - it('should log tests for debug', () => { - const expectedDebug = { - data: undefined, - level: 20, - namespace: 'test-logger', - message: 'synchronous log debug', - time: new Date(), - } - logger.debug(expectedDebug.message) - assert.deepEqual(logsTransportDefault[0].message, expectedDebug.message) - assert.deepEqual(logsTransportDefault[0].level, expectedDebug.level) - }) - it('should log tests for info', () => { - const expectedInfo = { - data: undefined, - level: 30, - namespace: 'test-logger', - message: 'synchronous log info', - time: new Date(), - } - logger.info(expectedInfo.message) - assert.deepEqual(logsTransportDefault[0].message, expectedInfo.message) - assert.deepEqual(logsTransportDefault[0].level, expectedInfo.level) - }) - it('should log tests for warn', () => { - const expectedWarn = { - data: undefined, - level: 40, - namespace: 'test-logger', - message: 'synchronous log warn', - time: new Date(), - } - logger.warn(expectedWarn.message) - assert.deepEqual(logsTransportDefault[0].message, expectedWarn.message) - assert.deepEqual(logsTransportDefault[0].level, expectedWarn.level) - }) - it('should log tests for error', () => { - const expectedError = { - data: undefined, - level: 50, - namespace: 'test-logger', - message: 'synchronous log error', - time: new Date(), - } - logger.error(expectedError.message) - assert.deepEqual(logsTransportDefault[0].message, expectedError.message) - assert.deepEqual(logsTransportDefault[0].level, expectedError.level) - assert.ok(logsTransportFatal.length === 0, 'fatal logs should be empty') - }) - it('should log tests for fatal', () => { - const expectedFatal = { - data: undefined, - level: 60, - namespace: 'test-logger', - message: 'synchronous log fatal', - time: new Date(), - } - logger.fatal(expectedFatal.message) - assert.deepEqual(logsTransportFatal[0].message, expectedFatal.message) - assert.deepEqual(logsTransportFatal[0].level, expectedFatal.level) - }) - it('should log an error on null', () => { - const expected1 = { - data: { level: 20, value: null }, - level: 40, - namespace: 'test-logger', - message: 'incorrect value passed to logger', - time: new Date(), - } - logger.debug(null) - assert.deepEqual(logsTransportDefault[0].data, expected1.data) - }) - it('should log an error on undefined', () => { - const expected1 = { - data: { level: 20, value: undefined }, - level: 40, - namespace: 'test-logger', - message: 'incorrect value passed to logger', - time: new Date(), - } - logger.debug(undefined) - assert.deepEqual(logsTransportDefault[0].data, expected1.data) - }) it('should capture logs', async () => { const captureLog = [] await captureLogs( diff --git a/@xen-orchestra/log/logger.test.js b/@xen-orchestra/log/logger.test.js new file mode 100644 index 00000000000..d4b75f15ed6 --- /dev/null +++ b/@xen-orchestra/log/logger.test.js @@ -0,0 +1,154 @@ +'use strict' + +const { describe, it, beforeEach } = require('node:test') +const assert = require('node:assert/strict') +const { createLogger } = require('@xen-orchestra/log') +const { configure } = require('@xen-orchestra/log/configure') +const { createCaptureTransport } = require('@xen-orchestra/log/capture') + +describe('logger', () => { + const logger = createLogger('test-logger') + + const logsTransportDefault = [] + const transportTest = message => { + logsTransportDefault.push(message) + } + + const logsTransportFatal = [] + const transportFatal = message => { + logsTransportFatal.push(message) + } + + beforeEach(() => { + configure( + createCaptureTransport([ + { + level: 'fatal', + transport: transportFatal, + }, + { + level: 'debug', + transport: transportTest, + }, + ]) + ) + + logsTransportDefault.length = 0 + logsTransportFatal.length = 0 + }) + + it('should log test with all its attributes', () => { + const expected1 = { + level: 20, + namespace: 'test-logger', + message: 'test 1 with all its attributes', + time: new Date(), + } + logger.debug(expected1.message) + assert.equal(logsTransportDefault[0].message, expected1.message) + assert.equal(typeof logsTransportDefault[0].level, 'number', `level attribute should exist`) + assert.equal(typeof logsTransportDefault[0].namespace, 'string', `namespace attribute should exist`) + assert.equal(logsTransportDefault[0].time instanceof Date, true, 'time attribute should exist') + }) + it('should log test 1 and 2', () => { + const expected1 = { + level: 20, + namespace: 'test-logger', + message: 'should log test 1/2', + time: new Date(), + } + const expected2 = { + level: 20, + namespace: 'test-logger', + message: 'should log test 2/2', + time: new Date(), + } + logger.debug(expected1.message) + logger.debug(expected2.message) + assert.equal(logsTransportDefault[0].message, expected1.message) + assert.equal(logsTransportDefault[1].message, expected2.message) + }) + it('should log tests for debug', () => { + const expectedDebug = { + data: undefined, + level: 20, + namespace: 'test-logger', + message: 'synchronous log debug', + time: new Date(), + } + logger.debug(expectedDebug.message) + assert.deepEqual(logsTransportDefault[0].message, expectedDebug.message) + assert.deepEqual(logsTransportDefault[0].level, expectedDebug.level) + }) + it('should log tests for info', () => { + const expectedInfo = { + data: undefined, + level: 30, + namespace: 'test-logger', + message: 'synchronous log info', + time: new Date(), + } + logger.info(expectedInfo.message) + assert.deepEqual(logsTransportDefault[0].message, expectedInfo.message) + assert.deepEqual(logsTransportDefault[0].level, expectedInfo.level) + }) + it('should log tests for warn', () => { + const expectedWarn = { + data: undefined, + level: 40, + namespace: 'test-logger', + message: 'synchronous log warn', + time: new Date(), + } + logger.warn(expectedWarn.message) + assert.deepEqual(logsTransportDefault[0].message, expectedWarn.message) + assert.deepEqual(logsTransportDefault[0].level, expectedWarn.level) + }) + it('should log tests for error', () => { + const expectedError = { + data: undefined, + level: 50, + namespace: 'test-logger', + message: 'synchronous log error', + time: new Date(), + } + logger.error(expectedError.message) + assert.deepEqual(logsTransportDefault[0].message, expectedError.message) + assert.deepEqual(logsTransportDefault[0].level, expectedError.level) + assert.ok(logsTransportFatal.length === 0, 'fatal logs should be empty') + }) + it('should log tests for fatal', () => { + const expectedFatal = { + data: undefined, + level: 60, + namespace: 'test-logger', + message: 'synchronous log fatal', + time: new Date(), + } + logger.fatal(expectedFatal.message) + assert.deepEqual(logsTransportFatal[0].message, expectedFatal.message) + assert.deepEqual(logsTransportFatal[0].level, expectedFatal.level) + }) + it('should log an error on null', () => { + const expected1 = { + data: { level: 20, value: null }, + level: 40, + namespace: 'test-logger', + message: 'incorrect value passed to logger', + time: new Date(), + } + logger.debug(null) + assert.deepEqual(logsTransportDefault[0].data, expected1.data) + }) + it('should log an error on undefined', () => { + const expected1 = { + data: { level: 20, value: undefined }, + level: 40, + namespace: 'test-logger', + message: 'incorrect value passed to logger', + time: new Date(), + } + logger.debug(undefined) + assert.deepEqual(logsTransportDefault[0].data, expected1.data) + }) +}) From fa67a1fafb4f5be614673f57fdb5a60099b095cf Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Sun, 22 Sep 2024 16:58:25 +0200 Subject: [PATCH 3/9] sort imports --- @xen-orchestra/log/capture.test.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js index 258cb22baa2..652ce552290 100644 --- a/@xen-orchestra/log/capture.test.js +++ b/@xen-orchestra/log/capture.test.js @@ -1,12 +1,11 @@ 'use strict' -const { describe, it, beforeEach } = require('node:test') -const assert = require('node:assert/strict') -const { createLogger } = require('@xen-orchestra/log') +const { beforeEach, describe, it } = require('node:test') +const { captureLogs, createCaptureTransport } = require('@xen-orchestra/log/capture') const { configure } = require('@xen-orchestra/log/configure') -const { captureLogs } = require('@xen-orchestra/log/capture') -const { createCaptureTransport } = require('@xen-orchestra/log/capture') +const { createLogger } = require('@xen-orchestra/log') const { dedupe } = require('@xen-orchestra/log/dedupe') +const assert = require('node:assert/strict') describe('capture log', () => { const logger = createLogger('test-logger') From a17cf030eb181d5f0803454f8265ea51fbec0c6c Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Sun, 22 Sep 2024 17:26:58 +0200 Subject: [PATCH 4/9] Update logger.test.js --- @xen-orchestra/log/logger.test.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/@xen-orchestra/log/logger.test.js b/@xen-orchestra/log/logger.test.js index d4b75f15ed6..6e00e4e2281 100644 --- a/@xen-orchestra/log/logger.test.js +++ b/@xen-orchestra/log/logger.test.js @@ -1,10 +1,10 @@ 'use strict' -const { describe, it, beforeEach } = require('node:test') -const assert = require('node:assert/strict') -const { createLogger } = require('@xen-orchestra/log') +const { beforeEach, describe, it } = require('node:test') const { configure } = require('@xen-orchestra/log/configure') const { createCaptureTransport } = require('@xen-orchestra/log/capture') +const { createLogger } = require('@xen-orchestra/log') +const assert = require('node:assert/strict') describe('logger', () => { const logger = createLogger('test-logger') From 77309d21abc35115d1b8c4c9368c223258d2c788 Mon Sep 17 00:00:00 2001 From: "Stephane M." Date: Tue, 24 Sep 2024 10:26:44 +0200 Subject: [PATCH 5/9] Update @xen-orchestra/log/capture.test.js Co-authored-by: Julien Fontanet --- @xen-orchestra/log/capture.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js index 652ce552290..c2c9f0abd75 100644 --- a/@xen-orchestra/log/capture.test.js +++ b/@xen-orchestra/log/capture.test.js @@ -64,7 +64,7 @@ describe('capture log', () => { assert.equal(captureLog[0].message, 'synchronous logs are captured') assert.equal(captureLog[1].message, 'logs from asynchronous callbacks too') assert.equal(captureLog[2].message, 'logs in async functions or promise chains too') - assert.ok(captureLog[3] === undefined, 'this log will not be captured') + assert.equal(captureLog[3], undefined, 'this log will not be captured') assert.equal(logsTransportDefault[0].message, 'this log will not be captured') }) From a399e4c94fb343058344ae5ef837a73aa350f82b Mon Sep 17 00:00:00 2001 From: Stephane MEYER Date: Tue, 24 Sep 2024 10:31:19 +0200 Subject: [PATCH 6/9] Changes after code review --- @xen-orchestra/log/capture.test.js | 33 +---------------------------- @xen-orchestra/log/logger.test.js | 34 ++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js index c2c9f0abd75..b8c60fcdcc9 100644 --- a/@xen-orchestra/log/capture.test.js +++ b/@xen-orchestra/log/capture.test.js @@ -1,11 +1,10 @@ 'use strict' +const assert = require('node:assert/strict') const { beforeEach, describe, it } = require('node:test') const { captureLogs, createCaptureTransport } = require('@xen-orchestra/log/capture') const { configure } = require('@xen-orchestra/log/configure') const { createLogger } = require('@xen-orchestra/log') -const { dedupe } = require('@xen-orchestra/log/dedupe') -const assert = require('node:assert/strict') describe('capture log', () => { const logger = createLogger('test-logger') @@ -67,34 +66,4 @@ describe('capture log', () => { assert.equal(captureLog[3], undefined, 'this log will not be captured') assert.equal(logsTransportDefault[0].message, 'this log will not be captured') }) - - it('should not dedup logs', () => { - configure( - createCaptureTransport([ - { - transport: transportTest, - }, - ]) - ) - - for (let i = 0; i < 3; i++) { - logger.debug('this line should be logged 3 times') - } - assert.equal(logsTransportDefault.length, 3) - }) - it('should dedup logs', () => { - configure( - createCaptureTransport([ - dedupe({ - timeout: 50, // without a defined timeout, the test will wait for 10 minutes - transport: transportTest, - }), - ]) - ) - - for (let i = 0; i < 3; i++) { - logger.debug('this line should be logged only once') - } - assert.equal(logsTransportDefault.length, 1) - }) }) diff --git a/@xen-orchestra/log/logger.test.js b/@xen-orchestra/log/logger.test.js index 6e00e4e2281..20a598066f5 100644 --- a/@xen-orchestra/log/logger.test.js +++ b/@xen-orchestra/log/logger.test.js @@ -1,10 +1,11 @@ 'use strict' +const assert = require('node:assert/strict') const { beforeEach, describe, it } = require('node:test') const { configure } = require('@xen-orchestra/log/configure') -const { createCaptureTransport } = require('@xen-orchestra/log/capture') const { createLogger } = require('@xen-orchestra/log') -const assert = require('node:assert/strict') +const { createCaptureTransport } = require('@xen-orchestra/log/capture') +const { dedupe } = require('@xen-orchestra/log/dedupe') describe('logger', () => { const logger = createLogger('test-logger') @@ -151,4 +152,33 @@ describe('logger', () => { logger.debug(undefined) assert.deepEqual(logsTransportDefault[0].data, expected1.data) }) + it('should not dedup logs', () => { + configure( + createCaptureTransport([ + { + transport: transportTest, + }, + ]) + ) + + for (let i = 0; i < 3; i++) { + logger.debug('this line should be logged 3 times') + } + assert.equal(logsTransportDefault.length, 3) + }) + it('should dedup logs', () => { + configure( + createCaptureTransport([ + dedupe({ + timeout: 50, // without a defined timeout, the test will wait for 10 minutes + transport: transportTest, + }), + ]) + ) + + for (let i = 0; i < 3; i++) { + logger.debug('this line should be logged only once') + } + assert.equal(logsTransportDefault.length, 1) + }) }) From e293aed764ecd9f599073568ac5f55fd7e6d321e Mon Sep 17 00:00:00 2001 From: "Stephane M." Date: Tue, 24 Sep 2024 10:49:54 +0200 Subject: [PATCH 7/9] Update @xen-orchestra/log/logger.test.js Co-authored-by: Julien Fontanet --- @xen-orchestra/log/logger.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/@xen-orchestra/log/logger.test.js b/@xen-orchestra/log/logger.test.js index 20a598066f5..b72635dfe3a 100644 --- a/@xen-orchestra/log/logger.test.js +++ b/@xen-orchestra/log/logger.test.js @@ -10,8 +10,8 @@ const { dedupe } = require('@xen-orchestra/log/dedupe') describe('logger', () => { const logger = createLogger('test-logger') - const logsTransportDefault = [] - const transportTest = message => { + const logsTransportDebug = [] + const transportDebug = message => { logsTransportDefault.push(message) } From 27370eea11e637155b5db746f27b78dba1e7afe8 Mon Sep 17 00:00:00 2001 From: "Stephane M." Date: Tue, 24 Sep 2024 10:49:54 +0200 Subject: [PATCH 8/9] Update @xen-orchestra/log/logger.test.js Co-authored-by: Julien Fontanet --- @xen-orchestra/log/logger.test.js | 55 ++++++++++++++----------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/@xen-orchestra/log/logger.test.js b/@xen-orchestra/log/logger.test.js index b72635dfe3a..9ef2c043116 100644 --- a/@xen-orchestra/log/logger.test.js +++ b/@xen-orchestra/log/logger.test.js @@ -12,7 +12,7 @@ describe('logger', () => { const logsTransportDebug = [] const transportDebug = message => { - logsTransportDefault.push(message) + logsTransportDebug.push(message) } const logsTransportFatal = [] @@ -29,27 +29,22 @@ describe('logger', () => { }, { level: 'debug', - transport: transportTest, + transport: transportDebug, }, ]) ) - logsTransportDefault.length = 0 + logsTransportDebug.length = 0 logsTransportFatal.length = 0 }) it('should log test with all its attributes', () => { - const expected1 = { - level: 20, - namespace: 'test-logger', - message: 'test 1 with all its attributes', - time: new Date(), - } - logger.debug(expected1.message) - assert.equal(logsTransportDefault[0].message, expected1.message) - assert.equal(typeof logsTransportDefault[0].level, 'number', `level attribute should exist`) - assert.equal(typeof logsTransportDefault[0].namespace, 'string', `namespace attribute should exist`) - assert.equal(logsTransportDefault[0].time instanceof Date, true, 'time attribute should exist') + const message = 'test 1 with all its attributes' + logger.debug(message) + assert.equal(logsTransportDebug[0].message, message) + assert.equal(typeof logsTransportDebug[0].level, 'number', `level attribute should exist`) + assert.equal(typeof logsTransportDebug[0].namespace, 'string', `namespace attribute should exist`) + assert.equal(logsTransportDebug[0].time instanceof Date, true, 'time attribute should exist') }) it('should log test 1 and 2', () => { const expected1 = { @@ -66,8 +61,8 @@ describe('logger', () => { } logger.debug(expected1.message) logger.debug(expected2.message) - assert.equal(logsTransportDefault[0].message, expected1.message) - assert.equal(logsTransportDefault[1].message, expected2.message) + assert.equal(logsTransportDebug[0].message, expected1.message) + assert.equal(logsTransportDebug[1].message, expected2.message) }) it('should log tests for debug', () => { const expectedDebug = { @@ -78,8 +73,8 @@ describe('logger', () => { time: new Date(), } logger.debug(expectedDebug.message) - assert.deepEqual(logsTransportDefault[0].message, expectedDebug.message) - assert.deepEqual(logsTransportDefault[0].level, expectedDebug.level) + assert.deepEqual(logsTransportDebug[0].message, expectedDebug.message) + assert.deepEqual(logsTransportDebug[0].level, expectedDebug.level) }) it('should log tests for info', () => { const expectedInfo = { @@ -90,8 +85,8 @@ describe('logger', () => { time: new Date(), } logger.info(expectedInfo.message) - assert.deepEqual(logsTransportDefault[0].message, expectedInfo.message) - assert.deepEqual(logsTransportDefault[0].level, expectedInfo.level) + assert.deepEqual(logsTransportDebug[0].message, expectedInfo.message) + assert.deepEqual(logsTransportDebug[0].level, expectedInfo.level) }) it('should log tests for warn', () => { const expectedWarn = { @@ -102,8 +97,8 @@ describe('logger', () => { time: new Date(), } logger.warn(expectedWarn.message) - assert.deepEqual(logsTransportDefault[0].message, expectedWarn.message) - assert.deepEqual(logsTransportDefault[0].level, expectedWarn.level) + assert.deepEqual(logsTransportDebug[0].message, expectedWarn.message) + assert.deepEqual(logsTransportDebug[0].level, expectedWarn.level) }) it('should log tests for error', () => { const expectedError = { @@ -114,8 +109,8 @@ describe('logger', () => { time: new Date(), } logger.error(expectedError.message) - assert.deepEqual(logsTransportDefault[0].message, expectedError.message) - assert.deepEqual(logsTransportDefault[0].level, expectedError.level) + assert.deepEqual(logsTransportDebug[0].message, expectedError.message) + assert.deepEqual(logsTransportDebug[0].level, expectedError.level) assert.ok(logsTransportFatal.length === 0, 'fatal logs should be empty') }) it('should log tests for fatal', () => { @@ -139,7 +134,7 @@ describe('logger', () => { time: new Date(), } logger.debug(null) - assert.deepEqual(logsTransportDefault[0].data, expected1.data) + assert.deepEqual(logsTransportDebug[0].data, expected1.data) }) it('should log an error on undefined', () => { const expected1 = { @@ -150,13 +145,13 @@ describe('logger', () => { time: new Date(), } logger.debug(undefined) - assert.deepEqual(logsTransportDefault[0].data, expected1.data) + assert.deepEqual(logsTransportDebug[0].data, expected1.data) }) it('should not dedup logs', () => { configure( createCaptureTransport([ { - transport: transportTest, + transport: transportDebug, }, ]) ) @@ -164,14 +159,14 @@ describe('logger', () => { for (let i = 0; i < 3; i++) { logger.debug('this line should be logged 3 times') } - assert.equal(logsTransportDefault.length, 3) + assert.equal(logsTransportDebug.length, 3) }) it('should dedup logs', () => { configure( createCaptureTransport([ dedupe({ timeout: 50, // without a defined timeout, the test will wait for 10 minutes - transport: transportTest, + transport: transportDebug, }), ]) ) @@ -179,6 +174,6 @@ describe('logger', () => { for (let i = 0; i < 3; i++) { logger.debug('this line should be logged only once') } - assert.equal(logsTransportDefault.length, 1) + assert.equal(logsTransportDebug.length, 1) }) }) From 2bc6ddf6833609b4eb41908aaa1549b493432f9b Mon Sep 17 00:00:00 2001 From: "Stephane M." Date: Wed, 25 Sep 2024 14:01:02 +0200 Subject: [PATCH 9/9] Update @xen-orchestra/log/capture.test.js Co-authored-by: Julien Fontanet --- @xen-orchestra/log/capture.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@xen-orchestra/log/capture.test.js b/@xen-orchestra/log/capture.test.js index b8c60fcdcc9..564448e3ace 100644 --- a/@xen-orchestra/log/capture.test.js +++ b/@xen-orchestra/log/capture.test.js @@ -6,7 +6,7 @@ const { captureLogs, createCaptureTransport } = require('@xen-orchestra/log/capt const { configure } = require('@xen-orchestra/log/configure') const { createLogger } = require('@xen-orchestra/log') -describe('capture log', () => { +describe('captureLogs()', () => { const logger = createLogger('test-logger') const logsTransportDefault = []