Page MenuHomePhabricator

Fix or disable DonationInterface test
Closed, ResolvedPublic

Description

We are currently unable to deploy DonationInterface code without force-merging, due to one failing core test that calls our code and errors out.

You can see the error on this change.

To reproduce locally, run this test with the queue service turned off.

Here is the error:

1) SpecialPageFatalTest::testSpecialPageDoesNotFatal with data set "AdyenCheckoutGateway" (AdyenCheckoutGateway Object (...))
14:06:56 Error: Call to a member function getAccountConfig() on null
14:06:56 
14:06:56 /workspace/src/extensions/DonationInterface/adyen_gateway/checkout/adyen_checkout_gateway.body.php:15
14:06:56 /workspace/src/tests/phpunit/includes/specials/SpecialPageExecutor.php:107
14:06:56 /workspace/src/tests/phpunit/includes/specials/SpecialPageExecutor.php:37
14:06:56 /workspace/src/tests/phpunit/structure/SpecialPageFatalTest.php:43
14:06:56 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php:446
14:06:56 /workspace/src/maintenance/doMaintenance.php:107
14:06:56 === Logs generated by test case
14:06:56 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
14:06:56 [localisation] [debug] LocalisationCache using store LCStoreNull []
14:06:56 [objectcache] [debug] MainWANObjectCache using store {class} {"class":"EmptyBagOStuff"}
14:06:56 [localisation] [debug] LocalisationCache::isExpired(en): cache missing, need to make one []
14:06:56 [adyen_gateway] [info] Constructing! Creating a new adapter of type: [AdyenCheckout] {"private":false}
14:06:56 [adyen_gateway] [info] Exception setting up GatewayPage with adapter class TestingAdyenCheckoutAdapter: Connection refused [tcp://127.0.0.1:6379]
14:06:56 #0 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(128): Predis\Connection\AbstractConnection->onConnectionError('Connection refu...', 111)
14:06:56 #1 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(178): Predis\Connection\StreamConnection->createStreamSocket(Object(Predis\Connection\Parameters), 'tcp://127.0.0.1...', 4)
14:06:56 #2 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(100): Predis\Connection\StreamConnection->tcpStreamInitializer(Object(Predis\Connection\Parameters))
14:06:56 #3 /workspace/src/vendor/predis/predis/src/Connection/AbstractConnection.php(81): Predis\Connection\StreamConnection->createResource()
14:06:56 #4 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(258): Predis\Connection\AbstractConnection->connect()
14:06:56 #5 /workspace/src/vendor/predis/predis/src/Connection/AbstractConnection.php(180): Predis\Connection\StreamConnection->connect()
14:06:56 #6 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(288): Predis\Connection\AbstractConnection->getResource()
14:06:56 #7 /workspace/src/vendor/predis/predis/src/Connection/StreamConnection.php(394): Predis\Connection\StreamConnection->write('*2\r\n$4\r\nINCR\r\n$...')
14:06:56 #8 /workspace/src/vendor/predis/predis/src/Connection/AbstractConnection.php(110): Predis\Connection\StreamConnection->writeRequest(Object(Predis\Command\StringIncrement))
14:06:56 #9 /workspace/src/vendor/predis/predis/src/Client.php(331): Predis\Connection\AbstractConnection->executeCommand(Object(Predis\Command\StringIncrement))
14:06:56 #10 /workspace/src/vendor/predis/predis/src/Client.php(314): Predis\Client->executeCommand(Object(Predis\Command\StringIncrement))
14:06:56 #11 /workspace/src/vendor/wikimedia/smash-pig/Core/SequenceGenerators/PredisSequenceGenerator.php(50): Predis\Client->__call('incr', Array)
14:06:56 #12 /workspace/src/extensions/DonationInterface/gateway_common/DonationData.php(884): SmashPig\Core\SequenceGenerators\PredisSequenceGenerator->getNext()
14:06:56 #13 /workspace/src/extensions/DonationInterface/gateway_common/DonationData.php(536): DonationData->getIdFromSequenceGenerator()
14:06:56 #14 /workspace/src/extensions/DonationInterface/gateway_common/DonationData.php(371): DonationData->handleContributionTrackingID()
14:06:56 #15 /workspace/src/extensions/DonationInterface/gateway_common/DonationData.php(172): DonationData->normalize()
14:06:56 #16 /workspace/src/extensions/DonationInterface/gateway_common/DonationData.php(135): DonationData->populateData(NULL)
14:06:56 #17 /workspace/src/extensions/DonationInterface/gateway_common/gateway.adapter.php(251): DonationData->__construct(Object(TestingAdyenCheckoutAdapter), NULL)
14:06:56 #18 /workspace/src/extensions/DonationInterface/gateway_common/GatewayPage.php(97): GatewayAdapter->__construct(Array)
14:06:56 #19 /workspace/src/extensions/DonationInterface/adyen_gateway/checkout/adyen_checkout_gateway.body.php(13): GatewayPage->execute('')
14:06:56 #20 /workspace/src/tests/phpunit/includes/specials/SpecialPageExecutor.php(107): AdyenCheckoutGateway->execute('')
14:06:56 #21 /workspace/src/tests/phpunit/includes/specials/SpecialPageExecutor.php(37): SpecialPageExecutor->getHTMLFromSpecialPage(Object(AdyenCheckoutGateway), '')
14:06:56 #22 /workspace/src/tests/phpunit/structure/SpecialPageFatalTest.php(43): SpecialPageExecutor->executeSpecialPage(Object(AdyenCheckoutGateway), '', NULL, 'qqx', Object(User))
14:06:56 #23 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1472): SpecialPageFatalTest->testSpecialPageDoesNotFatal(Object(AdyenCheckoutGateway))
14:06:56 #24 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(1092): PHPUnit\Framework\TestCase->runTest()
14:06:56 #25 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestResult.php(703): PHPUnit\Framework\TestCase->runBare()
14:06:56 #26 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestCase.php(820): PHPUnit\Framework\TestResult->run(Object(SpecialPageFatalTest))
14:06:56 #27 /workspace/src/tests/phpunit/MediaWikiIntegrationTestCase.php(446): PHPUnit\Framework\TestCase->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #28 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(627): MediaWikiIntegrationTestCase->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #29 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(627): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #30 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(627): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #31 /workspace/src/vendor/phpunit/phpunit/src/Framework/TestSuite.php(627): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #32 /workspace/src/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(656): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
14:06:56 #33 /workspace/src/vendor/phpunit/phpunit/src/TextUI/Command.php(236): PHPUnit\TextUI\TestRunner->doRun(Object(PHPUnit\Framework\TestSuite), Array, Array, true)
14:06:56 #34 /workspace/src/tests/phpunit/phpunit.php(75): PHPUnit\TextUI\Command->run(Array, true)
14:06:56 #35 /workspace/src/maintenance/doMaintenance.php(107): PHPUnitMaintClass->execute()
14:06:56 #36 /workspace/src/tests/phpunit/phpunit.php(134): require('/workspace/src/...')
14:06:56 #37 {main} {"private":false}
14:06:56 [adyen_gateway] [info] Redirecting to [http://127.0.0.1:9412/index.php/Donate-error?uselang=en] {"private":false}

Event Timeline

Change 708715 had a related patch set uploaded (by AndyRussG; author: AndyRussG):

[mediawiki/extensions/DonationInterface@master] Add test-only config $wgDonationInterfaceMockRedisForCoreTests

https://gerrit.wikimedia.org/r/708715

Change 708715 abandoned by AndyRussG:

[mediawiki/extensions/DonationInterface@master] Add test-only config $wgDonationInterfaceMockRedisForCoreTests

Reason:

Found a real solution

https://gerrit.wikimedia.org/r/708715

Change 708720 had a related patch set uploaded (by AndyRussG; author: AndyRussG):

[mediawiki/extensions/DonationInterface@master] Use testing SmashPig context for non-DonationInterface tests, too

https://gerrit.wikimedia.org/r/708720

Change 708720 merged by jenkins-bot:

[mediawiki/extensions/DonationInterface@master] Use testing SmashPig context for non-DonationInterface tests, too

https://gerrit.wikimedia.org/r/708720

Just for reference/bookkeeping, here's the etherpad with some of the original notes looking into this.