def visit(self, node): class_name = node.__class__.__name__.lower() visitor = getattr(self, 'visit_' + class_name, None) if visitor is not None: return visitor(node) raise TaurusInternalException("Visitor for class %s not found" % class_name)
def create_artifact(self, prefix, suffix): """ Create new artifact in artifacts dir with given prefix and suffix :type prefix: str :type suffix: str :return: Path to created file :rtype: str :raise TaurusInternalException: if no artifacts dir set """ if not self.artifacts_dir: raise TaurusInternalException("Cannot create artifact: no artifacts_dir set up") filename = get_uniq_name(self.artifacts_dir, prefix, suffix, self.__artifacts) self.__artifacts.append(filename) self.log.debug("New artifact filename: %s", filename) return filename
def write(self, fds, fmt): """ Write config into opened file :type fds: file :type fmt: str :raise TaurusInternalException: """ if fmt == self.JSON: json_s = to_json(self) fds.write(json_s.encode('utf-8')) elif fmt == self.YAML: yml = yaml.dump(self, default_flow_style=False, explicit_start=True, canonical=False, allow_unicode=True, encoding='utf-8', width=float("inf")) fds.write(yml) else: raise TaurusInternalException("Unknown dump format: %s" % fmt) fds.write("\n".encode('utf-8'))
def merge_point(self, src, do_recalculate=True): """ :type src: DataPoint """ if self[self.TIMESTAMP] != src[self.TIMESTAMP]: msg = "Cannot merge different timestamps (%s and %s)" raise TaurusInternalException( msg % (self[self.TIMESTAMP], src[self.TIMESTAMP])) self[DataPoint.SUBRESULTS].append(src) self.__merge_kpis(src[self.CURRENT], self[self.CURRENT], src[DataPoint.SOURCE_ID]) self.__merge_kpis(src[self.CUMULATIVE], self[self.CUMULATIVE], src[DataPoint.SOURCE_ID]) if do_recalculate: self.recalculate()
def __process_readers(self, final_pass=False): """ :param final_pass: True if in post-process stage :return: """ for result in self._read(final_pass): if result is None: self.log.debug("No data from reader") break elif isinstance(result, list) or isinstance(result, tuple): t_stamp, label, conc, r_time, con_time, latency, r_code, error, trname, byte_count = result if label in self.ignored_labels: continue if t_stamp < self.min_timestamp: self.log.debug("Putting sample %s into %s", t_stamp, self.min_timestamp) t_stamp = self.min_timestamp if r_time < 0: self.log.warning( "Negative response time reported by tool, resetting it to zero" ) r_time = 0 if t_stamp not in self.buffer: self.buffer[t_stamp] = [] error = self._fold_error(error) self.buffer[t_stamp].append( (label, conc, r_time, con_time, latency, r_code, error, trname, byte_count)) else: raise TaurusInternalException( "Unsupported results from %s reader: %s" % (self, result))
def values(self): raise TaurusInternalException("Invalid call")
def viewitems(self): if PY3: raise TaurusInternalException("Invalid call") for item in super(KPISet, self).viewitems(): yield (item[0], self.__getitem__(item[0]))