From 247610aea0313b868b96ccd4262bbb8f759925af Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 9 Nov 2015 21:24:34 -0800 Subject: [PATCH] Various JobQueue test tweaks * Remove some getAcquiredCount() assertions when claimTTL=0 as this is not well defined enough (queues may take a few minutes to garbage collect the failed jobs). * Added some tests to make sure push() only de-duplicates among unclaimed jobs. Change-Id: Ie0a5e539095c245dfcc8c160417e12824eb7ab83 --- .../includes/jobqueue/JobQueueTest.php | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/tests/phpunit/includes/jobqueue/JobQueueTest.php b/tests/phpunit/includes/jobqueue/JobQueueTest.php index ea1a4f6314..9808a55bd5 100644 --- a/tests/phpunit/includes/jobqueue/JobQueueTest.php +++ b/tests/phpunit/includes/jobqueue/JobQueueTest.php @@ -128,8 +128,6 @@ class JobQueueTest extends MediaWikiTestCase { $queue->flushCaches(); if ( $recycles ) { $this->assertEquals( 1, $queue->getAcquiredCount(), "Active job count ($desc)" ); - } else { - $this->assertEquals( 0, $queue->getAcquiredCount(), "Active job count ($desc)" ); } $job2 = $queue->pop(); @@ -139,8 +137,6 @@ class JobQueueTest extends MediaWikiTestCase { $queue->flushCaches(); if ( $recycles ) { $this->assertEquals( 2, $queue->getAcquiredCount(), "Active job count ($desc)" ); - } else { - $this->assertEquals( 0, $queue->getAcquiredCount(), "Active job count ($desc)" ); } $queue->ack( $job1 ); @@ -148,8 +144,6 @@ class JobQueueTest extends MediaWikiTestCase { $queue->flushCaches(); if ( $recycles ) { $this->assertEquals( 1, $queue->getAcquiredCount(), "Active job count ($desc)" ); - } else { - $this->assertEquals( 0, $queue->getAcquiredCount(), "Active job count ($desc)" ); } $queue->ack( $job2 ); @@ -215,8 +209,6 @@ class JobQueueTest extends MediaWikiTestCase { $this->assertEquals( 0, $queue->getSize(), "Queue is empty ($desc)" ); if ( $recycles ) { $this->assertEquals( 1, $queue->getAcquiredCount(), "Active job count ($desc)" ); - } else { - $this->assertEquals( 0, $queue->getAcquiredCount(), "Active job count ($desc)" ); } $queue->ack( $job1 ); @@ -225,6 +217,29 @@ class JobQueueTest extends MediaWikiTestCase { $this->assertEquals( 0, $queue->getAcquiredCount(), "Active job count ($desc)" ); } + /** + * @dataProvider provider_queueLists + * @covers JobQueue + */ + public function testDeduplicationWhileClaimed( $queue, $recycles, $desc ) { + $queue = $this->$queue; + if ( !$queue ) { + $this->markTestSkipped( $desc ); + } + + $job = $this->newDedupedJob(); + $queue->push( $job ); + + // De-duplication does not apply to already-claimed jobs + $j = $queue->pop(); + $queue->push( $job ); + $queue->ack( $j ); + + $j = $queue->pop(); + // Make sure ack() of the twin did not delete the sibling data + $this->assertType( 'NullJob', $j ); + } + /** * @dataProvider provider_queueLists * @covers JobQueue -- 2.20.1