+
+ def __record_header_put(self, key, value):
+ if self.sender:
+ self.record_header[key] = value
+
+ def __record_data_put(self, key, data):
+ if self.sender:
+ if key not in self.record_data:
+ self.record_data[key] = {}
+ self.record_data[key].update(data)
+
+ def __record_send(self):
+ if self.sender:
+ self.record_header["@timestamp"] = datetime.utcnow().replace(
+ tzinfo=pytz.utc).strftime(
+ "%Y-%m-%dT%H:%M:%S.%f%z")
+ for frame_size in self.record_data:
+ data = self.record_header
+ data['frame_size'] = frame_size
+ data.update(self.record_data[frame_size])
+ run_specific_data = {}
+ if 'single_run' in data:
+ run_specific_data['single_run'] = data['single_run']
+ del data['single_run']
+ if 'ndr' in data:
+ run_specific_data['ndr'] = data['ndr']
+ run_specific_data['ndr']['drop_limit'] = self.config['measurement']['NDR']
+ del data['ndr']
+ if 'pdr' in data:
+ run_specific_data['pdr'] = data['pdr']
+ run_specific_data['pdr']['drop_limit'] = self.config['measurement']['PDR']
+ del data['pdr']
+ for key in run_specific_data:
+ data_to_send = data.copy()
+ data_to_send.update(run_specific_data[key])
+ self.sender.record_send(data_to_send)
+ self.__record_init()
+
+ def __record_init(self):
+ # init is called after checking for sender
+ self.record_header = {
+ "runlogdate": self.sender.runlogdate,
+ }
+ self.record_data = {}