def check_ignored(self): if self.ignore: if not isinstance(self.ignore, bool): self.ignore = Operator.find_operator(self.ignore).operation( self.variables) if self.ignore: raise SkipException('Test ignored')
def check_skip(self, variables: dict): if self.skip_if is None: return False from catcher.steps.check import Operator operator = Operator.find_operator(self.skip_if) if operator.operation(variables): raise SkipException('Skipped due to {}'.format(self.skip_if))
def consume(self, topic, variables: dict) -> dict: from pykafka.common import OffsetType consumer = topic.get_simple_consumer( consumer_group=self.group_id.encode('utf-8'), auto_offset_reset=OffsetType.EARLIEST, reset_offset_on_start=False, consumer_timeout_ms=self.timeout * 1000) if self.where is not None: operator = Operator.find_operator(self.where) else: operator = None return Kafka.get_messages(consumer, operator, variables, self.timeout)
def action(self, includes: dict, variables: dict) -> dict: output = variables if self.type == 'while': operator = Operator.find_operator(self.if_clause) while operator.operation(output): output = self.__run_actions(includes, output) if self.max_cycle is not None: if self.max_cycle == 0: break self.max_cycle = self.max_cycle - 1 return output elif self.type == 'foreach': loop_var = try_get_objects( fill_template_str(json.dumps(self.in_var), variables)) if not isinstance(loop_var, collections.Iterable): raise ValueError(str(loop_var) + ' is not iterable') for entry in loop_var: output['ITEM'] = entry output = self.__run_actions(includes, output) return output
def action(self, includes: dict, variables: dict) -> dict: operator = Operator.find_operator(self.end_if) if operator.operation(variables): raise StopException(str(self.end_if) + ' fired') else: return variables
def check_message(where: Operator, message: str, variables: dict) -> bool: if where is None: return True variables = dict(variables) variables['MESSAGE'] = message return where.operation(variables)