The current status of the tests can be viewed at https://travis-ci.org/wikimedia/mediawiki.
Description
Details
- Reference
- bz73176
Event Timeline
1 failing test left:
............................................................. 9577 / 9606 ( 99%) ............................. Time: 11.87 minutes, Memory: 768.75Mb There was 1 failure: 1) TextPassDumperTest::testCheckpointPlain expected more than 1 checkpoint to have been created. Checkpoint interval is 0.5 seconds, maybe your computer is too fast? Failed asserting that 1 is greater than 1. /home/travis/build/wikimedia/mediawiki/tests/phpunit/maintenance/backupTextPassTest.php:412 /home/travis/build/wikimedia/mediawiki/tests/phpunit/maintenance/backupTextPassTest.php:421 /home/travis/build/wikimedia/mediawiki/tests/phpunit/MediaWikiTestCase.php:141
Still one failure left (different one):
https://travis-ci.org/wikimedia/mediawiki/jobs/148367593
There was 1 failure: 1) LBFactoryTest::testLBFactorySimpleServers cluster master set Failed asserting that two strings are equal. --- Expected +++ Actual @@ @@ -'' +'localhost' /home/travis/build/wikimedia/mediawiki/tests/phpunit/includes/db/LBFactoryTest.php:107 /home/travis/build/wikimedia/mediawiki/tests/phpunit/MediaWikiTestCase.php:390
mediawiki:/tests/phpunit/includes/db/LBFactoryTest.php#L104-L107
$dbw = $lb->getConnection( DB_MASTER ); $this->assertTrue( $dbw->getLBInfo( 'master' ), 'master shows as master' ); $this->assertEquals( $wgDBserver, $dbw->getLBInfo( 'clusterMasterHost' ), 'cluster master set' );
Change 339112 had a related patch set uploaded (by Krinkle):
resourceloader: Fix testMakeModuleResponseError() failure on Travis
Change 339112 merged by jenkins-bot:
resourceloader: Fix testMakeModuleResponseError() failure on Travis
The following happens in at least the PHP 5.5 and PHP 7 builds on Travis (the HHVM build is currently failing earlier with something else, so can't see that one right now).
https://travis-ci.org/wikimedia/mediawiki/jobs/204056486
1) UploadBaseTest::testDetectScriptInSvg with data set #3 ('/home/travis/build/wikimedia/...ad.svg', array('uploadscriptednamespace', 'i'), 'SVG with a namespace definiti...entity') SVG with a namespace definition using an undefined entity Failed asserting that Array &0 ( 0 => 'uploadinvalidxml' ) is identical to Array &0 ( 0 => 'uploadscriptednamespace' 1 => 'i' ).
Change 339346 had a related patch set uploaded (by Krinkle):
phpunit: Fix AvroFormatterTest failure on PHP 7
Change 339592 had a related patch set uploaded (by Krinkle):
build: Change Travis postgres user "root" back to "travis"
Change 339593 had a related patch set uploaded (by Krinkle):
build: Simplify Travis configuration
Change 339594 had a related patch set uploaded (by Krinkle):
installer: Fix "relation 'user' does not exist" error for Postgres
Yesterday, all 4 builds (PHP 5.5 mysql, postgres; HHVM; PHP 7) were failing.
- PHP 5.5 (mysql, postgres) / PHP 7: UploadBaseTest::testDetectScriptInSvg failure.
- HHVM: PHPSessionHandlerTest failing.
closed subtask T75175: Make PHPUnit tests pass with hhvm/MySQL on Travis CI as "Resolved".
Travis CI HHVM build is passing now. Fixed by 5168cb60f8ff3f. Main problem was that we needed to update from HHVM 3.6 to HHVM 3.12.
This upgrade also required switching the Travis CI build from using Ubuntu Precise to Ubuntu Trusty.
On the plus side, the Ubuntu upgrade also fixed the UploadBaseTest failures. Presumably the native xml library that Zend PHP binds to in Precise was more struct (used by UploadBase/XmlTypeCheck).
The PHP 5.5 build is passing now.
The PHP 7 build is passing now.
Postgres is still failing before the installer ends (before PHPUnit even starts). The main error in recent months was:
Creating administrator user account.. DBQueryError from line 1059 of includes/libs/rdbms/database/Database.php: Query: SELECT user_id FROM "user" WHERE user_name = 'Admin' LIMIT 1 Function: User::idForName Error: 42P01 ERROR: relation "user" does not exist LINE 1: SELECT /* User::idForName */ user_id FROM "user" WHERE...
This is because the keywordTableMap configuration that maps user to mwuser for DatabasePostgres is somehow not being applied to the Database instance that the User class gets when it calls wfGetDB(). Normally this is set via MWLBFactory by ServiceWiring.
The installer has its own connection that is created directly via Database::factory without MWLBFactory or MediaWikiServices, and therefore without keywordTableMap. That part is fine in itself since there's no need for a keyword map when merely creating the database and tables. Later on, when User::idForName calls wfGetDB(), it is somehow getting that same keyword-map-less connection from MediaWikiServices!
The first call happens in Setup.php, MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->setRequestInfo( .. ). Which wrongly creates an LBFactory for mysql (default) instead of postgres because the installer hasn't yet loaded the configuration.
$ php maintenance/install.php traviswiki admin --pass travis --dbtype "$dbtype" --dbname traviswiki --dbuser "$dbuser" --dbpass "" --scriptpath "/w" ServiceWiring.php line 47 calls wfBacktrace() ServiceContainer.php line 361 calls call_user_func_array() ServiceContainer.php line 344 calls MediaWiki\Services\ServiceContainer->createService() MediaWikiServices.php line 501 calls MediaWiki\Services\ServiceContainer->getService() Setup.php line 664 calls MediaWiki\MediaWikiServices->getDBLoadBalancerFactory() doMaintenance.php line 98 calls require_once() install.php line 156 calls require_once() # ServiceWiring.php#closure_DBLoadBalancerFactory / LBFactoryConf is: array(1) { 'class' => string(15) "LBFactorySimple" } # MWLBFactory::applyDefaultConfig else / server is: array(10) { 'host' => string(9) "localhost" 'user' => string(8) "wikiuser" 'password' => string(0) "" 'dbname' => string(7) "my_wiki" 'tablePrefix' => string(0) "" 'type' => string(5) "mysql" 'load' => int(1) 'flags' => int(16) 'sqlMode' => string(0) "" 'utf8Mode' => bool(false) }
The ServiceWiring for DBLoadBalancerFactory never gets called a second time, despite the Installer constructor resetting the global MediaWikiServices instance. So MWLBFactory never gets applied with postgres during the installer.
Turns out, after the Installer constructor is done, but before any "real" code, DatabaseInstaller::enableLB takes the installer's homemade connection (for db table creation) and injects it into MediaWikiServices by redefining 'DBLoadBalancerFactory'.
Fixed in https://gerrit.wikimedia.org/r/#/c/339594/1. Postgres remains failing with about 4 PHPUnit failures. See T75174.
Change 339592 merged by jenkins-bot:
build: Change Travis postgres user "root" back to "travis"
Change 339594 merged by jenkins-bot:
installer: Fix "relation 'user' does not exist" error for Postgres
Change 345079 had a related patch set uploaded (by Krinkle):
[mediawiki/core@master] build: Make Travis CI 'Postgres' build non-voting
Change 345079 merged by jenkins-bot:
[mediawiki/core@master] build: Make Travis CI 'Postgres' build non-voting
Change 345249 had a related patch set uploaded (by Krinkle):
[mediawiki/core@REL1_28] build: Make Travis CI 'Postgres' build non-voting
Change 345249 merged by jenkins-bot:
[mediawiki/core@REL1_28] build: Make Travis CI 'Postgres' build non-voting
Change 424509 had a related patch set uploaded (by Krinkle; owner: Krinkle):
[mediawiki/core@REL1_27] phpunit: Fix AvroFormatterTest failure on PHP 7
Change 424509 merged by jenkins-bot:
[mediawiki/core@REL1_27] phpunit: Fix AvroFormatterTest failure on PHP 7