/**
  *
  */
 public function test()
 {
     $gameVersion = self::$gameVersion;
     $shardIdList = ShardHelper::listShardId($gameVersion);
     $queue = new UidQueue(self::$dir, $gameVersion, $shardIdList);
     $groupedUidList = ['db1' => [1, 2, 3], 'db2' => [21, 22, 23]];
     $queue->push($groupedUidList);
     $content = $queue->pop();
     foreach ($groupedUidList as $shardId => $expectedUidList) {
         static::assertEquals($expectedUidList, $content[$shardId]);
     }
 }
 /**
  * @param int $repeatTimes
  * @param int $waitTime
  */
 public function run($repeatTimes, $waitTime)
 {
     $queue = new UidQueue(UID_QUEUE_DIR, $this->gameVersion, $this->shardList);
     $groupedUidList = $queue->pop();
     array_walk($groupedUidList, function (array $uidList, $shardId) {
         if (count($uidList) === 0) {
             return;
         }
         appendLog(__CLASS__ . ': [before aggregate] ' . $shardId . ' have uid ' . count($uidList));
     });
     $afterAggregate = $this->aggregate($groupedUidList, $repeatTimes, $waitTime);
     $now = date('Y-m-d H:i:s');
     array_walk($afterAggregate, function (array $uidList, $shardId) use($now) {
         if (count($uidList) === 0) {
             return;
         }
         appendLog(__CLASS__ . ': [after aggregate] ' . $shardId . ' have uid ' . count($uidList));
         array_map(function ($uid) use($now) {
             \error_log(sprintf('%d => %s' . PHP_EOL, $uid, $now), 3, $this->logFile);
         }, $uidList);
     });
     (new Manager($this->dataProvider, $this->indexer))->updateES($afterAggregate);
 }