Пример #1
0
 public function run_process_base()
 {
     $this->_logger->log(__METHOD__);
     $this->_logger->log(__METHOD__ . ' role none; ');
     $this->_logger->log(__METHOD__ . ' find  messages, that have been received in a base mode');
     $criteria = new CDbCriteria();
     $criteria->condition = "is_processed = 0 and is_processing = 0";
     $criteria->condition .= " and synchronization_mode = 'none'";
     $criteria->order = "temp_log_id asc";
     $criteria->limit = 100;
     /** @var array|ListenerLogTemp[] $logs */
     $logs = ListenerLogTemp::model()->findAll($criteria);
     $this->_logger->log(__METHOD__ . '[' . getmypid() . '] PrepareCommand...  found ' . count($logs) . ' unprocessed messages');
     $this->_logger->log(__METHOD__ . ' Create records for forwarding');
     // Forwarding messages
     $processForwardedMessages = new ProcessForwardedMessages($this->_logger);
     $this->_logger->log(__METHOD__ . ' Create records for forwarding');
     foreach ($logs as $log) {
         // Create records for forwarding
         $processForwardedMessages->saveNewForwardedMessage($log);
         $log->is_processing = 1;
         $log->save();
         // run processing of message
         // $log - from ListenerLogTemp model
         $process_obj = new ProcessMessage($this->_logger, $log);
         $process_obj->run();
         // update message as "is processed"
         $log->is_processed = 1;
         $log->is_processing = 0;
         $log->save();
     }
     $this->_logger->log(__METHOD__ . ' sent Forwarded Messages');
     $processForwardedMessages->forwardMessages(10);
     //find slave messages
     $this->_logger->log(__METHOD__ . ' find  messages, that have been received in a Salve mode');
     $criteria = new CDbCriteria();
     $criteria->condition = "is_processed = 0 and is_processing = 0";
     $criteria->condition .= ' and from_master = 1';
     $criteria->condition .= " and synchronization_mode = 'slave'";
     $criteria->order = "temp_log_id asc";
     $criteria->limit = 100;
     $logs = ListenerLogTemp::model()->findAll($criteria);
     $this->_logger->log(__METHOD__ . '[' . getmypid() . '] PrepareCommand...  found ' . count($logs) . ' unprocessed messages');
     foreach ($logs as $log) {
         $log->is_processing = 1;
         $log->save();
         // run processing of message
         // $log - from ListenerLogTemp model
         $process_obj = new ProcessMessage($this->_logger, $log);
         $process_obj->run();
         // update message as "is processed"
         $log->is_processed = 1;
         $log->is_processing = 0;
         $log->save();
     }
     //find master messages
     $this->_logger->log(__METHOD__ . ' find  messages, that have been received in a Master mode');
     $criteria = new CDbCriteria();
     $criteria->condition = "is_processed = 0 and is_processing = 0";
     $criteria->condition .= " and from_master = 0";
     $criteria->condition .= " and synchronization_mode = 'master'";
     $criteria->order = "temp_log_id asc";
     $criteria->limit = 100;
     /** @var array|ListenerLogTemp[] $logs */
     $logs = ListenerLogTemp::model()->findAll($criteria);
     $this->_logger->log(__METHOD__ . '[' . getmypid() . '] PrepareCommand...  found ' . count($logs) . ' unprocessed messages');
     // Forwarding messages
     $processForwardedMessages = new ProcessForwardedMessages($this->_logger);
     $processForwardedSlaveMessages = new ProcessForwardedSlaveMessages($this->_logger);
     $this->_logger->log(__METHOD__ . ' Create records for forwarding');
     $this->_logger->log(__METHOD__ . ' Create records for slave forwarding');
     foreach ($logs as $log) {
         // Create records for forwarding
         if ($this->synchronization->isMaster()) {
             $processForwardedMessages->saveNewForwardedMessage($log);
             $processForwardedSlaveMessages->saveNewForwardedSlaveMessage($log);
             $log->is_processing = 1;
             $log->save();
             // run processing of message
             // $log - from ListenerLogTemp model
             $process_obj = new ProcessMessage($this->_logger, $log);
             $process_obj->run();
             // update message as "is processed"
             $log->is_processed = 1;
             $log->is_processing = 0;
             $log->save();
         }
     }
 }
Пример #2
0
 public function test_Run_AWS01Station()
 {
     $settings = new Settings();
     $listenerLog = new ListenerLog();
     $listenerLog->message = '@DAWS01000101001900WS13000000000000RN1001007000009500BV1120SR1001000000000000SD10010000000TP10060HU1000TP20431TP30391WD13001001001PR116150693D2856$';
     $processMessage = new ProcessMessage(LoggerFactory::getTestLogger(), $listenerLog);
     $station = new Station();
     $station->station_id = 1;
     $station->station_id_code = 'AWS01';
     $station->station_type = 'aws';
     $handlers = array();
     $sensorHandler = new SensorDBHandler();
     $sensorHandler->handler_id_code = 'WindSpeed';
     $sensor = new StationSensor();
     $sensor->handler = $sensorHandler;
     $sensor->station_sensor_id = 1;
     StubFactory::clear();
     StubFactory::stubFunction('ListenerLogProcessError->save');
     StubFactory::stubFunction('ListenerLog->save');
     StubFactory::stubFunction('Station->find', array('return' => $station));
     StubFactory::stubFunction('Settings->findByPk', array('return' => $settings));
     StubFactory::stubFunction('SensorData->find');
     StubFactory::stubFunction('SensorData->save');
     StubFactory::stubFunction('StationCalculation->findAll', array('return' => $handlers));
     StubFactory::stubFunction('StationSensor->find', array('return' => $sensor));
     $processMessage->run();
     $this->assertEquals(9, count($processMessage->warnings));
     $this->assertEquals(0, count($processMessage->errors));
     // Call of stub in destructor
     unset($processMessage);
     $this->assertEquals(0, StubFactory::getStubCallCount('Settings->findByPk'));
     $this->assertEquals(1, StubFactory::getStubCallCount('Station->find'));
     $this->assertEquals(2, StubFactory::getStubCallCount('ListenerLog->save'));
     $this->assertEquals(4, StubFactory::getStubCallCount('SensorData->save'));
 }
 public function test_Run_AWS1Station_NoErrors()
 {
     $listenerLog = $this->createBlankMessage();
     $listenerLog->message = '@DAWS01000101001900WS13000000000000RN1001007000009500BV1120SR1001000000000000SD10010000000TP10060HU1000TP20431TP30391WD13001001001PR116150693D2856$';
     $listenerLog->station_id = 1;
     $listenerLog->save();
     $processMessage = new ProcessMessage(LoggerFactory::getTestLogger(), $listenerLog);
     $processMessage->run();
     $this->assertEquals(0, count($processMessage->warnings));
     $this->assertEquals(0, count($processMessage->errors));
 }