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(); } } }
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)); }