[tor-commits] [tor/master] Merge branch '6044_nm_squashed'
nickm at torproject.org
nickm at torproject.org
Mon Sep 17 14:05:48 UTC 2012
commit c3f526ed64012f64589b926082ff5e542ec7d18d
Merge: 2939cc3 faab788
Author: Nick Mathewson <nickm at torproject.org>
Date: Mon Sep 17 10:03:11 2012 -0400
Merge branch '6044_nm_squashed'
changes/6044 | 5 +++
src/common/util.c | 60 ++++++++++++++++++++++++++++++++++++++++++
src/common/util.h | 3 ++
src/test/test_util.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 139 insertions(+), 0 deletions(-)
diff --cc src/test/test_util.c
index 2c65903,1734108..f615ead
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@@ -18,20 -18,75 +18,88 @@@
#include <tchar.h>
#endif
+/* XXXX this is a minimal wrapper to make the unit tests compile with the
+ * changed tor_timegm interface. */
+static time_t
+tor_timegm_wrapper(const struct tm *tm)
+{
+ time_t t;
+ if (tor_timegm(tm, &t) < 0)
+ return -1;
+ return t;
+}
+
+#define tor_timegm tor_timegm_wrapper
+
static void
+ test_util_read_until_eof_impl(const char *fname, size_t file_len,
+ size_t read_limit)
+ {
+ char *fifo_name = NULL;
+ char *test_str = NULL;
+ char *str = NULL;
+ size_t sz = 9999999;
+ int fd = -1;
+ int r;
+
+ fifo_name = tor_strdup(get_fname(fname));
+ test_str = tor_malloc(file_len);
+ crypto_rand(test_str, file_len);
+
+ r = write_bytes_to_file(fifo_name, test_str, file_len, 1);
+ tt_int_op(r, ==, 0);
+
+ fd = open(fifo_name, O_RDONLY|O_BINARY);
+ tt_int_op(fd, >=, 0);
+ str = read_file_to_str_until_eof(fd, read_limit, &sz);
+ close(fd);
+ tt_assert(str != NULL);
+
+ if (read_limit < file_len)
+ tt_int_op(sz, ==, read_limit);
+ else
+ tt_int_op(sz, ==, file_len);
+
+ test_mem_op(test_str, ==, str, sz);
+ test_assert(str[sz] == '\0');
+
+ done:
+ unlink(fifo_name);
+ tor_free(fifo_name);
+ tor_free(test_str);
+ tor_free(str);
+ }
+
+ static void
+ test_util_read_file_eof_tiny_limit(void *arg)
+ {
+ (void)arg;
+ // purposely set limit shorter than what we wrote to the FIFO to
+ // test the maximum, and that it puts the NUL in the right spot
+
+ test_util_read_until_eof_impl("tor_test_fifo_tiny", 5, 4);
+ }
+
+ static void
+ test_util_read_file_eof_two_loops(void *arg)
+ {
+ (void)arg;
+ // write more than 1024 bytes to the FIFO to test two passes through
+ // the loop in the method; if the re-alloc size is changed this
+ // should be updated as well.
+
+ test_util_read_until_eof_impl("tor_test_fifo_2k", 2048, 10000);
+ }
+
+ static void
+ test_util_read_file_eof_zero_bytes(void *arg)
+ {
+ (void)arg;
+ // zero-byte fifo
+ test_util_read_until_eof_impl("tor_test_fifo_empty", 0, 10000);
+ }
+
+ static void
test_util_time(void)
{
struct timeval start, end;
More information about the tor-commits
mailing list