diff -r 8827517054ec -r 0d80f8a2b29f src/server/test/testutils.c --- a/src/server/test/testutils.c Wed May 31 19:39:10 2023 +0200 +++ b/src/server/test/testutils.c Sun Jun 04 20:09:18 2023 +0200 @@ -28,6 +28,7 @@ #include #include +#include #include #include @@ -121,13 +122,32 @@ } -static ssize_t test_io_write(IOStream *io, void *buf, size_t size) { +static ssize_t test_io_write(IOStream *io, const void *buf, size_t size) { TestIOStream *st = (TestIOStream*)io; + if(size > st->max_write) size = st->max_write; return cxBufferWrite(buf, 1, size, st->buf); } static ssize_t test_io_writev(IOStream *io, struct iovec *iovec, int iovctn) { - return -1; + TestIOStream *st = (TestIOStream*)io; + ssize_t wv = 0; + for(int i=0;imax_write - wv; + size_t len = iovec[i].iov_len; + if(len > available) { + len = available; + } + + ssize_t w = test_io_write(io, iovec[i].iov_base, len); + if(w <= 0) { + break; + } + wv += w; + if(wv >= st->max_write) { + break; + } + } + return wv; } static ssize_t test_io_read(IOStream *io, void *buf, size_t size) { @@ -157,6 +177,7 @@ flags = CX_BUFFER_AUTO_EXTEND|CX_BUFFER_FREE_CONTENTS; } stream->buf = malloc(sizeof(CxBuffer)); + stream->max_write = INT_MAX; cxBufferInit(stream->buf, NULL, size, cxDefaultAllocator, flags); stream->io.st.write = test_io_write;