public function testMainCollect()
 {
     $dataConn = array(array('network_start_ip' => 1, 'network_last_ip' => 2, 'connection_type' => 'Dsl'), array('network_start_ip' => 3, 'network_last_ip' => 9, 'connection_type' => 'Cellular'));
     $dataIspName = array(array(4, 6, 'ISP1'), array(7, 9, 'ISP2'));
     $dataCountry = array(array('startIpNum' => 2, 'endIpNum' => 4, 'country' => 'RU'), array('startIpNum' => 5, 'endIpNum' => 6, 'country' => 'EN'), array('startIpNum' => 7, 'endIpNum' => 9, 'country' => 'AL'));
     $dataTranslate = array(array('ispName' => 'ISP2', 'translate' => 'Провайдер2'));
     $connCsvParser = new csvParserMock($dataConn);
     $ispNameCsvParser = new csvParserMock($dataIspName);
     $countryCodeCsvParser = new csvParserMock($dataCountry);
     $translateCsvParser = new csvParserMock($dataTranslate);
     $collIterator = new collectorIterator($connCsvParser, $ispNameCsvParser, $countryCodeCsvParser, $translateCsvParser);
     $result = array();
     while ($data = $collIterator->getNext()) {
         $result[] = $data;
     }
     $etalon = array(array("ipSeg" => new ipSegment(4, 4), 'ispNameEn' => 'ISP1', 'countryCode' => 'RU', 'ispNameRu' => null), array("ipSeg" => new ipSegment(5, 6), 'ispNameEn' => 'ISP1', 'countryCode' => 'EN', 'ispNameRu' => null), array("ipSeg" => new ipSegment(7, 9), 'ispNameEn' => 'ISP2', 'countryCode' => 'AL', 'ispNameRu' => 'Провайдер2'));
     $this->assertEquals($etalon, $result);
 }
Ejemplo n.º 2
0
$time1 = microtime(true);
$options = getopt("", array("configFile:"));
if (empty($options['configFile'])) {
    echo "Usage: --configFile=<value>";
    exit;
}
$jsonOpts = array('connTypeCsv' => array("isFileName" => 1, "desc" => "имя файла csv с соединениями"), 'ispNameCsv' => array("isFileName" => 1, "desc" => "имя файла csv с именами провайдеров"), 'countryCodeCsv' => array("isFileName" => 1, "desc" => "имя файла csv с названиями стран"), 'translateCsv' => array("isFileName" => 1, "desc" => "имя файла csv с переводами провайдеров"), 'outputCsv' => array("desc" => "имя файла csv в который будут складываться коды провайдеров"), 'outputDb' => array("desc" => "имя файла с итоговой базой"), collectorOptions::VERSION_NAME => array("desc" => "текущая версия БД с провайдерами"));
echo "INFO: Получение опций\n";
$opts = new collectorOptions($jsonOpts, $options['configFile']);
echo "INFO: Подготовка файлов\n";
$connCsvParser = new csvParser($opts->connTypeCsv);
$ispNameCsvParser = new csvParser($opts->ispNameCsv, false);
//Нет заголовка у csv
$countryCodeCsvParser = new csvParser($opts->countryCodeCsv);
$translateCsvParser = new csvParser($opts->translateCsv);
$collectorIterator = new collectorIterator($connCsvParser, $ispNameCsvParser, $countryCodeCsvParser, $translateCsvParser);
$carrierCsvWriter = new carrierCsvWriter($opts->outputCsv);
$dbDataProcessor = new dbDataProcessor();
echo "INFO: Обработка данных\n";
$i = 0;
while ($row = $collectorIterator->getNext()) {
    $carrierCsvWriter->addNext($row);
    $dbDataProcessor->addCarrierInterval($row['ipSeg'], $carrierCsvWriter->getCode($row));
    $i++;
    if ($i % 1000 == 0) {
        echo "INFO: обработано {$i} записей\n";
    }
}
unset($carrierCsvWriter);
echo "INFO: Запись базы\n";
$dbStream = new dbStream($opts->outputDb, false);