def publish_results(self, endpoint_buffer):
     if not self.is_enabled():
         return
     results = endpoint_buffer.generate_result_report()
     results_validator(results)
     self.redis_db.publish(self.result_channel, json.dumps(results))
     self._handle_redis_job_metadata()
Esempio n. 2
0
    def publish_results(self, endpoint_buffer):
        if not self.is_enabled():
            return
        result_report = endpoint_buffer.generate_result_report()
        results_validator(result_report)
        results = json.dumps(result_report)

        log.debug(f"Publishing {utf8len(results)} KB of data via Redis.")
        self.redis_db.publish(self.result_channel, results)
        self._handle_redis_job_metadata()
Esempio n. 3
0
    def prepare_results_for_publish(self):
        result_report = self.generate_result_report()
        results_validator(result_report)

        message_size = get_json_dict_memory_allocation_size(result_report)
        if message_size > 64000:
            logging.error(
                f"Do not publish message bigger than 64 MB, current message size "
                f"{message_size / 1000.0} MB.")
            return None
        logging.debug(f"Publishing {message_size} KB of data via Redis.")
        return result_report
Esempio n. 4
0
    def test_results_validator(self):

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            'random_seed': 0,
            'unmatched_loads': {},
            'cumulative_loads': {},
            'price_energy_day': {},
            'cumulative_grid_trades': {},
            'bills': {},
            'cumulative_bills': {},
            'progress_info': {},
            'status': 'running',
            'device_statistics': {},
            'energy_trade_profile': {}
        }
        results_validator(results)

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            'random_seed': 0,
            'unmatched_loads': {},
            'cumulative_loads': {},
            'price_energy_day': {},
            'cumulative_grid_trades': {},
            'progress_info': {},
            'bills': {},
            'cumulative_bills': {},
            'device_statistics': {},
            'energy_trade_profile': {}
        }
        self.assertRaises(ValidationError, results_validator, results)

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            'random_seed': 0,
            'unmatched_loads': {},
            'cumulative_loads': {},
            'price_energy_day': {},
            'cumulative_grid_trades': {},
            'bills': {},
            'cumulative_bills': {},
            'progress_info': {},
            'status': 'running',
            'device_statistics': {},
            'not_a_parameter': {}
        }
        self.assertRaises(ValidationError, results_validator, results)
Esempio n. 5
0
    def publish_results(self, endpoint_buffer):
        if not self.is_enabled():
            return
        result_report = endpoint_buffer.generate_result_report()
        results_validator(result_report)

        results = json.dumps(result_report)
        message_size = utf8len(results)
        if message_size > 64000:
            log.error(f"Do not publish message bigger than 64 MB, current message size "
                      f"{message_size / 1000.0} MB.")
            return
        log.debug(f"Publishing {message_size} KB of data via Redis.")

        results = results.encode('utf-8')
        results = compress(results)

        self.redis_db.publish(self.result_channel, results)
        self._handle_redis_job_metadata()
Esempio n. 6
0
    def test_results_validator(self):

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            "current_market": "2020-10-31T04:00",
            'random_seed': 0,
            'status': 'running',
            'progress_info': {
                "eta_seconds": 0,
                "elapsed_time_seconds": 0,
                "percentage_completed": 0
            }
        }
        results_validator(results)

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            "current_market": "2020-10-31T04:00",
            'random_seed': 0,
            'status': 'running',
            'price_energy_day': {},
            'cumulative_grid_trades': {},
            'bills': {},
            'cumulative_bills': {},
            'device_statistics': {},
            'energy_trade_profile': {}
        }
        self.assertRaises(ValidationError, results_validator, results)

        results = {
            'job_id': '46ff19de-6a4d-4ce8-a6c9-cd7b2778f2fc',
            'random_seed': 0,
            'price_energy_day': {},
            'cumulative_grid_trades': {},
            'bills': {},
            'cumulative_bills': {},
            'progress_info': {},
            'status': 'running',
            'device_statistics': {},
            'not_a_parameter': {}
        }
        self.assertRaises(ValidationError, results_validator, results)