diff options
Diffstat (limited to 'tools/testing/selftests/net/tls.c')
| -rw-r--r-- | tools/testing/selftests/net/tls.c | 57 | 
1 files changed, 40 insertions, 17 deletions
diff --git a/tools/testing/selftests/net/tls.c b/tools/testing/selftests/net/tls.c index 8fdfeafaf8c0..fac68d710f35 100644 --- a/tools/testing/selftests/net/tls.c +++ b/tools/testing/selftests/net/tls.c @@ -121,11 +121,11 @@ TEST_F(tls, send_then_sendfile)  	buf = (char *)malloc(st.st_size);  	EXPECT_EQ(send(self->fd, test_str, to_send, 0), to_send); -	EXPECT_EQ(recv(self->cfd, recv_buf, to_send, 0), to_send); +	EXPECT_EQ(recv(self->cfd, recv_buf, to_send, MSG_WAITALL), to_send);  	EXPECT_EQ(memcmp(test_str, recv_buf, to_send), 0);  	EXPECT_GE(sendfile(self->fd, filefd, 0, st.st_size), 0); -	EXPECT_EQ(recv(self->cfd, buf, st.st_size, 0), st.st_size); +	EXPECT_EQ(recv(self->cfd, buf, st.st_size, MSG_WAITALL), st.st_size);  }  TEST_F(tls, recv_max) @@ -160,7 +160,7 @@ TEST_F(tls, msg_more)  	EXPECT_EQ(send(self->fd, test_str, send_len, MSG_MORE), send_len);  	EXPECT_EQ(recv(self->cfd, buf, send_len, MSG_DONTWAIT), -1);  	EXPECT_EQ(send(self->fd, test_str, send_len, 0), send_len); -	EXPECT_EQ(recv(self->cfd, buf, send_len * 2, MSG_DONTWAIT), +	EXPECT_EQ(recv(self->cfd, buf, send_len * 2, MSG_WAITALL),  		  send_len * 2);  	EXPECT_EQ(memcmp(buf, test_str, send_len), 0);  } @@ -180,7 +180,7 @@ TEST_F(tls, sendmsg_single)  	msg.msg_iov = &vec;  	msg.msg_iovlen = 1;  	EXPECT_EQ(sendmsg(self->fd, &msg, 0), send_len); -	EXPECT_EQ(recv(self->cfd, buf, send_len, 0), send_len); +	EXPECT_EQ(recv(self->cfd, buf, send_len, MSG_WAITALL), send_len);  	EXPECT_EQ(memcmp(buf, test_str, send_len), 0);  } @@ -288,7 +288,7 @@ TEST_F(tls, splice_from_pipe)  	ASSERT_GE(pipe(p), 0);  	EXPECT_GE(write(p[1], mem_send, send_len), 0);  	EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), 0); -	EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0); +	EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);  	EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);  } @@ -306,7 +306,7 @@ TEST_F(tls, splice_from_pipe2)  	EXPECT_GE(splice(p[0], NULL, self->fd, NULL, 8000, 0), 0);  	EXPECT_GE(write(p2[1], mem_send + 8000, 8000), 0);  	EXPECT_GE(splice(p2[0], NULL, self->fd, NULL, 8000, 0), 0); -	EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0); +	EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);  	EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);  } @@ -322,13 +322,13 @@ TEST_F(tls, send_and_splice)  	ASSERT_GE(pipe(p), 0);  	EXPECT_EQ(send(self->fd, test_str, send_len2, 0), send_len2); -	EXPECT_NE(recv(self->cfd, buf, send_len2, 0), -1); +	EXPECT_EQ(recv(self->cfd, buf, send_len2, MSG_WAITALL), send_len2);  	EXPECT_EQ(memcmp(test_str, buf, send_len2), 0);  	EXPECT_GE(write(p[1], mem_send, send_len), send_len);  	EXPECT_GE(splice(p[0], NULL, self->fd, NULL, send_len, 0), send_len); -	EXPECT_GE(recv(self->cfd, mem_recv, send_len, 0), 0); +	EXPECT_EQ(recv(self->cfd, mem_recv, send_len, MSG_WAITALL), send_len);  	EXPECT_EQ(memcmp(mem_send, mem_recv, send_len), 0);  } @@ -436,7 +436,7 @@ TEST_F(tls, multiple_send_single_recv)  	EXPECT_GE(send(self->fd, send_mem, send_len, 0), 0);  	EXPECT_GE(send(self->fd, send_mem, send_len, 0), 0);  	memset(recv_mem, 0, total_len); -	EXPECT_EQ(recv(self->cfd, recv_mem, total_len, 0), total_len); +	EXPECT_EQ(recv(self->cfd, recv_mem, total_len, MSG_WAITALL), total_len);  	EXPECT_EQ(memcmp(send_mem, recv_mem, send_len), 0);  	EXPECT_EQ(memcmp(send_mem, recv_mem + send_len, send_len), 0); @@ -516,17 +516,17 @@ TEST_F(tls, recv_peek_multiple_records)  	len = strlen(test_str_second) + 1;  	EXPECT_EQ(send(self->fd, test_str_second, len, 0), len); -	len = sizeof(buf); +	len = strlen(test_str_first);  	memset(buf, 0, len); -	EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1); +	EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len);  	/* MSG_PEEK can only peek into the current record. */ -	len = strlen(test_str_first) + 1; +	len = strlen(test_str_first);  	EXPECT_EQ(memcmp(test_str_first, buf, len), 0); -	len = sizeof(buf); +	len = strlen(test_str) + 1;  	memset(buf, 0, len); -	EXPECT_NE(recv(self->cfd, buf, len, 0), -1); +	EXPECT_EQ(recv(self->cfd, buf, len, MSG_WAITALL), len);  	/* Non-MSG_PEEK will advance strparser (and therefore record)  	 * however. @@ -543,6 +543,28 @@ TEST_F(tls, recv_peek_multiple_records)  	len = strlen(test_str_second) + 1;  	EXPECT_EQ(send(self->fd, test_str_second, len, 0), len); +	len = strlen(test_str) + 1; +	memset(buf, 0, len); +	EXPECT_EQ(recv(self->cfd, buf, len, MSG_PEEK | MSG_WAITALL), len); + +	len = strlen(test_str) + 1; +	EXPECT_EQ(memcmp(test_str, buf, len), 0); +} + +TEST_F(tls, recv_peek_large_buf_mult_recs) +{ +	char const *test_str = "test_read_peek_mult_recs"; +	char const *test_str_first = "test_read_peek"; +	char const *test_str_second = "_mult_recs"; +	int len; +	char buf[64]; + +	len = strlen(test_str_first); +	EXPECT_EQ(send(self->fd, test_str_first, len, 0), len); + +	len = strlen(test_str_second) + 1; +	EXPECT_EQ(send(self->fd, test_str_second, len, 0), len); +  	len = sizeof(buf);  	memset(buf, 0, len);  	EXPECT_NE(recv(self->cfd, buf, len, MSG_PEEK), -1); @@ -551,6 +573,7 @@ TEST_F(tls, recv_peek_multiple_records)  	EXPECT_EQ(memcmp(test_str, buf, len), 0);  } +  TEST_F(tls, pollin)  {  	char const *test_str = "test_poll"; @@ -564,7 +587,7 @@ TEST_F(tls, pollin)  	EXPECT_EQ(poll(&fd, 1, 20), 1);  	EXPECT_EQ(fd.revents & POLLIN, 1); -	EXPECT_EQ(recv(self->cfd, buf, send_len, 0), send_len); +	EXPECT_EQ(recv(self->cfd, buf, send_len, MSG_WAITALL), send_len);  	/* Test timing out */  	EXPECT_EQ(poll(&fd, 1, 20), 0);  } @@ -582,7 +605,7 @@ TEST_F(tls, poll_wait)  	/* Set timeout to inf. secs */  	EXPECT_EQ(poll(&fd, 1, -1), 1);  	EXPECT_EQ(fd.revents & POLLIN, 1); -	EXPECT_EQ(recv(self->cfd, recv_mem, send_len, 0), send_len); +	EXPECT_EQ(recv(self->cfd, recv_mem, send_len, MSG_WAITALL), send_len);  }  TEST_F(tls, blocking) @@ -728,7 +751,7 @@ TEST_F(tls, control_msg)  	EXPECT_EQ(recv(self->cfd, buf, send_len, 0), -1);  	vec.iov_base = buf; -	EXPECT_EQ(recvmsg(self->cfd, &msg, 0), send_len); +	EXPECT_EQ(recvmsg(self->cfd, &msg, MSG_WAITALL), send_len);  	cmsg = CMSG_FIRSTHDR(&msg);  	EXPECT_NE(cmsg, NULL);  	EXPECT_EQ(cmsg->cmsg_level, SOL_TLS);  |