示例#1
0
 /**
  * @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());
 }