def __apply_single_override(self, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = self for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance( pointer, dict): pointer = pointer.get(part, []) else: pointer = pointer.get(part) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: %s[%s]=%s", pointer, parts[-1], value) if isinstance(parts[-1], six.string_types) and parts[-1][0] == '^': del pointer[parts[-1][1:]] else: if value.isdigit(): value = float(value) if isinstance(pointer, list) and parts[-1] < 0: pointer.append(value) else: pointer[parts[-1]] = value
def __apply_single_override(self, dest, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = dest for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): if part < 0: if isinstance(parts[index + 1], int): pointer.append([]) else: pointer.append(BetterDict()) pointer = pointer[-1] else: pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance( pointer, dict): pointer = pointer.get(part, [], force_set=True) else: pointer = pointer.get(part, force_set=True) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: [%s]=%s", parts[-1], value) if isinstance(parts[-1], str) and parts[-1][0] == '*': return self.__apply_mult_override(pointer, parts[-1][1:], value) if isinstance(parts[-1], str) and parts[-1][0] == '^': item = parts[-1][1:] if isinstance(pointer, list): item = int(item) if -len(pointer) <= item < len(pointer): del pointer[item] else: self.log.debug("No value to delete: %s", item) elif isinstance(pointer, dict): if item in pointer: del pointer[item] else: self.log.debug("No value to delete: %s", item) else: raise ValueError( "Cannot handle override %s in non-iterable type %s" % (item, pointer)) else: parsed_value = self.__parse_override_value(value) self.log.debug("Parsed override value: %r -> %r (%s)", value, parsed_value, type(parsed_value)) if isinstance(parsed_value, dict): parsed_value = BetterDict.from_dict(parsed_value) if isinstance(pointer, list) and parts[-1] < 0: pointer.append(parsed_value) else: pointer[parts[-1]] = parsed_value
def __apply_single_override(self, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = self for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance(pointer, dict): pointer = pointer.get(part, []) else: pointer = pointer.get(part) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: %s[%s]=%s", pointer, parts[-1], value) if isinstance(parts[-1], string_types) and parts[-1][0] == '^': del pointer[parts[-1][1:]] else: if value.isdigit(): value = float(value) if isinstance(pointer, list) and parts[-1] < 0: pointer.append(value) else: pointer[parts[-1]] = value
def __apply_single_override(self, dest, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = dest for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): if part < 0: if isinstance(parts[index + 1], int): pointer.append([]) else: pointer.append(BetterDict()) pointer = pointer[-1] else: pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance(pointer, dict): pointer = pointer.get(part, [], force_set=True) else: pointer = pointer.get(part, force_set=True) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: [%s]=%s", parts[-1], value) if isinstance(parts[-1], string_types) and parts[-1][0] == '^': item = parts[-1][1:] if isinstance(pointer, list): item = int(item) if -len(pointer) <= item < len(pointer): del pointer[item] else: self.log.debug("No value to delete: %s", item) elif isinstance(pointer, dict): if item in pointer: del pointer[item] else: self.log.debug("No value to delete: %s", item) else: raise ValueError("Cannot handle override %s in non-iterable type %s" % (item, pointer)) else: parsed_value = self.__parse_override_value(value) self.log.debug("Parsed override value: %r -> %r (%s)", value, parsed_value, type(parsed_value)) if isinstance(parsed_value, dict): dict_value = BetterDict() dict_value.merge(parsed_value) parsed_value = dict_value if isinstance(pointer, list) and parts[-1] < 0: pointer.append(parsed_value) else: pointer[parts[-1]] = parsed_value
def __apply_single_override(self, dest, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = dest for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): if part < 0: if isinstance(parts[index + 1], int): pointer.append([]) else: pointer.append(BetterDict()) pointer = pointer[-1] else: pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance( pointer, dict): pointer = pointer.get(part, []) else: pointer = pointer.get(part) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: [%s]=%s", parts[-1], value) if isinstance(parts[-1], string_types) and parts[-1][0] == '^': item = parts[-1][1:] if item in pointer: del pointer[item] else: self.log.debug("No value to delete: %s", item) else: parsed_value = self.__parse_override_value(value) self.log.debug("Parsed override value: %r -> %r (%s)", value, parsed_value, type(parsed_value)) if isinstance(parsed_value, dict): dict_value = BetterDict() dict_value.merge(parsed_value) parsed_value = dict_value if isinstance(pointer, list) and parts[-1] < 0: pointer.append(parsed_value) else: pointer[parts[-1]] = parsed_value
def get_mixed_label(label, rc=None, msg=None): # it is used for generation of extended label. # each label data is split according to sample state (success/error/assert) def http_mark(): http_prefs = ("Embedded resource download error", "Non HTTP response message") return any(msg.startswith(http_pref) for http_pref in http_prefs) rc = int(rc) if is_int(rc) else 0 # it's jmeter_error by default if msg: if rc > 299 or http_mark(): group = SAMPLE_STATES[2] # http error else: group = SAMPLE_STATES[1] # jmeter error else: group = SAMPLE_STATES[0] # succeeded sample return '-'.join((label, str(group)))
def __apply_single_override(self, dest, name, value): """ Apply single override :type name: str :type value: str """ self.log.debug("Applying %s=%s", name, value) parts = [(int(x) if is_int(x) else x) for x in name.split(".")] pointer = dest for index, part in enumerate(parts[:-1]): self.__ensure_list_capacity(pointer, part, parts[index + 1]) if isinstance(part, int): if part < 0: if isinstance(parts[index + 1], int): pointer.append([]) else: pointer.append(BetterDict()) pointer = pointer[-1] else: pointer = pointer[part] elif isinstance(parts[index + 1], int) and isinstance(pointer, dict): pointer = pointer.get(part, []) else: pointer = pointer.get(part) self.__ensure_list_capacity(pointer, parts[-1]) self.log.debug("Applying: [%s]=%s", parts[-1], value) if isinstance(parts[-1], string_types) and parts[-1][0] == "^": item = parts[-1][1:] if item in pointer: del pointer[item] else: self.log.debug("No value to delete: %s", item) else: if value.isdigit(): value = float(value) if isinstance(pointer, list) and parts[-1] < 0: pointer.append(value) else: pointer[parts[-1]] = value