/** * @param $timeout * @return bool */ private function blockUntilReady($timeout) { $bur = new BlockUntilReadyCache(); $startTime = Latency::startMeasuringLatency(); do { $lastreadyCheckpoint = $bur->getReadyCheckpoint(); if ($lastreadyCheckpoint > 0) { return true; } // Checkpoint in milliseconds $checkPoint = Latency::calculateLatency($startTime) / 1000; // waiting 10 milliseconds usleep(10000); } while ($checkPoint < $timeout); return false; }
/** * @depends testDiLog * @depends testDiCache */ public function testBlockUntilReadyCacheInterface() { $dateTimeUTC = new \DateTime("now", new \DateTimeZone("UTC")); $deltaTime = 100; $splitsTimestamp = $dateTimeUTC->getTimestamp(); $segmentsTimestamp = $dateTimeUTC->getTimestamp() + $deltaTime; $bur = new BlockUntilReadyCache(); $bur->setReadySplits($splitsTimestamp); $bur->setReadySegments($segmentsTimestamp); //Checking $this->assertEquals($splitsTimestamp, $bur->getReadySplits()); $this->assertEquals($segmentsTimestamp, $bur->getReadySegments()); $this->assertEquals(min($splitsTimestamp, $segmentsTimestamp), $bur->getReadyCheckpoint()); }