diff options
author | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2008-08-03 19:17:23 +0000 |
---|---|---|
committer | joe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845> | 2008-08-03 19:17:23 +0000 |
commit | 32c9a1e7339fb6829e1e00cb0546c712df0b621f (patch) | |
tree | 81fa77db3e0ae483c1cdfbc64e21a23d36e3348d /test | |
parent | a396147f4d2dd871ea8c1dd875ba397df9974a76 (diff) | |
download | neon-32c9a1e7339fb6829e1e00cb0546c712df0b621f.tar.gz |
* src/ne_socket.c (struct iofns): Add swritev member.
(writev_raw, writev_dummy, ne_sock_fullwritev): New functions.
* src/ne_socket.h (struct ne_iovec): New structure.
(ne_sock_fullwritev): New prototype.
* test/socket.c (full_writev, large_writev): New test case.
Submitted by: Julien.Reichel@spinetix.com, Joe
git-svn-id: http://svn.webdav.org/repos/projects/neon/trunk@1522 61a7d7f5-40b7-0310-9c16-bb0ea8cb1845
Diffstat (limited to 'test')
-rw-r--r-- | test/socket.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/socket.c b/test/socket.c index b4707f9..039a6c1 100644 --- a/test/socket.c +++ b/test/socket.c @@ -886,6 +886,43 @@ static int large_writes(void) return finish(sock, 1); } +static int full_writev(ne_socket *sock, struct ne_iovec *vec, int count) +{ + int ret = ne_sock_fullwritev(sock, vec, count); + NE_DEBUG(NE_DBG_SOCKET, "wrote vector (%d)\n", count); + ONV(ret, ("writev failed (%d): %s", ret, ne_sock_error(sock))); + return OK; +} + +#undef LARGE_SIZE +#define LARGE_SIZE (123456 * 4) + +static int large_writev(void) +{ + struct string str; + ne_socket *sock; + ssize_t n; + struct ne_iovec vec[4]; + + str.data = ne_malloc(LARGE_SIZE); + str.len = LARGE_SIZE; + + for (n = 0; n < LARGE_SIZE; n++) + str.data[n] = 41 + n % 130; + + for (n = 0; n < 4; n++) { + vec[n].base = str.data + n * LARGE_SIZE / 4; + vec[n].len = LARGE_SIZE / 4; + } + + CALL(begin(&sock, serve_expect, &str)); + CALL(full_writev(sock, vec, 4)); + + ne_free(str.data); + return finish(sock, 1); +} + + /* echoes back lines. */ static int echo_server(ne_socket *sock, void *ud) { @@ -1654,6 +1691,7 @@ ne_test tests[] = { T(line_long_chunked), T(small_writes), T(large_writes), + T(large_writev), T(echo_lines), T(blocking), T(prebind), |