From 9d2f9cd292ffe55c9ba8c0d3e80681a6fc3f164a Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 2 Sep 2022 21:33:58 -0700 Subject: [PATCH] (REF) Update queue tests to use getStatistics() --- Civi/Test/QueueTestTrait.php | 20 +++++++ tests/phpunit/CRM/Queue/Queue/SqlTest.php | 16 +++--- tests/phpunit/CRM/Queue/QueueTest.php | 67 +++++++++++++---------- tests/phpunit/CRM/Queue/RunnerTest.php | 24 ++++---- tests/phpunit/api/v4/Entity/QueueTest.php | 59 ++++++++++---------- 5 files changed, 112 insertions(+), 74 deletions(-) create mode 100644 Civi/Test/QueueTestTrait.php diff --git a/Civi/Test/QueueTestTrait.php b/Civi/Test/QueueTestTrait.php new file mode 100644 index 0000000000..6b0290e4f7 --- /dev/null +++ b/Civi/Test/QueueTestTrait.php @@ -0,0 +1,20 @@ +getStatistic('total'), $queue->getStatistic('ready'), $queue->getStatistic('blocked')]; + $this->assertEquals(sprintf($format, ...$expect), sprintf($format, ...$actual)); + + // Deprecated - but checking for continuity. + $this->assertEquals($total, $queue->numberOfItems()); + } + +} diff --git a/tests/phpunit/CRM/Queue/Queue/SqlTest.php b/tests/phpunit/CRM/Queue/Queue/SqlTest.php index 3fb7e39652..6de10ed622 100644 --- a/tests/phpunit/CRM/Queue/Queue/SqlTest.php +++ b/tests/phpunit/CRM/Queue/Queue/SqlTest.php @@ -18,6 +18,8 @@ */ class CRM_Queue_Queue_SqlTest extends CiviUnitTestCase { + use \Civi\Test\QueueTestTrait; + /* ----------------------- Queue providers ----------------------- */ /* Define a list of queue providers which should be tested */ @@ -73,12 +75,12 @@ class CRM_Queue_Queue_SqlTest extends CiviUnitTestCase { 'test-key' => 'c', ]); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('a', $item->data['test-key']); $this->queue->deleteItem($item); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('b', $item->data['test-key']); $this->queue->deleteItem($item); @@ -103,27 +105,27 @@ class CRM_Queue_Queue_SqlTest extends CiviUnitTestCase { 'test-key' => 'd', ]); - $this->assertEquals(4, $this->queue->numberOfItems()); + $this->assertQueueStats(4, 4, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('start', $item->data['test-key']); $this->queue->deleteItem($item); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('c', $item->data['test-key']); $this->queue->deleteItem($item); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('d', $item->data['test-key']); $this->queue->deleteItem($item); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('end', $item->data['test-key']); $this->queue->deleteItem($item); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } } diff --git a/tests/phpunit/CRM/Queue/QueueTest.php b/tests/phpunit/CRM/Queue/QueueTest.php index e3fe0010aa..3f1c6ac5b4 100644 --- a/tests/phpunit/CRM/Queue/QueueTest.php +++ b/tests/phpunit/CRM/Queue/QueueTest.php @@ -16,6 +16,8 @@ */ class CRM_Queue_QueueTest extends CiviUnitTestCase { + use \Civi\Test\QueueTestTrait; + /* ----------------------- Queue providers ----------------------- */ /* Define a list of queue providers which should be tested */ @@ -25,19 +27,19 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { */ public function getQueueSpecs() { $queueSpecs = []; - $queueSpecs[] = [ + $queueSpecs['Sql'] = [ [ 'type' => 'Sql', 'name' => 'test-queue-sql', ], ]; - $queueSpecs[] = [ + $queueSpecs['Memory'] = [ [ 'type' => 'Memory', 'name' => 'test-queue-mem', ], ]; - $queueSpecs[] = [ + $queueSpecs['SqlParallel'] = [ [ 'type' => 'SqlParallel', 'name' => 'test-queue-sqlparallel', @@ -163,35 +165,41 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { 'test-key' => 'c', ]); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); + $item = $this->queue->claimItem(); + $this->assertQueueStats(3, 2, 1, $this->queue); $this->assertEquals('a', $item->data['test-key']); $this->assertEquals(1, $item->run_count); $this->queue->deleteItem($item); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); $item = $this->queue->claimItem(); + $this->assertQueueStats(2, 1, 1, $this->queue); $this->assertEquals('b', $item->data['test-key']); $this->assertEquals(1, $item->run_count); $this->queue->deleteItem($item); + $this->assertQueueStats(1, 1, 0, $this->queue); $this->queue->createItem([ 'test-key' => 'd', ]); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); + $item = $this->queue->claimItem(); + $this->assertQueueStats(2, 1, 1, $this->queue); $this->assertEquals('c', $item->data['test-key']); $this->assertEquals(1, $item->run_count); $this->queue->deleteItem($item); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('d', $item->data['test-key']); $this->assertEquals(1, $item->run_count); $this->queue->deleteItem($item); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -211,16 +219,16 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $item = $this->queue->claimItem(); $this->assertEquals('a', $item->data['test-key']); $this->assertEquals(1, $item->run_count); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); $this->queue->releaseItem($item); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('a', $item->data['test-key']); $this->assertEquals(2, $item->run_count); $this->queue->deleteItem($item); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -238,11 +246,12 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $this->queue->createItem([ 'test-key' => 'a', ]); + $this->assertQueueStats(1, 1, 0, $this->queue); $item = $this->queue->claimItem(); $this->assertEquals('a', $item->data['test-key']); $this->assertEquals(1, $item->run_count); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); // forget to release // haven't reach expiration yet @@ -255,10 +264,10 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $item3 = $this->queue->claimItem(); $this->assertEquals('a', $item3->data['test-key']); $this->assertEquals(2, $item3->run_count); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); $this->queue->deleteItem($item3); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -279,7 +288,7 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $item = $this->queue->claimItem(); $this->assertEquals('a', $item->data['test-key']); $this->assertEquals(1, $item->run_count); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); // forget to release // haven't reached expiration yet, so claimItem fails @@ -291,10 +300,10 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $item3 = $this->queue->stealItem(); $this->assertEquals('a', $item3->data['test-key']); $this->assertEquals(2, $item3->run_count); - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); $this->queue->deleteItem($item3); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -385,13 +394,13 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $this->queue->createItem([ 'test-key' => 'b', ]); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); unset($this->queue); $queue2 = $this->queueService->create( $queueSpec + ['reset' => TRUE] ); - $this->assertEquals(0, $queue2->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue2); } /** @@ -408,11 +417,11 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $this->queue->createItem([ 'test-key' => 'b', ]); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); unset($this->queue); $queue2 = $this->queueService->create($queueSpec); - $this->assertEquals(2, $queue2->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $queue2); $item = $queue2->claimItem(); $this->assertEquals('a', $item->data['test-key']); @@ -433,11 +442,11 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $this->queue->createItem([ 'test-key' => 'b', ]); - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); unset($this->queue); $queue2 = $this->queueService->create($queueSpec); - $this->assertEquals(2, $queue2->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $queue2); $item = $queue2->claimItem(); $this->assertEquals('a', $item->data['test-key']); @@ -460,12 +469,12 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { for ($i = 0; $i < 9; $i++) { $this->queue->createItem('x' . $i); } - $this->assertEquals(9, $this->queue->numberOfItems()); + $this->assertQueueStats(9, 9, 0, $this->queue); // We expect this driver to be fully compliant with batching. $claimsA = $this->queue->claimItems(3); $claimsB = $this->queue->claimItems(3); - $this->assertEquals(9, $this->queue->numberOfItems()); + $this->assertQueueStats(9, 3, 6, $this->queue); $this->assertEquals(['x0', 'x1', 'x2'], CRM_Utils_Array::collect('data', $claimsA)); $this->assertEquals(['x3', 'x4', 'x5'], CRM_Utils_Array::collect('data', $claimsB)); @@ -474,24 +483,24 @@ class CRM_Queue_QueueTest extends CiviUnitTestCase { $this->queue->releaseItems([$claimsA[2]]); /* x2: will retry with next claimItems() */ $this->queue->deleteItems([$claimsB[0], $claimsB[1]]); /* x3, x4 */ /* claimsB[2]: x5: Oops, we're gonna take some time to finish this one. */ - $this->assertEquals(5, $this->queue->numberOfItems()); + $this->assertQueueStats(5, 4, 1, $this->queue); $claimsC = $this->queue->claimItems(3); $this->assertEquals(['x2', 'x6', 'x7'], CRM_Utils_Array::collect('data', $claimsC)); $this->queue->deleteItem($claimsC[0]); /* x2 */ $this->queue->releaseItem($claimsC[1]); /* x6: will retry with next claimItems() */ $this->queue->deleteItem($claimsC[2]); /* x7 */ - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 2, 1, $this->queue); $claimsD = $this->queue->claimItems(3); $this->assertEquals(['x6', 'x8'], CRM_Utils_Array::collect('data', $claimsD)); $this->queue->deleteItem($claimsD[0]); /* x6 */ $this->queue->deleteItem($claimsD[1]); /* x8 */ - $this->assertEquals(1, $this->queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $this->queue); // claimsB took a while to wrap-up. But it finally did! $this->queue->deleteItem($claimsB[2]); /* x5 */ - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } public function testSetStatus() { diff --git a/tests/phpunit/CRM/Queue/RunnerTest.php b/tests/phpunit/CRM/Queue/RunnerTest.php index 8581edd14e..a179fa9d51 100644 --- a/tests/phpunit/CRM/Queue/RunnerTest.php +++ b/tests/phpunit/CRM/Queue/RunnerTest.php @@ -16,6 +16,8 @@ */ class CRM_Queue_RunnerTest extends CiviUnitTestCase { + use \Civi\Test\QueueTestTrait; + public function setUp(): void { parent::setUp(); $this->queueService = CRM_Queue_Service::singleton(TRUE); @@ -61,11 +63,11 @@ class CRM_Queue_RunnerTest extends CiviUnitTestCase { 'errorMode' => CRM_Queue_Runner::ERROR_ABORT, ]); $this->assertEquals(self::$_recordedValues, []); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); $result = $runner->runAll(); $this->assertEquals(TRUE, $result); $this->assertEquals(self::$_recordedValues, ['a', 'b', 'c']); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -97,11 +99,11 @@ class CRM_Queue_RunnerTest extends CiviUnitTestCase { 'errorMode' => CRM_Queue_Runner::ERROR_ABORT, ]); $this->assertEquals(self::$_recordedValues, []); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); $result = $runner->runAll(); $this->assertEquals(TRUE, $result); $this->assertEquals(self::$_recordedValues, ['a', 1, 2, 3, 'b']); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -132,12 +134,13 @@ class CRM_Queue_RunnerTest extends CiviUnitTestCase { 'errorMode' => CRM_Queue_Runner::ERROR_CONTINUE, ]); $this->assertEquals(self::$_recordedValues, []); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); + $result = $runner->runAll(); // FIXME useless return $this->assertEquals(TRUE, $result); $this->assertEquals(self::$_recordedValues, ['a', 'c']); - $this->assertEquals(0, $this->queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $this->queue); } /** @@ -168,13 +171,14 @@ class CRM_Queue_RunnerTest extends CiviUnitTestCase { 'errorMode' => CRM_Queue_Runner::ERROR_ABORT, ]); $this->assertEquals(self::$_recordedValues, []); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); + $result = $runner->runAll(); $this->assertEquals(1, $result['is_error']); // nothing from 'c' $this->assertEquals(self::$_recordedValues, ['a']); // 'b' and 'c' remain - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); } /** @@ -205,13 +209,13 @@ class CRM_Queue_RunnerTest extends CiviUnitTestCase { 'errorMode' => CRM_Queue_Runner::ERROR_ABORT, ]); $this->assertEquals(self::$_recordedValues, []); - $this->assertEquals(3, $this->queue->numberOfItems()); + $this->assertQueueStats(3, 3, 0, $this->queue); $result = $runner->runAll(); $this->assertEquals(1, $result['is_error']); // nothing from 'c' $this->assertEquals(self::$_recordedValues, ['a']); // 'b' and 'c' remain - $this->assertEquals(2, $this->queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $this->queue); } /** diff --git a/tests/phpunit/api/v4/Entity/QueueTest.php b/tests/phpunit/api/v4/Entity/QueueTest.php index 6f74de2ecc..3656eb1ff8 100644 --- a/tests/phpunit/api/v4/Entity/QueueTest.php +++ b/tests/phpunit/api/v4/Entity/QueueTest.php @@ -22,6 +22,7 @@ use api\v4\Api4TestBase; use Civi\Api4\Queue; use Civi\Api4\UserJob; use Civi\Core\Event\GenericHookEvent; +use Civi\Test\QueueTestTrait; /** * @group headless @@ -29,6 +30,8 @@ use Civi\Core\Event\GenericHookEvent; */ class QueueTest extends Api4TestBase { + use QueueTestTrait; + protected function setUp(): void { \Civi::$statics[__CLASS__] = [ 'doSomethingResult' => TRUE, @@ -56,7 +59,7 @@ class QueueTest extends Api4TestBase { 'retry_limit' => 2, 'retry_interval' => 4, ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], @@ -98,13 +101,13 @@ class QueueTest extends Api4TestBase { $this->assertEquals(['first_ok', 'second_err', 'second_ok'], \Civi::$statics[__CLASS__]['doSomethingLog']); // All done. - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); } public function testBasicParallelPolling() { $queueName = 'QueueTest_' . md5(random_bytes(32)) . '_parallel'; $queue = \Civi::queue($queueName, ['type' => 'SqlParallel', 'runner' => 'task', 'error' => 'delete']); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], @@ -129,7 +132,7 @@ class QueueTest extends Api4TestBase { Queue::runItems(0)->setItems([$first])->execute(); $this->assertEquals(['second_ok', 'first_ok'], \Civi::$statics[__CLASS__]['doSomethingLog']); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); } /** @@ -149,7 +152,7 @@ class QueueTest extends Api4TestBase { 'error' => 'delete', 'batch_limit' => 3, ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); for ($i = 0; $i < 7; $i++) { \Civi::queue($queueName)->createItem(['thingy' => $i]); @@ -189,7 +192,7 @@ class QueueTest extends Api4TestBase { public function testSelect() { $queueName = 'QueueTest_' . md5(random_bytes(32)) . '_parallel'; $queue = \Civi::queue($queueName, ['type' => 'SqlParallel', 'runner' => 'task', 'error' => 'delete']); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], @@ -205,7 +208,7 @@ class QueueTest extends Api4TestBase { public function testEmptyPoll() { $queueName = 'QueueTest_' . md5(random_bytes(32)) . '_linear'; $queue = \Civi::queue($queueName, ['type' => 'Sql', 'runner' => 'task', 'error' => 'delete']); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $startResult = Queue::claimItems()->setQueue($queueName)->execute(); $this->assertEquals(0, $startResult->count()); @@ -225,14 +228,14 @@ class QueueTest extends Api4TestBase { public function testDelayedStart(array $queueSpec) { $queueName = 'QueueTest_' . md5(random_bytes(32)) . '_delayed'; $queue = \Civi::queue($queueName, $queueSpec); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $releaseTime = \CRM_Utils_Time::strtotime('+3 seconds'); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], ['itwillstartanymomentnow'] ), ['release_time' => $releaseTime]); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $queue); // Not available... yet... $claim1 = $queue->claimItem(); @@ -268,7 +271,7 @@ class QueueTest extends Api4TestBase { 'retry_limit' => 2, 'retry_interval' => 1, ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], @@ -311,28 +314,28 @@ class QueueTest extends Api4TestBase { 'retry_interval' => 0, 'lease_time' => 1, ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], ['playinghooky'] )); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $queue); $claim1 = $this->waitForClaim(0.5, 5, $queueName); // Oops, don't do anything with claim #1! - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $queue); $this->assertEquals([], \Civi::$statics[__CLASS__]['doSomethingLog']); $claim2 = $this->waitForClaim(0.5, 5, $queueName); // Oops, don't do anything with claim #2! - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $queue); $this->assertEquals([], \Civi::$statics[__CLASS__]['doSomethingLog']); $claim3 = $this->waitForClaim(0.5, 5, $queueName); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $queue); $result = Queue::runItems(0)->setItems([$claim3])->execute()->first(); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $this->assertEquals(['playinghooky_ok'], \Civi::$statics[__CLASS__]['doSomethingLog']); $this->assertEquals('ok', $result['outcome']); } @@ -357,19 +360,19 @@ class QueueTest extends Api4TestBase { 'retry_interval' => 0, 'lease_time' => 1, ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], ['playinghooky'] )); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $queue); $claimAndRun = function($expectOutcome, $expectEndCount) use ($queue, $queueName) { $claim = $this->waitForClaim(0.5, 5, $queueName); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 0, 1, $queue); $result = Queue::runItems(0)->setItems([$claim])->execute()->first(); - $this->assertEquals($expectEndCount, $queue->numberOfItems()); + $this->assertEquals($expectEndCount, $queue->getStatistic('total')); $this->assertEquals($expectOutcome, $result['outcome']); }; @@ -411,7 +414,7 @@ class QueueTest extends Api4TestBase { 'runner' => 'task', 'error' => 'delete', ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $userJob = \Civi\Api4\UserJob::create(FALSE)->setValues([ 'job_type:name' => 'contact_import', @@ -429,20 +432,20 @@ class QueueTest extends Api4TestBase { )); // Verify initial status - $this->assertEquals(2, $queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $queue); $this->assertEquals(FALSE, isset($firedQueueStatus[$queueName])); $this->assertEquals(TRUE, $queue->isActive()); $this->assertEquals(4, UserJob::get()->addWhere('id', '=', $userJob['id'])->execute()->first()['status_id']); // OK, let's run both items - and check status afterward. Queue::runItems(FALSE)->setQueue($queueName)->execute()->single(); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $queue); $this->assertEquals(FALSE, isset($firedQueueStatus[$queueName])); $this->assertEquals(TRUE, $queue->isActive()); $this->assertEquals(4, UserJob::get()->addWhere('id', '=', $userJob['id'])->execute()->first()['status_id']); Queue::runItems(FALSE)->setQueue($queueName)->execute()->single(); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $this->assertEquals('completed', $firedQueueStatus[$queueName]); $this->assertEquals(FALSE, $queue->isActive()); $this->assertEquals(1, UserJob::get()->addWhere('id', '=', $userJob['id'])->execute()->first()['status_id']); @@ -468,7 +471,7 @@ class QueueTest extends Api4TestBase { 'runner' => 'task', 'error' => 'delete', ]); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); \Civi::queue($queueName)->createItem(new \CRM_Queue_Task( [QueueTest::class, 'doSomething'], @@ -480,18 +483,18 @@ class QueueTest extends Api4TestBase { )); // Verify initial status - $this->assertEquals(2, $queue->numberOfItems()); + $this->assertQueueStats(2, 2, 0, $queue); $this->assertEquals(FALSE, isset($firedQueueStatus[$queueName])); $this->assertEquals(TRUE, $queue->isActive()); // OK, let's run both items - and check status afterward. Queue::runItems(FALSE)->setQueue($queueName)->execute()->single(); - $this->assertEquals(1, $queue->numberOfItems()); + $this->assertQueueStats(1, 1, 0, $queue); $this->assertEquals(FALSE, isset($firedQueueStatus[$queueName])); $this->assertEquals(TRUE, $queue->isActive()); Queue::runItems(FALSE)->setQueue($queueName)->execute()->single(); - $this->assertEquals(0, $queue->numberOfItems()); + $this->assertQueueStats(0, 0, 0, $queue); $this->assertEquals(FALSE, isset($firedQueueStatus[$queueName])); $this->assertEquals(TRUE, $queue->isActive()); } -- 2.25.1