1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

For #1651, fix return pnwrite of srs_write_large_iovs. 3.0.135

This commit is contained in:
winlin 2020-03-21 20:20:40 +08:00
parent 355f351435
commit f89b4b3b26
4 changed files with 66 additions and 4 deletions

View file

@ -230,8 +230,6 @@ srs_error_t MockBufferIO::writev(const iovec *iov, int iov_size, ssize_t* nwrite
total += writen;
}
sbytes += total;
if (nwrite) {
*nwrite = total;
}
@ -6412,3 +6410,65 @@ VOID TEST(ProtocolKbpsTest, RAWStatistic)
}
}
VOID TEST(ProtocolKbpsTest, WriteLargeIOVs)
{
srs_error_t err;
if (true) {
iovec iovs[1];
iovs[0].iov_base = (char*)"Hello";
iovs[0].iov_len = 5;
MockBufferIO io;
ssize_t nn = 0;
HELPER_EXPECT_SUCCESS(srs_write_large_iovs(&io, iovs, 1, &nn));
EXPECT_EQ(5, nn);
EXPECT_EQ(5, io.sbytes);
}
if (true) {
iovec iovs[1024];
int nn_iovs = (int)(sizeof(iovs)/sizeof(iovec));
for (int i = 0; i < nn_iovs; i++) {
iovs[i].iov_base = (char*)"Hello";
iovs[i].iov_len = 5;
}
MockBufferIO io;
ssize_t nn = 0;
HELPER_EXPECT_SUCCESS(srs_write_large_iovs(&io, iovs, nn_iovs, &nn));
EXPECT_EQ(5 * nn_iovs, nn);
EXPECT_EQ(5 * nn_iovs, io.sbytes);
}
if (true) {
iovec iovs[1025];
int nn_iovs = (int)(sizeof(iovs)/sizeof(iovec));
for (int i = 0; i < nn_iovs; i++) {
iovs[i].iov_base = (char*)"Hello";
iovs[i].iov_len = 5;
}
MockBufferIO io;
ssize_t nn = 0;
HELPER_EXPECT_SUCCESS(srs_write_large_iovs(&io, iovs, nn_iovs, &nn));
EXPECT_EQ(5 * nn_iovs, nn);
EXPECT_EQ(5 * nn_iovs, io.sbytes);
}
if (true) {
iovec iovs[4096];
int nn_iovs = (int)(sizeof(iovs)/sizeof(iovec));
for (int i = 0; i < nn_iovs; i++) {
iovs[i].iov_base = (char*)"Hello";
iovs[i].iov_len = 5;
}
MockBufferIO io;
ssize_t nn = 0;
HELPER_EXPECT_SUCCESS(srs_write_large_iovs(&io, iovs, nn_iovs, &nn));
EXPECT_EQ(5 * nn_iovs, nn);
EXPECT_EQ(5 * nn_iovs, io.sbytes);
}
}