Пример #1
0
    def test_stop(self):
        self.timer_called = 0
        self.prepare_called = 0

        def on_timeout(timer):
            self.timer_called += 1
            if self.timer_called == 2:
                self.loop.stop()
            if self.timer_called == 10:
                timer.close()

        def on_prepare(prepare):
            self.prepare_called += 1
            if self.prepare_called == 10:
                prepare.close()

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.timer.start(10, repeat=10)
        self.prepare = uv.Prepare(on_prepare=on_prepare)
        self.prepare.start()

        self.loop.run()
        self.assert_equal(self.timer_called, 2)
        self.assert_greater_equal(self.prepare_called, 2)
        self.loop.run(uv.RunModes.NOWAIT)
        self.assert_greater_equal(self.prepare_called, 3)
        self.loop.run()
        self.assert_equal(self.timer_called, 10)
        self.assert_equal(self.prepare_called, 10)
Пример #2
0
    def test_udp_try_send(self):
        self.datagram = None

        def on_receive(udp_handle, status, address, data, flags):
            self.datagram = data
            udp_handle.receive_stop()

        def on_timeout(timer):
            try:
                self.client.try_send(b'hello',
                                     (common.TEST_IPV4, common.TEST_PORT1))
            except uv.error.TemporaryUnavailableError:
                self.server.close()
                self.datagram = b'hello'

        self.server = uv.UDP(on_receive=on_receive)
        self.server.bind((common.TEST_IPV4, common.TEST_PORT1))
        self.server.receive_start()

        self.client = uv.UDP()
        self.client.bind(('0.0.0.0', 0))

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.timer.start(100)

        self.loop.run()

        self.assert_equal(self.datagram, b'hello')
Пример #3
0
    def test_try_write(self):
        self.buffer = b''
        self.bytes_written = 0

        def on_read(connection, status, data):
            self.buffer += data
            connection.read_stop()

        def on_connection(pipe_handle, status):
            connection = pipe_handle.accept()
            connection.read_start(on_read=on_read)
            pipe_handle.close()

        def on_timeout(timer):
            try:
                self.bytes_written = self.client.try_write(b'hello')
            except uv.error.TemporaryUnavailableError:
                self.server.close()
            finally:
                timer.close()

        self.server = uv.Pipe()
        self.server.bind(common.TEST_PIPE1)
        self.server.listen(on_connection=on_connection)

        self.client = uv.Pipe()
        self.client.connect(common.TEST_PIPE1)

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.timer.start(10)

        self.loop.run()

        self.assert_equal(self.buffer, b'hello'[:self.bytes_written])
Пример #4
0
    def test_timer_simple(self):
        self.timer_called = 0

        def on_timeout(_):
            self.timer_called += 1

        timer = uv.Timer(on_timeout=on_timeout)
        timer.start(50)

        self.loop.run()

        self.assert_equal(self.timer_called, 1)
Пример #5
0
    def test_timer_repeat(self):
        self.timer_called = 0

        def on_timeout(t):
            self.timer_called += 1
            if self.timer_called == 3: t.close()

        timer = uv.Timer(on_timeout=on_timeout)
        timer.start(50, repeat=50)

        self.loop.run()

        self.assert_equal(self.timer_called, 3)
Пример #6
0
    def test_get_handles(self):
        prepare = uv.Prepare()
        timer = uv.Timer()

        self.assert_equal(len(self.loop.handles), 2)
        self.assert_in(prepare, self.loop.handles)
        self.assert_in(timer, self.loop.handles)

        prepare.close()
        timer.close()

        self.loop.run()

        self.assert_equal(len(self.loop.handles), 0)
Пример #7
0
    def test_run_nowait(self):
        self.callback_called = False

        def on_timeout(timer):
            self.callback_called = True
            timer.close()

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.timer.start(100, repeat=100)

        self.loop.run(uv.RunModes.NOWAIT)

        self.assert_false(self.callback_called)

        self.timer.close()
        self.loop.run()
Пример #8
0
    def test_closed(self):
        self.timer = uv.Timer()
        self.timer.close()

        try:
            repeat = self.timer.repeat
        except uv.ClosedHandleError:
            pass
        else:
            self.assert_true(False)
        try:
            self.timer.repeat = 10
        except uv.ClosedHandleError:
            pass
        else:
            self.assert_true(False)
        self.assert_raises(uv.ClosedHandleError, self.timer.again)
        self.assert_raises(uv.ClosedHandleError, self.timer.start, 10)
        self.assert_is(self.timer.stop(), None)
Пример #9
0
    def test_fs_poll_change(self):
        def on_change(fs_poll, status, previous_stat, current_stat):
            self.assert_equal(status, uv.error.StatusCodes.SUCCESS)
            self.assert_not_equal(previous_stat.mtim, current_stat.mtim)
            fs_poll.close()

        def on_timeout(timer):
            os.utime(self.temp_file.name, U_TIME)
            timer.close()

        self.fs_poll = uv.FSPoll(interval=2000, on_change=on_change)
        self.timer = uv.Timer(on_timeout=on_timeout)

        with tempfile.NamedTemporaryFile() as temp_file:
            self.temp_file = temp_file
            self.fs_poll.path = temp_file.name
            self.fs_poll.start()
            self.timer.start(1000)
            self.loop.run()
Пример #10
0
    def test_fs_event_rename(self):
        def on_event(fs_event, status, name, events):
            self.assert_equal(status, uv.error.StatusCodes.SUCCESS)
            self.assert_equal(name, os.path.basename(self.temp_file.name))
            self.assert_equal(events, uv.FSEvents.RENAME)
            fs_event.close()

        def on_timeout(timer):
            os.rename(self.temp_file.name, self.temp_file.name + '-new-name')
            timer.close()

        self.fs_event = uv.FSEvent(on_event=on_event)
        self.timer = uv.Timer(on_timeout=on_timeout)

        with tempfile.NamedTemporaryFile() as temp_file:
            self.temp_file = temp_file
            self.fs_event.path = temp_file.name
            self.fs_event.start()
            self.timer.start(20)
            self.loop.run()
            os.rename(self.temp_file.name + '-new-name', self.temp_file.name)
Пример #11
0
    def test_fs_event_change(self):
        def on_event(fs_event, status, name, events):
            self.assert_equal(status, uv.error.StatusCodes.SUCCESS)
            self.assert_equal(name, os.path.basename(self.temp_file.name))
            self.assert_equal(events, uv.FSEvents.CHANGE)
            fs_event.close()

        def on_timeout(timer):
            self.temp_file.write(b'x')
            self.temp_file.flush()
            timer.close()

        self.fs_event = uv.FSEvent(on_event=on_event)
        self.timer = uv.Timer(on_timeout=on_timeout)

        with tempfile.NamedTemporaryFile() as temp_file:
            self.temp_file = temp_file
            self.fs_event.path = temp_file.name
            self.fs_event.start()
            self.timer.start(20)
            self.loop.run()
Пример #12
0
    def test_timer_reference(self):
        self.timer_called = 0

        def on_timeout(_):
            self.timer_called += 1

        timer = uv.Timer(on_timeout=on_timeout)
        timer.start(50)
        timer.dereference()

        self.loop.run()

        self.assert_false(timer.referenced)
        self.assert_equal(self.timer_called, 0)

        timer.reference()

        self.loop.run()

        self.assert_true(timer.referenced)
        self.assert_equal(self.timer_called, 1)
Пример #13
0
    def test_check(self):
        def on_check(check):
            self.on_check_called += 1
            if self.on_timeout_called > 5: check.close()

        def on_timeout(timer):
            self.on_timeout_called += 1
            if self.on_timeout_called > 5: timer.close()

        self.on_check_called = 0
        self.on_timeout_called = 0

        self.check = uv.Check(on_check=on_check)
        self.check.start()

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.timer.start(5, repeat=5)

        self.loop.run()

        self.assert_less_equal(self.on_timeout_called, self.on_check_called)
Пример #14
0
    def test_timer_pending(self):
        self.timer_called = 0

        def on_timeout(timer_handle):
            if self.timer_called == 0:
                self.assert_false(self.loop.structure_is_pending(timer_handle))
                timer_handle.repeat = 5
                timer_handle.again()
                self.assert_true(self.loop.structure_is_pending(timer_handle))
            self.timer_called += 1
            if self.timer_called >= 5:
                timer_handle.stop()
                self.assert_false(self.loop.structure_is_pending(timer_handle))

        self.timer = uv.Timer(on_timeout=on_timeout)
        self.assert_false(self.loop.structure_is_pending(self.timer))
        self.timer.start(5)
        self.assert_true(self.loop.structure_is_pending(self.timer))

        self.loop.run()

        self.assert_equal(self.timer_called, 5)