11--TEST--
2- FPM: GH-8885 - access.log with stderr begins to write logs to error_log after daemon reload
2+ FPM: GH-8885 - access.log with stderr begins to write logs to error_log after reloading logs
33--SKIPIF--
44<?php
55include "skipif.inc " ;
@@ -26,60 +26,25 @@ pm.min_spare_servers = 1
2626pm.max_spare_servers = 3
2727EOT ;
2828
29- // php-fpm must not be launched with --force-stderr option
30- $ tester = new FPM \Tester ($ cfg , '' , [FPM \Tester::PHP_FPM_DISABLE_FORCE_STDERR => true ]);
31- // getPrefixedFile('err.log') is the same path that returns processTemplate('{{FILE:LOG}}')
32- $ errorLogFile = $ tester ->getPrefixedFile ('err.log ' );
33-
34- $ tester ->start ();
35- $ tester ->expectNoLogMessages ();
36-
37- $ content = file_get_contents ($ errorLogFile );
38- assert ($ content !== false && strlen ($ content ) > 0 , 'File must not be empty ' );
39-
40- $ errorLogLines = explode ("\n" , $ content );
41- array_pop ($ errorLogLines );
42-
43- assert (count ($ errorLogLines ) === 2 , 'Expected 2 records in the error_log file ' );
44- assert (strpos ($ errorLogLines [0 ], 'NOTICE: fpm is running, pid ' ));
45- assert (strpos ($ errorLogLines [1 ], 'NOTICE: ready to handle connections ' ));
46-
47- $ tester ->ping ('{{ADDR}} ' );
48- $ stderrLines = $ tester ->getLogLines (-1 );
49- assert (count ($ stderrLines ) === 1 , 'Expected 1 record in the stderr output (access.log) ' );
50- $ stderrLine = $ stderrLines [0 ];
51- assert (preg_match ('/127.0.0.1 .* "GET \/ping" 200$/ ' , $ stderrLine ), 'Incorrect format of access.log record ' );
52-
53- $ tester ->signal ('USR1 ' );
29+ $ tester = new FPM \Tester ($ cfg );
30+ $ tester ->start (forceStderr: false );
5431$ tester ->expectNoLogMessages ();
55-
56- $ content = file_get_contents ($ errorLogFile );
57- assert ($ content !== false && strlen ($ content ) > 0 , 'File must not be empty ' );
58- $ errorLogLines = explode ("\n" , $ content );
59- array_pop ($ errorLogLines );
60-
61- assert (count ($ errorLogLines ) >= 4 , 'Expected at least 4 records in the error_log file ' );
62- assert (strpos ($ errorLogLines [0 ], 'NOTICE: fpm is running, pid ' ));
63- assert (strpos ($ errorLogLines [1 ], 'NOTICE: ready to handle connections ' ));
64- assert (strpos ($ errorLogLines [2 ], 'NOTICE: error log file re-opened ' ));
65- assert (strpos ($ errorLogLines [3 ], 'NOTICE: access log file re-opened ' ));
66-
67-
68- $ tester ->ping ('{{ADDR}} ' );
69- $ stderrLines = $ tester ->getLogLines (-1 );
70- assert (count ($ stderrLines ) === 1 , 'Must be only 1 record in the access.log ' );
71- assert (preg_match ('/127.0.0.1 .* "GET \/ping" 200$/ ' , $ stderrLines [0 ]), 'Incorrect format of access.log record ' );
72-
32+ $ tester ->switchLogSource ('{{FILE:LOG}} ' );
33+ $ tester ->expectLogStartNotices ();
34+ $ tester ->ping ();
35+ $ tester ->switchLogSource ('{{MASTER:OUT}} ' );
36+ $ tester ->expectLogPattern ('/127.0.0.1 .* "GET \/ping" 200/ ' );
37+ $ tester ->reloadLogs ();
38+ $ tester ->switchLogSource ('{{FILE:LOG}} ' );
39+ $ tester ->expectLogReloadingLogsNotices ();
40+ $ tester ->ping ();
41+ $ tester ->switchLogSource ('{{MASTER:OUT}} ' );
42+ $ tester ->expectLogPattern ('/127.0.0.1 .* "GET \/ping" 200/ ' );
43+ $ tester ->switchLogSource ('{{FILE:LOG}} ' );
7344$ tester ->terminate ();
74- $ stderrLines = $ tester ->expectNoLogMessages ();
75-
76- $ content = file_get_contents ($ errorLogFile );
77- assert ($ content !== false && strlen ($ content ) > 0 , 'File must not be empty ' );
78- $ errorLogLines = explode ("\n" , $ content );
79- array_pop ($ errorLogLines );
80- $ errorLogLastLine = array_pop ($ errorLogLines );
81- assert (strpos ($ errorLogLastLine , 'NOTICE: exiting, bye-bye ' ));
82-
45+ $ tester ->expectLogTerminatingNotices ();
46+ $ tester ->switchLogSource ('{{MASTER:OUT}} ' );
47+ $ tester ->expectNoLogMessages ();
8348$ tester ->close ();
8449?>
8550Done
0 commit comments