reports
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Database format --------------- In db/ folder, there is one file for each PHP version. The sqlite files CANNOT be access directly (forced to use the report interface). Each sqlite file has the following schema : CREATE TABLE failed ( `id` integer PRIMARY KEY AUTOINCREMENT, `id_report` bigint(20) NOT NULL, `test_name` varchar(128) NOT NULL, `output` STRING NOT NULL, `diff` STRING NOT NULL, `signature` binary(16) NOT NULL ) CREATE TABLE reports ( id integer primary key AUTOINCREMENT, date datetime NOT NULL, status smallint(1) not null, nb_failed unsigned int(10) NOT NULL, nb_expected_fail unsigned int(10) NOT NULL, build_env STRING NOT NULL, phpinfo STRING NOT NULL, user_email varchar(64) default null ) The SQLite file is created in parserfunc.php:insertToDb_phpmaketest() if the sqlite file '$VERSION.sqlite' does not exist. Each report adds a line in `reports` table with the following fields : - id : integer auto incremented - date : date the report was sent - status : 0 = failed, 1 = success. If status is something else (should not !), we exit() - nb_failed : number of tests failed - nb_expected_fail : number of expected failed tests - build_env : build environment - phpinfo : phpinfo() output - user_email : email mangled (user at domain dot com) Then, for each failed test, we add a line in `failed` table : - id : integer auto increment - id_report : id of the report - test_name : path of the test. Example : "/ext/hash/tests/mhash_001.phpt" - output : full output of test - diff : diff of test compared to what was expected. There may be some glitches with spaces and %s - signature : binary(16) built with md5($name.'__'.$test['diff']) In URLs, the binary md5 is transformed as base64 (like 03410e89b1d2737ce178a795f298ae64). It is used to track differencies between each failed test in DB : we compare only the signature, which is simpler than checking every diff. When do we have new reports ? ----------------------------- When you do a 'make test' on your PHP sourcedir, you can send a report when something went wrong. If you do this, the test program will build a flat file containing all failed tests output/diff and send it to https://qa.php.net/buildtest-process.php (via POST method). Previously, this page only sent the report to a dedicated mailing list (qa-reports at lists.php.net). We now add a parser that intercept the data and send it to the function located in reports/parserfunc.php:parse_phpmaketest() This function transforms (with much regexp) the data (a big string in php format) to an array. This array is then given to reports/parserfunc.php:insertToDb_phpmaketest() that insert it to the sqlite file for this PHP version. What's planned ? ---------------- So much to do... and so little time (Batman). Please take a look at todo.txt