$this->assertFalse( $this->cache->get( $key ), "Stale set() value ignored" );
}
+ /**
+ * @covers WANObjectCache::getWithSetCallback
+ */
+ public function testProcessCacheTTL() {
+ $cache = $this->cache;
+ $mockWallClock = 1549343530.2053;
+ $cache->setMockTime( $mockWallClock );
+
+ $key = "mykey-" . wfRandomString();
+
+ $hits = 0;
+ $callback = function ( $oldValue, &$ttl, &$setOpts ) use ( &$hits ) {
+ ++$hits;
+ return 42;
+ };
+
+ $cache->getWithSetCallback( $key, 100, $callback, [ 'pcTTL' => 5 ] );
+ $cache->delete( $key, $cache::HOLDOFF_NONE ); // clear persistent cache
+ $cache->getWithSetCallback( $key, 100, $callback, [ 'pcTTL' => 5 ] );
+ $this->assertEquals( 1, $hits, "Value process cached" );
+
+ $mockWallClock += 6;
+ $cache->getWithSetCallback( $key, 100, $callback, [ 'pcTTL' => 5 ] );
+ $this->assertEquals( 2, $hits, "Value expired in process cache" );
+ }
+
/**
* @covers WANObjectCache::getWithSetCallback
*/
$v = $cache->getWithSetCallback(
$key, 30, $checkFunc, [ 'staleTTL' => 50 ] + $extOpts );
$this->assertEquals( 'xxx1', $v, "Value returned" );
- $this->assertEquals( false, $oldValReceived, "Callback got no stale value" );
- $this->assertEquals( null, $oldAsOfReceived, "Callback got no stale value" );
+ $this->assertFalse( $oldValReceived, "Callback got no stale value" );
+ $this->assertNull( $oldAsOfReceived, "Callback got no stale value" );
$mockWallClock += 40;
$v = $cache->getWithSetCallback(
$key, 30, $checkFunc, [ 'staleTTL' => 50 ] + $extOpts );
$this->assertEquals( 'xxx3', $v, "Value still returned after expired" );
$this->assertEquals( 3, $wasSet, "Value recalculated while expired" );
- $this->assertEquals( false, $oldValReceived, "Callback got no stale value" );
- $this->assertEquals( null, $oldAsOfReceived, "Callback got no stale value" );
+ $this->assertFalse( $oldValReceived, "Callback got no stale value" );
+ $this->assertNull( $oldAsOfReceived, "Callback got no stale value" );
$mockWallClock = ( $priorTime - $cache::HOLDOFF_TTL - 1 );
$wasSet = 0;
);
$this->assertEquals( 'xxx1', $v, "Value returned" );
$this->assertEquals( 1, $wasSet, "Value computed" );
- $this->assertEquals( false, $oldValReceived, "Callback got no stale value" );
- $this->assertEquals( null, $oldAsOfReceived, "Callback got no stale value" );
+ $this->assertFalse( $oldValReceived, "Callback got no stale value" );
+ $this->assertNull( $oldAsOfReceived, "Callback got no stale value" );
$mockWallClock += $cache::TTL_HOUR; // some time passes
$v = $cache->getWithSetCallback(
$this->assertEquals( $valueV2, $v, "Value returned" );
$this->assertEquals( 1, $wasSet, "Value regenerated" );
$this->assertEquals( false, $priorValue, "Old value not given due to old format" );
- $this->assertEquals( null, $priorAsOf, "Old value not given due to old format" );
+ $this->assertNull( $priorAsOf, "Old value not given due to old format" );
$wasSet = 0;
$v = $cache->getWithSetCallback( $key, 30, $funcV2, $verOpts + $extOpts );