History log of /libuv/test/test-timer.c (Results 1 – 25 of 38)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 51a22f60 22-Dec-2023 Matheus Izvekov

unix,win: fix busy loop with zero timeout timers (#4250)

Calling `uv_timer_start(h, cb, 0, 0)` from a timer callback resulted in
the timer running immediately because it was inserted at

unix,win: fix busy loop with zero timeout timers (#4250)

Calling `uv_timer_start(h, cb, 0, 0)` from a timer callback resulted in
the timer running immediately because it was inserted at the front of
the timer heap.

If the callback did that every time, libuv would effectively busy-loop
in `uv__run_timers()` and never make forward progress.

Work around that by collecting all expired timers into a queue and only
running their callback afterwards.

Fixes: https://github.com/libuv/libuv/issues/4245
Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl>

show more ...


# 011a1ac1 06-Oct-2023 Pleuvens

test: switch to new-style ASSERT_EQ macros (#4159)

Switch from old-style ASSERT macro to new-style ASSERT_EQ,... macros.

Using new-style macros makes it easier to debug test failure

test: switch to new-style ASSERT_EQ macros (#4159)

Switch from old-style ASSERT macro to new-style ASSERT_EQ,... macros.

Using new-style macros makes it easier to debug test failures

Fixes: https://github.com/libuv/libuv/issues/2974

show more ...


# 24d1d080 14-Jun-2023 Trevor Norris

src: don't run timers if loop is stopped/unref'd (#4048)

The initial run of timers shouldn't happen if uv_stop() has been run
before uv_run() was called, and for backwards compatibility

src: don't run timers if loop is stopped/unref'd (#4048)

The initial run of timers shouldn't happen if uv_stop() has been run
before uv_run() was called, and for backwards compatibility they also
shouldn't run if they have been unref'd before calling uv_run().

show more ...


# 66009549 20-Mar-2023 Trevor Norris

win,unix: change execution order of timers (#3927)

The maximum number of times timers should run when uv_run() is called
with UV_RUN_ONCE and UV_RUN_NOWAIT is 1. Do that by conditionally

win,unix: change execution order of timers (#3927)

The maximum number of times timers should run when uv_run() is called
with UV_RUN_ONCE and UV_RUN_NOWAIT is 1. Do that by conditionally
calling timers before entering the while loop when called with
UV_RUN_DEFAULT.

The reason to always run timers at the end of the while loop, instead of
at the beginning, is to help enforce the conceptual event loop model.
Which starts when entering the event provider (e.g. calling poll).

Other than only allowing timers to be processed once per uv_run()
execution, the only other noticeable change this will show is if all the
following are true:
* uv_run() is called with UV_RUN_NOWAIT or UV_RUN_ONCE.
* An event is waiting to be received when poll is called.
* Execution time between the call to uv_timer_start() and entering the
while loop is longer than the timeout.

If all these are true, then timers that would have executed before
entering the event provider will now be executed afterward.

Fixes: https://github.com/libuv/libuv/issues/3686
Co-authored-by: Momtchil Momtchev <momtchil@momtchev.com>

show more ...


# 91a7e498 12-Mar-2023 Trevor Norris

test: silence more valgrind warnings (#3917)

Pass the loop to MAKE_VALGRIND_HAPPY() so it's explicit on which loop
needs to be cleaned up. Since it asserts on uv_loop_close(), need to

test: silence more valgrind warnings (#3917)

Pass the loop to MAKE_VALGRIND_HAPPY() so it's explicit on which loop
needs to be cleaned up. Since it asserts on uv_loop_close(), need to
remove a couple of those that were being done before the call.

Cleanup where loop was assigned, so the entire test either uses loop or
uv_default_loop(). Not both.

Also take care of any reqs that may have been left uncleaned.

show more ...


# b51e940d 11-Apr-2022 Hannah Shi

test: separate some static variables by test cases (#3567)


Revision tags: v1.41.0
# 270d0518 29-Dec-2020 tjarlama

test: move to ASSERT_NULL and ASSERT_NOT_NULL test macros

Moving to new style test macros will make debugging easier in case
of test failure and improve redability. This commit will repl

test: move to ASSERT_NULL and ASSERT_NOT_NULL test macros

Moving to new style test macros will make debugging easier in case
of test failure and improve redability. This commit will replace all
ASSERT macros matching the statement:
`ASSERT(identifier (== or !=) value);`
to:
`ASSERT_(NOT_)NULL(identifier);`

Refs: https://github.com/libuv/libuv/issues/2974
PR-URL: https://github.com/libuv/libuv/pull/3081
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>

show more ...


Revision tags: v1.40.0, v1.39.0, v1.38.1, v1.38.0, v1.37.0, v1.36.0, v1.35.0, v1.34.2, v1.34.1, v1.34.0, v1.33.1, v1.33.0, v1.32.0, v1.31.0, v1.30.1, v1.30.0, v1.29.1, v1.29.0, v1.28.0, v1.27.0, v1.26.0, v1.25.0, v1.24.1, v1.24.0, v1.23.2, v1.23.1, v1.23.0, v1.22.0, v1.21.0, v1.20.3, v1.20.2, v1.20.1, v1.20.0, v1.19.2, v1.19.1, v1.19.0, v1.18.0, v1.17.0, v1.16.1, v1.16.0, v1.15.0, v1.14.1, v1.14.0, v1.13.1, v1.13.0, v1.12.0
# 2a1b880f 16-Mar-2017 Ulrik Strid

unix,win: add uv_timer_get_due_in()

Co-authored-by: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Refs: https://github.com/nodejs/node-report/pull/73
Refs: https://github.com/libuv/

unix,win: add uv_timer_get_due_in()

Co-authored-by: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Refs: https://github.com/nodejs/node-report/pull/73
Refs: https://github.com/libuv/libuv/pull/1255
Fixes: https://github.com/libuv/libuv/issues/2950
PR-URL: https://github.com/libuv/libuv/pull/2951
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>

show more ...


# 2ee2d462 13-Aug-2019 seny

timer: fix uv_timer_start on closing timer

Return `UV_EINVAL` in this case.

Fixes: https://github.com/libuv/libuv/issues/2416
PR-URL: https://github.com/libuv/libuv/pull/2424

timer: fix uv_timer_start on closing timer

Return `UV_EINVAL` in this case.

Fixes: https://github.com/libuv/libuv/issues/2416
PR-URL: https://github.com/libuv/libuv/pull/2424
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

show more ...

Revision tags: v1.11.0, v1.10.2, v1.10.1, v1.10.0, v0.10.37, v1.9.1, v1.9.0, v1.8.0, v1.7.5, v1.7.4, v1.7.3, v1.7.2, v1.7.1, v1.7.0, v1.6.1, v1.6.0
# 427e4c9d 02-Jun-2015 João Reis

win: wait for full timeout duration

uv_poll should wait for at least the full timeout duration when there
is nothing else to do. This was not happening because
GetQueuedCompletionSta

win: wait for full timeout duration

uv_poll should wait for at least the full timeout duration when there
is nothing else to do. This was not happening because
GetQueuedCompletionStatus can occasionally return up to 15ms early.

The added test reproduces https://github.com/joyent/node/blob/d13d7f74d794340ac5e126cfb4ce507fe0f803d5/test/simple/test-timers-first-fire.js
on libuv, being flaky before this fix.

Fixes: https://github.com/joyent/node/issues/8960
PR-URL: https://github.com/libuv/libuv/pull/385
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
Reviewed-by: Bert Belder <bertbelder@gmail.com>

show more ...

Revision tags: v1.5.0, v0.10.36, v1.4.2, v0.10.35, v1.4.1, v0.10.34, v1.4.0, v1.3.0, v0.10.33, v1.2.1, v1.2.0, v0.10.32, v1.1.0, v0.10.31, v1.0.2, v0.10.30, v1.0.1, v1.0.0, v0.10.29, v1.0.0-rc2, v1.0.0-rc1
# 7ff52b83 04-Sep-2014 Saúl Ibarra Corretgé

unix, windows: don't allow a NULL callback on timers

Revision tags: v0.11.29, v0.11.28, v0.11.27, v0.10.28, v0.11.26, v0.10.27, v0.11.25, v0.11.24, v0.11.23, v0.10.26, v0.11.22
# db2a9072 10-Mar-2014 Saúl Ibarra Corretgé

unix, windows: removed unused status parameter

async, timer, prepare, idle and check handles don't need the status
parameter.

Revision tags: v0.11.21, v0.11.20, v0.10.25, v0.11.19, v0.10.24, v0.11.18, v0.10.23, v0.10.22, v0.11.17, v0.10.21, v0.11.16, v0.10.20, v0.11.15, v0.10.19, v0.11.14, v0.10.18, v0.10.17
# d7115f06 12-Sep-2013 Ben Noordhuis

unix, windows: make uv_is_*() always return 0 or 1

Ensure that the following API functions always return either 0 or 1:

* uv_is_active()
* uv_is_closing()
* uv_is_read

unix, windows: make uv_is_*() always return 0 or 1

Ensure that the following API functions always return either 0 or 1:

* uv_is_active()
* uv_is_closing()
* uv_is_readable()
* uv_is_writable()

show more ...

Revision tags: v0.10.16, v0.11.13, v0.11.12, v0.11.11, v0.11.10, v0.10.15, v0.11.9, v0.10.14, v0.11.8, v0.11.7, v0.10.13, v0.11.6, v0.10.12, v0.11.5, v0.10.11, v0.10.10, v0.11.4, v0.10.9
# f6d8ba3c 25-May-2013 Ben Noordhuis

unix, windows: run expired timers in run-once mode

Before this commit, creating an event loop, starting a timer and
calling uv_run(UV_RUN_ONCE) blocked in uv_run() until the timer
ex

unix, windows: run expired timers in run-once mode

Before this commit, creating an event loop, starting a timer and
calling uv_run(UV_RUN_ONCE) blocked in uv_run() until the timer
expired - but didn't actually run the timer.

show more ...

Revision tags: v0.10.8, v0.11.3, v0.10.7, v0.10.6, v0.11.2, v0.10.5, v0.10.4, v0.11.1, node-v0.11.0, v0.10.2
# 9b619396 21-Mar-2013 Ben Noordhuis

unix: make timers handle large timeouts

This commit fixes two closely related integer overflow bugs:

* Timers with a timeout > INT_MAX cause uv__next_timeout() to return
a neg

unix: make timers handle large timeouts

This commit fixes two closely related integer overflow bugs:

* Timers with a timeout > INT_MAX cause uv__next_timeout() to return
a negative value.

* Timers with very large timeouts (close or equal to ULLONG_MAX) run on
the next tick.

In both cases, clamp the values to prevent the overflow from happening.

Fixes joyent/node#5101.

show more ...

Revision tags: node-v0.7.3, node-v0.7.7, node-v0.7.5, node-v0.5.3, node-v0.10.1, node-v0.10.0, node-v0.9.12
# 77cb29a7 05-Mar-2013 Brian Mazza

unix: make uv_timer_init() initialize repeat

uv_timer_get_repeat() should return 0 for timers that haven't been
started.

Revision tags: node-v0.9.11, node-v0.8.21
# d6bfedb8 20-Feb-2013 Ben Noordhuis

unix, windows: make uv_now() return uint64_t

Using int64_t doesn't make sense here because the return value is never
negative.

# fadfeaf6 07-Feb-2013 Shigeki Ohtsu

unix,windows: fix timer order in case of same timeout

Compare start_id of timer handles when they have the same timeout.
start_id is allocated with loop->timer_counter in uv_timer_start.

Revision tags: node-v0.8.19, node-v0.9.10, node-v0.9.7
# 4ba03ddd 16-Jan-2013 Ben Noordhuis

unix, windows: rename uv_run2 to uv_run

This changes the prototype of uv_run() from:

int uv_run(uv_loop_t* loop);

To:

int uv_run(uv_loop_t* loop, uv_run_mode m

unix, windows: rename uv_run2 to uv_run

This changes the prototype of uv_run() from:

int uv_run(uv_loop_t* loop);

To:

int uv_run(uv_loop_t* loop, uv_run_mode mode);

Where `mode` is UV_RUN_DEFAULT, UV_RUN_ONCE or UV_RUN_NOWAIT.

Fixes #683.

show more ...

Revision tags: node-v0.9.6, node-v0.9.4, node-v0.8.17
# 894a8523 02-Nov-2012 Ben Noordhuis

test: fix signed/unsigned comparison warnings

Revision tags: node-v0.8.15, node-v0.9.3
# 47eb0349 16-Oct-2012 Bert Belder

test: move loop cleanup code to the individual tests

Revision tags: node-v0.8.12, node-v0.8.10, node-v0.9.2, node-v0.8.9, node-v0.9.1, node-v0.8.8, node-v0.8.7, node-v0.8.6, node-v0.8.5, node-v0.6.21, node-v0.8.3, node-v0.9.0, node-v0.8.2, node-v0.8.1, node-v0.8.0, node-v0.7.12, node-v0.7.11, node-v0.7.10, node-v0.6.19, node-v0.7.9
# 028fef84 26-May-2012 Ben Noordhuis

unix: update timer if already active

uv_timer_start() no longer returns an error when the timer is already active,
now it just updates the timer. Consistent with the uv-win implementatio

unix: update timer if already active

uv_timer_start() no longer returns an error when the timer is already active,
now it just updates the timer. Consistent with the uv-win implementation.

Fixes #425.

show more ...

# ae9d4c2a 25-May-2012 Ben Noordhuis

test: add 'is active?' checks to test-timer.c

# 9efa8b35 17-May-2012 Ben Noordhuis

unix, windows: rework reference counting scheme

This commit changes how the event loop determines if it needs to stay alive.

Previously, an internal counter was increased whenever a

unix, windows: rework reference counting scheme

This commit changes how the event loop determines if it needs to stay alive.

Previously, an internal counter was increased whenever a handle got created
and decreased again when the handle was closed.

While conceptually simple, it turned out hard to work with: you often want
to keep the event loop alive only if the handle is actually doing something.
Stopped or inactive handles were a frequent source of hanging event loops.

That's why this commit changes the reference counting scheme to a model where
a handle only references the event loop when it's active. 'Active' means
different things for different handle types, e.g.:

* timers: ticking
* sockets: reading, writing or listening
* processes: always active (for now, subject to change)
* idle, check, prepare: only active when started

This commit also changes how the uv_ref() and uv_unref() functions work: they
now operate on the level of individual handles, not the whole event loop.

The Windows implementation was done by Bert Belder.

show more ...

Revision tags: node-v0.6.18, node-v0.6.16, node-v0.6.17, node-v0.7.8, node-v0.6.15, node-v0.6.14, node-v0.6.13, node-v0.7.6, node-v0.6.12, node-v0.6.11, node-v0.7.4, node-v0.6.10, node-v0.7.2, node-v0.6.9, node-v0.7.1
# dd7e6f01 18-Jan-2012 Ben Noordhuis

test: don't use malloc/free in test-timer

12