[tor-commits] [tor/master] New testing-only tor_sleep_msec function
nickm at torproject.org
nickm at torproject.org
Sat Jun 14 15:47:50 UTC 2014
commit e2e588175eac4ebe8fb47c0540954d0f78525cce
Author: Nick Mathewson <nickm at torproject.org>
Date: Wed Apr 30 12:48:46 2014 -0400
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.
---
configure.ac | 2 ++
src/common/compat.c | 26 ++++++++++++++++++++++++++
src/common/compat.h | 4 ++++
3 files changed, 32 insertions(+)
diff --git a/configure.ac b/configure.ac
index c0c8187..c662a9f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -355,6 +355,7 @@ AC_CHECK_FUNCS(
sysconf \
sysctl \
uname \
+ usleep \
vasprintf \
_vscprintf
)
@@ -885,6 +886,7 @@ AC_CHECK_HEADERS(
sys/param.h \
sys/prctl.h \
sys/resource.h \
+ sys/select.h \
sys/socket.h \
sys/sysctl.h \
sys/syslimits.h \
diff --git a/src/common/compat.c b/src/common/compat.c
index 1ba264a..1c460b6 100644
--- a/src/common/compat.c
+++ b/src/common/compat.c
@@ -114,6 +114,12 @@
/* Only use the linux prctl; the IRIX prctl is totally different */
#include <sys/prctl.h>
#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 "util.h"
@@ -3450,3 +3456,23 @@ get_total_system_memory(size_t *mem_out)
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
+
diff --git a/src/common/compat.h b/src/common/compat.h
index 314b1aa..d723448 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -744,6 +744,10 @@ char *format_win32_error(DWORD err);
#endif
+#ifdef TOR_UNIT_TESTS
+void tor_sleep_msec(int msec);
+#endif
+
#ifdef COMPAT_PRIVATE
#if !defined(HAVE_SOCKETPAIR) || defined(_WIN32) || defined(TOR_UNIT_TESTS)
#define NEED_ERSATZ_SOCKETPAIR
More information about the tor-commits
mailing list