示例#1
0
文件: jrpc.py 项目: yotamr/easypy
 def get_results():
     rpc_result = self.client.rpc(method, *params_list,
                                  **params_dict)
     if rpc_result.completed:
         # rpc_result.result is allowed to be False or None, so we
         # return the entire rpc_result
         return rpc_result
     wait(rpc_result.resend_secs)
示例#2
0
def test_wait_with_callable_message():
    val = ['FOO']

    with pytest.raises(TimeoutException) as e:

        def pred():
            val[0] = 'BAR'
            return False

        wait(pred=pred, timeout=.1, message=lambda: 'val is %s' % val[0])

    assert val[0] == 'BAR'
    assert e.value.message == 'val is BAR'
示例#3
0
def test_wait_exception():
    with pytest.raises(Exception, match=".*`message` is required.*"):
        wait(0.1, pred=lambda: True)

    wait(0.1)
    wait(0.1, pred=lambda: True, message='message')
    wait(0.1, pred=lambda: True, message=False)
    repeat(0.1, callback=lambda: True)
示例#4
0
文件: client.py 项目: ssabrii/talker
    def iter_output(self, cmds, sleep=1.0, decode='utf-8'):
        """
        Iterate commands output

        :param [List[Cmd]] cmds: The list of commands to iterate on their output
        :param [int, float] sleep: How long to sleep between pollings
        :param [str] decode: Expected output encoding

        :returns: A MultiObject of tuples containing stdout and stderr
        :rtype: MultiObject[Tuple[str, str]]
        """
        while not self.is_done(cmds):
            yield self.get_output(cmds, decode=decode)
            wait(sleep)
        yield self.get_output(cmds, decode=decode)
示例#5
0
文件: reactor.py 项目: ssabrii/talker
    def get_response(self, cmd_idx):
        item = self._commands.pop(cmd_idx)

        def has_response():
            _check_exiting()
            if not item.event.wait(timeout=0.5):
                raise NoResponseForRedisCommand(**item._asdict())
            return True

        wait(REDIS_SOCKET_TIMEOUT + MINUTE,
             has_response,
             message=False,
             progressbar=False,
             sleep=0)
        [response] = item.results
        return response
示例#6
0
def test_wait_long_predicate():
    """
    After the actual check the predicate is held for 3 seconds. Make sure
    that we don't get a timeout after 2 seconds - because the actual
    condition should be met in 1 second!
    """

    t = Timer()

    def pred():
        try:
            return 0.1 < t.duration
        finally:
            wait(0.3)

    wait(0.2, pred, message=False)
示例#7
0
def test_wait_do_something_on_final_attempt(multipred):
    data = []

    def pred(is_final_attempt):
        if is_final_attempt:
            data.append('final')
        data.append('regular')
        return False

    if multipred:
        pred = [pred]

    with pytest.raises(TimeoutException):
        wait(pred=pred, timeout=.5, sleep=.1, message=False)

    assert all(iteration == 'regular' for iteration in data[:-2])
    assert data[-2] == 'final'
    assert data[-1] == 'regular'
示例#8
0
文件: reactor.py 项目: ssabrii/talker
    def send_blocking(self, cmd, *args, timeout=MINUTE, **kwargs):
        assert timeout is not None
        timeout = timeout or 1

        def _send():
            res = self.send(cmd, *args, **kwargs)
            if res is None:
                return False
            if res is False:
                return self._FALSE
            return res

        res = wait(timeout, _send, sleep=0.01, progressbar=False, throw=False)
        if res == self._FALSE:
            res = False
        return res
示例#9
0
文件: jrpc.py 项目: yotamr/easypy
        def rpc(self, method, *params_list, **params_dict):
            long_operation_timeout_override = params_dict.pop(
                "long_operation_timeout") or 60

            def get_results():
                rpc_result = self.client.rpc(method, *params_list,
                                             **params_dict)
                if rpc_result.completed:
                    # rpc_result.result is allowed to be False or None, so we
                    # return the entire rpc_result
                    return rpc_result
                wait(rpc_result.resend_secs)

            try:
                rpc_result = wait(long_operation_timeout_override,
                                  get_results,
                                  sleep=0)
            except TimeoutError:
                raise LongOperationTimeout(method)

            assert rpc_result.completed
            return rpc_result.result
示例#10
0
 def pred():
     try:
         return 0.1 < t.duration
     finally:
         wait(0.3)