mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
New testing-only tor_sleep_msec function
In the unit tests I want to loop with a delay, but I want less than a 1 second delay. This, sadly, requires compatibility code.
This commit is contained in:
parent
34f8723dc7
commit
e2e588175e
@ -355,6 +355,7 @@ AC_CHECK_FUNCS(
|
|||||||
sysconf \
|
sysconf \
|
||||||
sysctl \
|
sysctl \
|
||||||
uname \
|
uname \
|
||||||
|
usleep \
|
||||||
vasprintf \
|
vasprintf \
|
||||||
_vscprintf
|
_vscprintf
|
||||||
)
|
)
|
||||||
@ -885,6 +886,7 @@ AC_CHECK_HEADERS(
|
|||||||
sys/param.h \
|
sys/param.h \
|
||||||
sys/prctl.h \
|
sys/prctl.h \
|
||||||
sys/resource.h \
|
sys/resource.h \
|
||||||
|
sys/select.h \
|
||||||
sys/socket.h \
|
sys/socket.h \
|
||||||
sys/sysctl.h \
|
sys/sysctl.h \
|
||||||
sys/syslimits.h \
|
sys/syslimits.h \
|
||||||
|
@ -114,6 +114,12 @@
|
|||||||
/* Only use the linux prctl; the IRIX prctl is totally different */
|
/* Only use the linux prctl; the IRIX prctl is totally different */
|
||||||
#include <sys/prctl.h>
|
#include <sys/prctl.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef TOR_UNIT_TESTS
|
||||||
|
#if !defined(HAVE_USLEEP) && defined(HAVE_SYS_SELECT_H)
|
||||||
|
/* as fallback implementation for tor_sleep_msec */
|
||||||
|
#include <sys/select.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "torlog.h"
|
#include "torlog.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
@ -3450,3 +3456,23 @@ get_total_system_memory(size_t *mem_out)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TOR_UNIT_TESTS
|
||||||
|
/** Delay for <b>msec</b> milliseconds. Only used in tests. */
|
||||||
|
void
|
||||||
|
tor_sleep_msec(int msec)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
Sleep(msec);
|
||||||
|
#elif defined(HAVE_USLEEP)
|
||||||
|
sleep(msec / 1000);
|
||||||
|
/* Some usleep()s hate sleeping more than 1 sec */
|
||||||
|
usleep((msec % 1000) * 1000);
|
||||||
|
#elif defined(HAVE_SYS_SELECT_H)
|
||||||
|
struct timeval tv = { msec / 1000, (msec % 1000) * 1000};
|
||||||
|
select(0, NULL, NULL, NULL, &tv);
|
||||||
|
#else
|
||||||
|
sleep(CEIL_DIV(msec, 1000));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -744,6 +744,10 @@ char *format_win32_error(DWORD err);
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef TOR_UNIT_TESTS
|
||||||
|
void tor_sleep_msec(int msec);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef COMPAT_PRIVATE
|
#ifdef COMPAT_PRIVATE
|
||||||
#if !defined(HAVE_SOCKETPAIR) || defined(_WIN32) || defined(TOR_UNIT_TESTS)
|
#if !defined(HAVE_SOCKETPAIR) || defined(_WIN32) || defined(TOR_UNIT_TESTS)
|
||||||
#define NEED_ERSATZ_SOCKETPAIR
|
#define NEED_ERSATZ_SOCKETPAIR
|
||||||
|
Loading…
Reference in New Issue
Block a user