summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/SiteStatsTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/includes/SiteStatsTest.php')
-rw-r--r--www/wiki/tests/phpunit/includes/SiteStatsTest.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/SiteStatsTest.php b/www/wiki/tests/phpunit/includes/SiteStatsTest.php
new file mode 100644
index 00000000..56bde5da
--- /dev/null
+++ b/www/wiki/tests/phpunit/includes/SiteStatsTest.php
@@ -0,0 +1,42 @@
+<?php
+
+class SiteStatsTest extends MediaWikiTestCase {
+
+ /**
+ * @covers SiteStats::jobs
+ */
+ function testJobsCountGetCached() {
+ $this->setService( 'MainWANObjectCache',
+ new WANObjectCache( [ 'cache' => new HashBagOStuff() ] ) );
+ $cache = \MediaWiki\MediaWikiServices::getInstance()->getMainWANObjectCache();
+ $jobq = JobQueueGroup::singleton();
+
+ // Delete jobs that might have been left behind by other tests
+ $jobq->get( 'htmlCacheUpdate' )->delete();
+ $jobq->get( 'recentChangesUpdate' )->delete();
+ $jobq->get( 'userGroupExpiry' )->delete();
+ $cache->delete( $cache->makeKey( 'SiteStats', 'jobscount' ) );
+
+ $jobq->push( new NullJob( Title::newMainPage(), [] ) );
+ $this->assertEquals( 1, SiteStats::jobs(),
+ 'A single job enqueued bumps jobscount stat to 1' );
+
+ $jobq->push( new NullJob( Title::newMainPage(), [] ) );
+ $this->assertEquals( 1, SiteStats::jobs(),
+ 'SiteStats::jobs() count does not reflect addition ' .
+ 'of a second job (cached)'
+ );
+
+ $jobq->get( 'null' )->delete(); // clear jobqueue
+ $this->assertEquals( 0, $jobq->get( 'null' )->getSize(),
+ 'Job queue for NullJob has been cleaned' );
+
+ $cache->delete( $cache->makeKey( 'SiteStats', 'jobscount' ) );
+ $this->assertEquals( 1, SiteStats::jobs(),
+ 'jobs count is kept in process cache' );
+
+ $cache->clearProcessCache();
+ $this->assertEquals( 0, SiteStats::jobs() );
+ }
+
+}