X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2Fobjectcache%2FHashBagOStuffTest.php;h=5194e8d9720f3da9f5c4ab8939345748b3fdf26e;hb=04622bdf1e00fcd596ccf25a272fdf25a06248ca;hp=39b84e104f3a90f1c96b0f55082dd8500d2dcd53;hpb=5ea952ab62eb74c32aa5ce0c158fb45d192968a4;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php b/tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php index 39b84e104f..5194e8d972 100644 --- a/tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php +++ b/tests/phpunit/includes/libs/objectcache/HashBagOStuffTest.php @@ -27,19 +27,6 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase { } } - public function testEvictionOrder() { - $cache = new HashBagOStuff( array( 'maxKeys' => 10 ) ); - for ( $i = 0; $i < 10; $i++ ) { - $cache->set( "key$i", 1 ); - $this->assertEquals( 1, $cache->get( "key$i" ) ); - } - for ( $i = 10; $i < 20; $i++ ) { - $cache->set( "key$i", 1 ); - $this->assertEquals( 1, $cache->get( "key$i" ) ); - $this->assertEquals( false, $cache->get( "key" . $i - 10 ) ); - } - } - public function testExpire() { $cache = new HashBagOStuff(); $cacheInternal = TestingAccessWrapper::newFromObject( $cache ); @@ -56,7 +43,27 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase { $this->assertEquals( false, $cache->get( 'baz' ), 'Key expired' ); } - public function testKeyOrder() { + /** + * Ensure maxKeys eviction prefers keeping new keys. + */ + public function testEvictionAdd() { + $cache = new HashBagOStuff( array( 'maxKeys' => 10 ) ); + for ( $i = 0; $i < 10; $i++ ) { + $cache->set( "key$i", 1 ); + $this->assertEquals( 1, $cache->get( "key$i" ) ); + } + for ( $i = 10; $i < 20; $i++ ) { + $cache->set( "key$i", 1 ); + $this->assertEquals( 1, $cache->get( "key$i" ) ); + $this->assertEquals( false, $cache->get( "key" . $i - 10 ) ); + } + } + + /** + * Ensure maxKeys eviction prefers recently set keys + * even if the keys pre-exist. + */ + public function testEvictionSet() { $cache = new HashBagOStuff( array( 'maxKeys' => 3 ) ); foreach ( array( 'foo', 'bar', 'baz' ) as $key ) { @@ -75,4 +82,27 @@ class HashBagOStuffTest extends PHPUnit_Framework_TestCase { } $this->assertEquals( false, $cache->get( 'bar' ), 'Evicted bar' ); } + + /** + * Ensure maxKeys eviction prefers recently retrieved keys (LRU). + */ + public function testEvictionGet() { + $cache = new HashBagOStuff( array( 'maxKeys' => 3 ) ); + + foreach ( array( 'foo', 'bar', 'baz' ) as $key ) { + $cache->set( $key, 1 ); + } + + // Get existing key + $cache->get( 'foo', 1 ); + + // Add a 4th key (beyond the allowed maximum) + $cache->set( 'quux', 1 ); + + // Foo's life should have been extended over Bar + foreach ( array( 'foo', 'baz', 'quux' ) as $key ) { + $this->assertEquals( 1, $cache->get( $key ), "Kept $key" ); + } + $this->assertEquals( false, $cache->get( 'bar' ), 'Evicted bar' ); + } }