public function testTransfer()
 {
     $cycleID = DWHInspector::getCycle('LOADED');
     $ds_lines = array();
     $files = DWHInspector::getFiles($cycleID);
     $dsTablesToFactTables = $this->getDSTablesToFactTables();
     foreach ($files as $fileID) {
         foreach (array_keys($dsTablesToFactTables) as $dsTable) {
             $ds_lines[$fileID][$dsTable] = DWHInspector::countRows('kalturadw_ds.' . $dsTable, $fileID);
         }
     }
     DWHInspector::markAllAsAggregated();
     $transferParams = $this->getTransferParams();
     KettleRunner::execute($this->getTransferJob(), $transferParams);
     $this->assertEquals($cycleID, DWHInspector::getCycle('DONE'));
     $this->isCycleDirExists($cycleID, false);
     $files = DWHInspector::getFiles($cycleID);
     foreach ($files as $fileID) {
         foreach ($dsTablesToFactTables as $dsTable => $factTable) {
             // compare rows in ds_events and dwh_fact_events
             $this->assertEquals($ds_lines[$fileID][$dsTable], DWHInspector::countRows('kalturadw.' . $factTable, $fileID));
             // make sure ds_events was emptied
             $this->assertEquals(0, DWHInspector::countRows('kalturadw_ds.' . $dsTable, $fileID));
         }
     }
     foreach (DWHInspector::getAggrDatesAndHours($cycleID) as $table => $arr) {
         $minDateID = DWHInspector::getResetAggregationsMinDateID($cycleID, $table);
         $postTransferAggregationTypes = DWHInspector::getPostTransferAggregationTypes($transferParams[self::TRANSFER_PARAM_PROCESS_ID], $table);
         foreach ($arr as $dateID => $hours) {
             foreach ($hours as $hourID) {
                 foreach ($postTransferAggregationTypes as $aggrType) {
                     $filter = 'aggr_name = \'' . $aggrType . '\' and date_id = ' . $dateID . ' and hour_id = ' . $hourID . ' and ifnull(start_time,date(19700101)) < data_insert_time';
                     $rowExists = DWHInspector::rowExists('kalturadw.aggr_managment', $filter);
                     $this->assertEquals($dateID >= $minDateID, $rowExists, "Row Date: {$dateID} {$hourID} {$aggrType} . Min Date: {$minDateID}");
                 }
             }
         }
     }
 }