Metaphore\Tests\CacheTest::testServesStaleValueIfOtherProcessIsGeneratingContent PHP Method

testServesStaleValueIfOtherProcessIsGeneratingContent() public method

    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);
    }