Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/227635
Change subject: Follow up to Ied1db3f, use lazyPush, remove unused imports, etc. ...................................................................... Follow up to Ied1db3f, use lazyPush, remove unused imports, etc. * moved AddUsagesForPageJobTest to includes/store test subdirectory to be consistent with location of AddUsagesForPageJob. * removed unused imports. * use JobQueueGroup::lazyPush and EnqueueJob. (see how this is done in WikiPage to add refreshLinks) * add removeDuplicates to job specification. Change-Id: If209bbeb8871a3ac9e6c45b3258006a6b45bbad5 --- M client/includes/Hooks/DataUpdateHookHandlers.php M client/includes/Usage/EntityUsage.php M client/includes/store/AddUsagesForPageJob.php M client/includes/store/sql/DirectSqlStore.php M client/tests/phpunit/MockClientStore.php M client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php R client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php 7 files changed, 57 insertions(+), 17 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/35/227635/1 diff --git a/client/includes/Hooks/DataUpdateHookHandlers.php b/client/includes/Hooks/DataUpdateHookHandlers.php index 42d9d78..6776f65 100644 --- a/client/includes/Hooks/DataUpdateHookHandlers.php +++ b/client/includes/Hooks/DataUpdateHookHandlers.php @@ -3,8 +3,8 @@ namespace Wikibase\Client\Hooks; use Content; +use EnqueueJob; use JobQueueGroup; -use JobSpecification; use LinksUpdate; use ManualLogEntry; use ParserCache; @@ -14,7 +14,6 @@ use User; use Wikibase\Client\Store\AddUsagesForPageJob; use Wikibase\Client\Store\UsageUpdater; -use Wikibase\Client\Usage\EntityUsage; use Wikibase\Client\Usage\ParserOutputUsageAccumulator; use Wikibase\Client\WikibaseClient; use WikiPage; @@ -162,7 +161,7 @@ * Implemented to update usage tracking information via UsageUpdater. * * @param ParserOutput $parserOutput - * @param $title $title + * @param Title $title */ public function doParserCacheSaveComplete( ParserOutput $parserOutput, Title $title ) { $usageAcc = new ParserOutputUsageAccumulator( $parserOutput ); @@ -186,7 +185,9 @@ //TODO: Before posting a job, check slave database. If no changes are needed, skip update. $addUsagesForPageJob = AddUsagesForPageJob::newSpec( $title, $usageAcc->getUsages(), $touched ); - $this->jobScheduler->push( $addUsagesForPageJob ); + $enqueueJob = EnqueueJob::newFromLocalJobs( $addUsagesForPageJob ); + + $this->jobScheduler->lazyPush( $enqueueJob ); } /** diff --git a/client/includes/Usage/EntityUsage.php b/client/includes/Usage/EntityUsage.php index ba6938e..864efce 100644 --- a/client/includes/Usage/EntityUsage.php +++ b/client/includes/Usage/EntityUsage.php @@ -4,7 +4,6 @@ use InvalidArgumentException; use Wikibase\DataModel\Entity\EntityId; -use Wikibase\DataModel\Entity\EntityIdParsingException; /** * Value object representing the usage of an entity. This includes information about diff --git a/client/includes/store/AddUsagesForPageJob.php b/client/includes/store/AddUsagesForPageJob.php index 90f2e16..335fd3e 100644 --- a/client/includes/store/AddUsagesForPageJob.php +++ b/client/includes/store/AddUsagesForPageJob.php @@ -64,7 +64,12 @@ 'touched' => $touched ); - return new JobSpecification( 'wikibase-addUsagesForPage', $jobParams, array(), $title ); + return new JobSpecification( + 'wikibase-addUsagesForPage', + $jobParams, + array( 'removeDuplicates' => true ), + $title + ); } /** diff --git a/client/includes/store/sql/DirectSqlStore.php b/client/includes/store/sql/DirectSqlStore.php index 40df459..80d42cf 100644 --- a/client/includes/store/sql/DirectSqlStore.php +++ b/client/includes/store/sql/DirectSqlStore.php @@ -476,4 +476,5 @@ $this->getSubscriptionManager() ); } + } diff --git a/client/tests/phpunit/MockClientStore.php b/client/tests/phpunit/MockClientStore.php index f09938e..5a78d04 100644 --- a/client/tests/phpunit/MockClientStore.php +++ b/client/tests/phpunit/MockClientStore.php @@ -202,4 +202,5 @@ $this->getSubscriptionManager() ); } + } diff --git a/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php b/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php index 45b978a..f2b3976 100644 --- a/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php +++ b/client/tests/phpunit/includes/Hooks/DataUpdateHookHandlersTest.php @@ -2,7 +2,6 @@ namespace Wikibase\Client\Tests\Hooks; -use Job; use JobQueueGroup; use JobSpecification; use ParserOutput; @@ -36,7 +35,13 @@ * * @return UsageUpdater */ - private function newUsageUpdater( Title $title, array $expectedUsages = null, $touched = null, $prune = true, $add = true ) { + private function newUsageUpdater( + Title $title, + array $expectedUsages = null, + $touched = null, + $prune = true, + $add = true + ) { $usageUpdater = $this->getMockBuilder( 'Wikibase\Client\Store\UsageUpdater' ) ->disableOriginalConstructor() ->getMock(); @@ -80,32 +85,54 @@ * * @return JobQueueGroup */ - private function newJobScheduler( Title $title, array $expectedUsages = null, $touched = null, $useJobQueue = false ) { + private function newJobScheduler( + Title $title, + array $expectedUsages = null, + $touched = null, + $useJobQueue = false + ) { $jobScheduler = $this->getMockBuilder( 'JobQueueGroup' ) ->disableOriginalConstructor() ->getMock(); if ( empty( $expectedUsages ) || !$useJobQueue ) { $jobScheduler->expects( $this->never() ) - ->method( 'push' ); + ->method( 'lazyPush' ); } else { $expectedUsageArray = array_map( function ( EntityUsage $usage ) { return $usage->asArray(); }, $expectedUsages ); $params = array( - 'pageId' => $title->getArticleID(), - 'usages' => $expectedUsageArray, - 'touched' => $touched + 'jobsByWiki' => array( + wfWikiID() => array( + array( + 'type' => 'wikibase-addUsagesForPage', + 'params' => array( + 'pageId' => $title->getArticleID(), + 'usages' => $expectedUsageArray, + 'touched' => $touched + ), + 'opts' => array( + 'removeDuplicates' => true + ), + 'title' => array( + 'ns' => NS_MAIN, + 'key' => 'Oxygen' + ) + ) + ) + ) ); $jobScheduler->expects( $this->once() ) - ->method( 'push' ) - ->with( $this->callback( function ( JobSpecification $job ) use ( $params ) { - DataUpdateHookHandlersTest::assertEquals( 'wikibase-addUsagesForPage', $job->getType() ); + ->method( 'lazyPush' ) + ->with( $this->callback( function ( $job ) use ( $params ) { + DataUpdateHookHandlersTest::assertEquals( 'enqueue', $job->getType() ); DataUpdateHookHandlersTest::assertEquals( $params, $job->getParams() ); return true; } ) ); + } return $jobScheduler; @@ -120,7 +147,13 @@ * * @return DataUpdateHookHandlers */ - private function newDataUpdateHookHandlers( Title $title, array $expectedUsages = null, $touched = null, $prune = true, $asyncAdd = false ) { + private function newDataUpdateHookHandlers( + Title $title, + array $expectedUsages = null, + $touched = null, + $prune = true, + $asyncAdd = false + ) { $usageUpdater = $this->newUsageUpdater( $title, $expectedUsages, $touched, $prune, !$asyncAdd ); $jobScheduler = $this->newJobScheduler( $title, $expectedUsages, $touched, $asyncAdd ); diff --git a/client/tests/phpunit/includes/AddUsagesForPageJobTest.php b/client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php similarity index 100% rename from client/tests/phpunit/includes/AddUsagesForPageJobTest.php rename to client/tests/phpunit/includes/store/AddUsagesForPageJobTest.php -- To view, visit https://gerrit.wikimedia.org/r/227635 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If209bbeb8871a3ac9e6c45b3258006a6b45bbad5 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: wmf/1.26wmf13 Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits