Merge branch 'writing_tests'

This commit is contained in:
Nick Mathewson
2015-05-07 15:29:56 -04:00
8 changed files with 258 additions and 6 deletions
+2 -2
View File
@@ -2092,8 +2092,8 @@ tor_tls_free(tor_tls_t *tls)
* number of characters read. On failure, returns TOR_TLS_ERROR,
* TOR_TLS_CLOSE, TOR_TLS_WANTREAD, or TOR_TLS_WANTWRITE.
*/
int
tor_tls_read(tor_tls_t *tls, char *cp, size_t len)
MOCK_IMPL(int,
tor_tls_read,(tor_tls_t *tls, char *cp, size_t len))
{
int r, err;
tor_assert(tls);
+1 -1
View File
@@ -77,7 +77,7 @@ int tor_tls_verify(int severity, tor_tls_t *tls, crypto_pk_t **identity);
int tor_tls_check_lifetime(int severity,
tor_tls_t *tls, int past_tolerance,
int future_tolerance);
int tor_tls_read(tor_tls_t *tls, char *cp, size_t len);
MOCK_DECL(int, tor_tls_read, (tor_tls_t *tls, char *cp, size_t len));
int tor_tls_write(tor_tls_t *tls, const char *cp, size_t n);
int tor_tls_handshake(tor_tls_t *tls);
int tor_tls_finish_handshake(tor_tls_t *tls);
+1 -1
View File
@@ -3555,7 +3555,7 @@ finish_daemon(const char *cp)
/** Write the current process ID, followed by NL, into <b>filename</b>.
*/
void
write_pidfile(char *filename)
write_pidfile(const char *filename)
{
FILE *pidfile;
+1 -1
View File
@@ -418,7 +418,7 @@ int path_is_relative(const char *filename);
/* Process helpers */
void start_daemon(void);
void finish_daemon(const char *desired_cwd);
void write_pidfile(char *filename);
void write_pidfile(const char *filename);
/* Port forwarding */
void tor_check_port_forwarding(const char *filename,
+1 -1
View File
@@ -615,7 +615,7 @@ read_to_buf_tls(tor_tls_t *tls, size_t at_most, buf_t *buf)
if (r < 0)
return r; /* Error */
tor_assert(total_read+r < INT_MAX);
total_read += r;
total_read += r;
if ((size_t)r < readlen) /* eof, block, or no more to read. */
break;
}
+55
View File
@@ -698,6 +698,59 @@ test_buffers_zlib_fin_at_chunk_end(void *arg)
tor_free(msg);
}
const uint8_t *tls_read_ptr;
int n_remaining;
int next_reply_val[16];
static int
mock_tls_read(tor_tls_t *tls, char *cp, size_t len)
{
(void)tls;
int rv = next_reply_val[0];
if (rv > 0) {
int max = rv > (int)len ? (int)len : rv;
if (max > n_remaining)
max = n_remaining;
memcpy(cp, tls_read_ptr, max);
rv = max;
n_remaining -= max;
tls_read_ptr += max;
}
memmove(next_reply_val, next_reply_val + 1, 15*sizeof(int));
return rv;
}
static void
test_buffers_tls_read_mocked(void *arg)
{
uint8_t *mem;
buf_t *buf;
(void)arg;
mem = tor_malloc(64*1024);
crypto_rand((char*)mem, 64*1024);
tls_read_ptr = mem;
n_remaining = 64*1024;
MOCK(tor_tls_read, mock_tls_read);
buf = buf_new();
next_reply_val[0] = 1024;
tt_int_op(128, ==, read_to_buf_tls(NULL, 128, buf));
next_reply_val[0] = 5000;
next_reply_val[1] = 5000;
tt_int_op(6000, ==, read_to_buf_tls(NULL, 6000, buf));
done:
UNMOCK(tor_tls_read);
tor_free(mem);
buf_free(buf);
}
struct testcase_t buffer_tests[] = {
{ "basic", test_buffers_basic, TT_FORK, NULL, NULL },
{ "copy", test_buffer_copy, TT_FORK, NULL, NULL },
@@ -710,6 +763,8 @@ struct testcase_t buffer_tests[] = {
{ "zlib_fin_with_nil", test_buffers_zlib_fin_with_nil, TT_FORK, NULL, NULL },
{ "zlib_fin_at_chunk_end", test_buffers_zlib_fin_at_chunk_end, TT_FORK,
NULL, NULL},
{ "tls_read_mocked", test_buffers_tls_read_mocked, 0,
NULL, NULL },
END_OF_TESTCASES
};
+30
View File
@@ -4302,6 +4302,35 @@ test_util_ipv4_validation(void *arg)
return;
}
static void
test_util_writepid(void *arg)
{
(void) arg;
char *contents = NULL;
const char *fname = get_fname("tmp_pid");
unsigned long pid;
char c;
write_pidfile(fname);
contents = read_file_to_str(fname, 0, NULL);
tt_assert(contents);
int n = sscanf(contents, "%lu\n%c", &pid, &c);
tt_int_op(n, OP_EQ, 1);
tt_uint_op(pid, OP_EQ,
#ifdef _WIN32
_getpid()
#else
getpid()
#endif
);
done:
tor_free(contents);
}
struct testcase_t util_tests[] = {
UTIL_LEGACY(time),
UTIL_TEST(parse_http_time, 0),
@@ -4368,6 +4397,7 @@ struct testcase_t util_tests[] = {
UTIL_TEST(max_mem, 0),
UTIL_TEST(hostname_validation, 0),
UTIL_TEST(ipv4_validation, 0),
UTIL_TEST(writepid, 0),
END_OF_TESTCASES
};