EXPECT_EQ(recv(self->cfd, buf, st.st_size, MSG_WAITALL), st.st_size);
}
-static void chunked_sendfile(struct __test_metadata *_metadata,
- struct _test_data_tls *self,
- uint16_t chunk_size,
- uint16_t extra_payload_size)
-{
- char buf[TLS_PAYLOAD_MAX_LEN];
- uint16_t test_payload_size;
- int size = 0;
- int ret;
- char filename[] = "/tmp/mytemp.XXXXXX";
- int fd = mkstemp(filename);
- off_t offset = 0;
-
- unlink(filename);
- ASSERT_GE(fd, 0);
- EXPECT_GE(chunk_size, 1);
- test_payload_size = chunk_size + extra_payload_size;
- ASSERT_GE(TLS_PAYLOAD_MAX_LEN, test_payload_size);
- memset(buf, 1, test_payload_size);
- size = write(fd, buf, test_payload_size);
- EXPECT_EQ(size, test_payload_size);
- fsync(fd);
-
- while (size > 0) {
- ret = sendfile(self->fd, fd, &offset, chunk_size);
- EXPECT_GE(ret, 0);
- size -= ret;
- }
-
- EXPECT_EQ(recv(self->cfd, buf, test_payload_size, MSG_WAITALL),
- test_payload_size);
-
- close(fd);
-}
-
-TEST_F(tls, multi_chunk_sendfile)
-{
- chunked_sendfile(_metadata, self, 4096, 4096);
- chunked_sendfile(_metadata, self, 4096, 0);
- chunked_sendfile(_metadata, self, 4096, 1);
- chunked_sendfile(_metadata, self, 4096, 2048);
- chunked_sendfile(_metadata, self, 8192, 2048);
- chunked_sendfile(_metadata, self, 4096, 8192);
- chunked_sendfile(_metadata, self, 8192, 4096);
- chunked_sendfile(_metadata, self, 12288, 1024);
- chunked_sendfile(_metadata, self, 12288, 2000);
- chunked_sendfile(_metadata, self, 15360, 100);
- chunked_sendfile(_metadata, self, 15360, 300);
- chunked_sendfile(_metadata, self, 1, 4096);
- chunked_sendfile(_metadata, self, 2048, 4096);
- chunked_sendfile(_metadata, self, 2048, 8192);
- chunked_sendfile(_metadata, self, 4096, 8192);
- chunked_sendfile(_metadata, self, 1024, 12288);
- chunked_sendfile(_metadata, self, 2000, 12288);
- chunked_sendfile(_metadata, self, 100, 15360);
- chunked_sendfile(_metadata, self, 300, 15360);
-}
-
TEST_F(tls, recv_max)
{
unsigned int send_len = TLS_PAYLOAD_MAX_LEN;