From: Timo Tijhof Date: Mon, 25 Sep 2017 23:21:40 +0000 (+0100) Subject: objectcache: Improve WANObjectCache test coverage X-Git-Tag: 1.31.0-rc.0~1949^2 X-Git-Url: http://git.cyclocoop.org/%40spipnet%40?a=commitdiff_plain;h=71f7b56520148dc7f9c224cb1a4be822f3d8ec63;p=lhc%2Fweb%2Fwiklou.git objectcache: Improve WANObjectCache test coverage class WANObjectCache (methods: 30% -> 40%, lines: 62% -> 65%) * doGetWithSetCallback: 98% -> 100% - Add case: Throw for invalid callback. * getWithSetCallback: 86% -> 100% - Cover case: Else branch for `$cur[self::VFLD_VERSION] === $version`. * getMulti: 91% -> 98% - Cover case: If branch for `$this->warmupCache`. * set: 93% -> 100% - Cover case: If branch for `lockTSE >= 0`. * reap: 84% -> 100% - Add case: Error when changeTTL() fails. Change-Id: I4844ab0ebdd4d3ec9acc9cd4500721b04cfda317 --- diff --git a/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php b/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php index c762aa7d70..137ef0c49a 100644 --- a/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php +++ b/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php @@ -5,7 +5,7 @@ use Wikimedia\TestingAccessWrapper; class WANObjectCacheTest extends PHPUnit_Framework_TestCase { /** @var WANObjectCache */ private $cache; - /**@var BagOStuff */ + /** @var BagOStuff */ private $internalCache; protected function setUp() { @@ -259,10 +259,20 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { ]; } + /** + * @covers WANObjectCache::getWithSetCallback() + * @covers WANObjectCache::doGetWithSetCallback() + */ + public function testGetWithSetCallback_invalidCallback() { + $this->setExpectedException( InvalidArgumentException::class ); + $this->cache->getWithSetCallback( 'key', 30, 'invalid callback' ); + } + /** * @dataProvider getMultiWithSetCallback_provider * @covers WANObjectCache::getMultiWithSetCallback() * @covers WANObjectCache::makeMultiKeys() + * @covers WANObjectCache::getMulti() * @param array $extOpts * @param bool $versioned */ @@ -618,6 +628,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { /** * @covers WANObjectCache::getWithSetCallback() * @covers WANObjectCache::doGetWithSetCallback() + * @covers WANObjectCache::set() */ public function testLockTSESlow() { $cache = $this->cache; @@ -911,6 +922,8 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { /** * @dataProvider getWithSetCallback_versions_provider + * @covers WANObjectCache::getWithSetCallback() + * @covers WANObjectCache::doGetWithSetCallback() * @param array $extOpts * @param bool $versioned */ @@ -1100,6 +1113,34 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { $this->assertTrue( $tBad2 ); } + /** + * @covers WANObjectCache::reap() + */ + public function testReap_fail() { + $backend = $this->getMockBuilder( EmptyBagOStuff::class ) + ->setMethods( [ 'get', 'changeTTL' ] )->getMock(); + $backend->expects( $this->once() )->method( 'get' ) + ->willReturn( [ + WANObjectCache::FLD_VERSION => WANObjectCache::VERSION, + WANObjectCache::FLD_VALUE => 'value', + WANObjectCache::FLD_TTL => 3600, + WANObjectCache::FLD_TIME => 300, + ] ); + $backend->expects( $this->once() )->method( 'changeTTL' ) + ->willReturn( false ); + + $wanCache = new WANObjectCache( [ + 'cache' => $backend, + 'pool' => 'testcache-hash', + 'relayer' => new EventRelayerNull( [] ) + ] ); + + $isStale = null; + $ret = $wanCache->reap( 'key', 360, $isStale ); + $this->assertTrue( $isStale, 'value was stale' ); + $this->assertFalse( $ret, 'changeTTL failed' ); + } + /** * @covers WANObjectCache::set() */