public function testServesStaleValueIfOtherProcessIsGeneratingContent()
{
$key = "masche14";
$lockManagerMock = $this->createLockManagerMock();
$lockManagerMock->method('acquire')->with($this->equalTo($key))->will($this->returnValue(true));
$lockManagerMock->method('release')->with($this->equalTo($key))->will($this->returnValue(true));
$cache = new Cache(new MockStore(), $lockManagerMock);
$resultNew = "Javier Alejandro Mascherano plays for FC Barcelona in La Liga and the Argentina national team.";
$resultStale = "Javier Mascherano";
$retVal = $cache->cache($key, $this->createFunc($resultStale), -1);
$this->assertSame($retVal, $resultStale);
// simulate lock (other process generating content)
$cache->getLockManager()->acquire($key, 30);
// try to cache new (but stale value should be returned as lock is acquired earlier)
$ret_val = $cache->cache($key, $this->createFunc($resultNew), -1);
$this->assertSame($retVal, $resultStale);
// release lock and try to cache new value again
$cache->getLockManager()->release($key);
$retVal = $cache->cache($key, $this->createFunc($resultNew), -1);
$this->assertSame($retVal, $resultNew);
}