summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2008-08-03 19:17:23 +0000
committerjoe <joe@61a7d7f5-40b7-0310-9c16-bb0ea8cb1845>2008-08-03 19:17:23 +0000
commit32c9a1e7339fb6829e1e00cb0546c712df0b621f (patch)
tree81fa77db3e0ae483c1cdfbc64e21a23d36e3348d /test
parenta396147f4d2dd871ea8c1dd875ba397df9974a76 (diff)
downloadneon-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.c38
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),