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)
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')
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])
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)
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)
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)
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()
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)
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()
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)
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()
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)
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)
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)