@@ -3,6 +3,7 @@ const { fork, execSync } = require('child_process');
33const path = require ( 'path' ) ;
44const fs = require ( 'fs' ) ;
55const { BASE_STORAGE_PATH , MessageKey } = require ( './test-runner' ) ;
6+ const { LogManager } = require ( '@aliceo2/web-ui' ) ;
67
78dotenv . config ( ) ;
89
@@ -33,6 +34,8 @@ const workersExited = new Set();
3334
3435const imageTag = 'test-parallel-application:latest' ;
3536
37+ const logger = LogManager . getLogger ( 'MAIN' ) ;
38+
3639/**
3740 * Builds the Docker image used by all the workers.
3841 *
@@ -54,9 +57,11 @@ const initializeWorkers = () => {
5457
5558 for ( let i = 0 ; i < amountOfWorkers ; i ++ ) {
5659 const workerName = `worker-${ i } ` ;
57- const worker = fork ( path . resolve ( __dirname , 'test-runner.js' ) , [ workerName ] , {
58- stdio : [ 'pipe' , 'pipe' , 'pipe' , 'ipc' ] ,
59- } ) ;
60+ const worker = fork (
61+ path . resolve ( __dirname , 'test-runner.js' ) ,
62+ [ workerName ] ,
63+ { stdio : [ 'pipe' , 'pipe' , 'pipe' , 'ipc' ] } ,
64+ ) ;
6065
6166 setupWorkerListeners ( worker , workerName ) ;
6267 assignTestToWorker ( worker , workerName ) ;
@@ -71,10 +76,11 @@ const initializeWorkers = () => {
7176 * @returns {void }
7277 */
7378const setupWorkerListeners = ( worker , workerName ) => {
79+ const workerLogger = LogManager . getLogger ( `WORKER ${ workerName } ` ) ;
80+
81+ worker . stdout . on ( 'data' , ( data ) => workerLogger . infoMessage ( `${ workerName } : ${ data . toString ( ) } ` ) ) ;
7482 // eslint-disable-next-line no-console
75- worker . stdout . on ( 'data' , ( data ) => console . log ( `${ workerName } : ${ data . toString ( ) } ` ) ) ;
76- // eslint-disable-next-line no-console
77- worker . stderr . on ( 'data' , ( data ) => console . error ( `${ workerName } Error: ${ data . toString ( ) } ` ) ) ;
83+ worker . stderr . on ( 'data' , ( data ) => workerLogger . infoMessage ( `${ workerName } Error: ${ data . toString ( ) } ` ) ) ;
7884
7985 worker . on ( 'message' , ( msg ) => handleWorkerMessage ( msg , worker , workerName ) ) ;
8086 worker . on ( 'exit' , ( code ) => handleWorkerExit ( code , workerName ) ) ;
@@ -100,14 +106,14 @@ const handleWorkerMessage = (msg, worker, workerName) => {
100106 * @returns {void }
101107 */
102108const assignTestToWorker = ( worker , workerName ) => {
109+ const workerLogger = LogManager . getLogger ( `WORKER ${ workerName } ` ) ;
110+
103111 if ( remainingTests . length > 0 ) {
104112 const test = remainingTests . pop ( ) ;
105- // eslint-disable-next-line no-console
106- console . log ( `${ workerName } starting new suite: ${ test } (${ testSuites . length - remainingTests . length } /${ testSuites . length } )` ) ;
113+ workerLogger . infoMessage ( `starting new suite: ${ test } (${ testSuites . length - remainingTests . length } /${ testSuites . length } )` ) ;
107114 worker . send ( { test, workerName } ) ;
108115 } else {
109- // eslint-disable-next-line no-console
110- console . log ( `${ workerName } found no more tests...` ) ;
116+ workerLogger . infoMessage ( 'found no more tests...' ) ;
111117 worker . send ( MessageKey . NoMoreTests ) ;
112118 }
113119} ;
@@ -119,12 +125,12 @@ const assignTestToWorker = (worker, workerName) => {
119125 * @returns {void }
120126 */
121127const handleWorkerExit = ( code , workerName ) => {
128+ const workerLogger = LogManager . getLogger ( `WORKER ${ workerName } ` ) ;
129+
122130 if ( code !== 0 ) {
123- // eslint-disable-next-line no-console
124- console . error ( `Worker ${ workerName } exited with code ${ code } ` ) ;
131+ workerLogger . errorMessage ( `exited with code ${ code } ` ) ;
125132 } else {
126- // eslint-disable-next-line no-console
127- console . log ( `Worker ${ workerName } completed successfully` ) ;
133+ workerLogger . infoMessage ( 'completed successfully' ) ;
128134 }
129135 workersExited . add ( workerName ) ;
130136 handleAllWorkersExited ( ) ;
@@ -150,12 +156,13 @@ const handleAllWorkersExited = () => {
150156 * @returns {void }
151157 */
152158const displayResults = async ( ) => {
153- // eslint-disable-next-line no-console
154- console . log ( '\nResults:\n' ) ;
159+ logger . infoMessage ( '\n' ) ;
160+ logger . infoMessage ( 'Results:' ) ;
161+ logger . infoMessage ( '\n' ) ;
155162 await readAllLogFiles ( 'tests.log' ) ;
156163
157164 // eslint-disable-next-line no-console
158- console . log ( '\n' ) ;
165+ logger . infoMessage ( '\n' ) ;
159166
160167 let totalPassing = 0 ;
161168 let totalFailing = 0 ;
@@ -174,15 +181,15 @@ const displayResults = async () => {
174181
175182 // Display total passing with elapsed time in minutes and seconds
176183 // eslint-disable-next-line no-console
177- console . log ( ' ' , totalPassing , ' Passing' , ` (${ minutes } m)`) ;
184+ logger . infoMessage ( ` ${ totalPassing } Passing(${ minutes } m)`) ;
178185 // eslint-disable-next-line no-console
179- console . log ( ' ' , totalFailing , ' Failing' ) ;
186+ logger . infoMessage ( ` ${ totalFailing } Failing` ) ;
180187 if ( totalPending > 0 ) {
181188 // eslint-disable-next-line no-console
182- console . log ( ' ' , totalPending , ' Pending' ) ;
189+ logger . infoMessage ( ` ${ totalPending } Pending` ) ;
183190 }
184191 // eslint-disable-next-line no-console
185- console . log ( '\n' ) ;
192+ logger . infoMessage ( '\n' ) ;
186193
187194 await readAllLogFiles ( 'fails.log' ) ;
188195} ;
@@ -200,13 +207,12 @@ const dumpLogFileContentToConsole = async (testSuiteName, logFileName) => {
200207 const filePath = path . join ( BASE_STORAGE_PATH , testSuiteName , logFileName ) ;
201208 try {
202209 const data = await fsPromises . readFile ( filePath , 'utf8' ) ;
203- // eslint-disable-next-line no-console
204- console . log ( data ) ;
210+ logger . infoMessage ( data . toString ( ) ) ;
205211 } catch ( err ) {
206212 // Don't log error when no directories are found, because directories are managed by the custom mocha reporter.
207213 if ( ! err . message . includes ( 'ENOENT' ) ) {
208214 // eslint-disable-next-line no-console
209- console . error ( `Error reading log file at ${ filePath } : ${ err } ` ) ;
215+ logger . errorMessage ( `Error reading log file at ${ filePath } : ${ err } ` ) ;
210216 }
211217 }
212218} ;
@@ -224,7 +230,7 @@ const readAllLogFiles = async (logFileName) => {
224230 await Promise . all ( readOperations )
225231 . catch ( ( err ) => {
226232 // eslint-disable-next-line no-console
227- console . error ( 'An error occurred while reading log files:' , err ) ;
233+ logger . errorMessage ( 'An error occurred while reading log files:' , err ) ;
228234 } ) ;
229235} ;
230236
@@ -254,7 +260,7 @@ const aggregateResults = (testSuiteName, logFileName, searchKeyword) => {
254260 }
255261 } catch ( err ) {
256262 // eslint-disable-next-line no-console
257- console . error ( `Error reading directory for ${ testSuiteName } : ${ err } ` ) ;
263+ logger . errorMessage ( `Error reading directory for ${ testSuiteName } : ${ err } ` ) ;
258264 }
259265 return 0 ;
260266} ;
@@ -276,7 +282,7 @@ const cleanupTestDirectories = (testSuites) => {
276282 // Don't log error when no directories are found, because directories are managed by the custom mocha reporter.
277283 if ( ! err . message . includes ( 'ENOENT' ) ) {
278284 // eslint-disable-next-line no-console
279- console . error ( `Error removing directory ${ testDirectoryPath } : ${ err } ` ) ;
285+ logger . errorMessage ( `Error removing directory ${ testDirectoryPath } : ${ err } ` ) ;
280286 }
281287 }
282288 } ) ;
0 commit comments