Skip to content

Commit dd11bcb

Browse files
committed
update LargeMessages socket trace bpf test to reflect new limits
Signed-off-by: Benjamin Kilimnik <bkilimnik@pixielabs.ai>
1 parent 47b7bef commit dd11bcb

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/stirling/source_connectors/socket_tracer/socket_trace_bpf_test.cc

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
#include "src/common/fs/temp_file.h"
3030
#include "src/common/system/clock.h"
31+
#include "src/common/system/kernel_version.h"
3132
#include "src/common/system/tcp_socket.h"
3233
#include "src/common/system/udp_socket.h"
3334
#include "src/common/system/unix_socket.h"
@@ -490,9 +491,10 @@ TEST_F(SocketTraceBPFTest, LargeMessages) {
490491
std::string large_response =
491492
"HTTP/1.1 200 OK\r\n"
492493
"Content-Type: application/json; msg2\r\n"
493-
"Content-Length: 131072\r\n"
494+
// "Content-Length: 131072\r\n"
495+
"Content-Length: 3512768\r\n" // 21x it
494496
"\r\n";
495-
large_response += std::string(131072, '+');
497+
large_response += std::string(3512768, '+');
496498

497499
testing::SendRecvScript script({
498500
{{kHTTPReqMsg1}, {large_response}},
@@ -507,19 +509,29 @@ TEST_F(SocketTraceBPFTest, LargeMessages) {
507509
GetMutableConnTracker(system.ClientPID(), system.ClientFD()));
508510
EXPECT_EQ(client_tracker->send_data().data_buffer().Head(), kHTTPReqMsg1);
509511
std::string client_recv_data(client_tracker->recv_data().data_buffer().Head());
510-
EXPECT_THAT(client_recv_data.size(), 131153);
512+
EXPECT_THAT(client_recv_data.size(), 3512850);
511513
EXPECT_THAT(client_recv_data, HasSubstr("+++++"));
512514
EXPECT_EQ(client_recv_data.substr(client_recv_data.size() - 5, 5), "+++++");
513515

514-
// The server's send syscall transmits all 131153 bytes in one shot.
516+
// The server's send syscall transmits all 3512850 bytes in one shot.
515517
// This is over the limit that we can transmit through BPF, and so we expect
516-
// filler bytes on this side of the connection. Note that the client doesn't have the
518+
// filler bytes on this side of the connection (up to 1MB). Note that the client doesn't have the
517519
// same behavior, because the recv syscall provides the data in chunks.
518520
ASSERT_OK_AND_ASSIGN(auto* server_tracker,
519521
GetMutableConnTracker(system.ServerPID(), system.ServerFD()));
520522
EXPECT_EQ(server_tracker->recv_data().data_buffer().Head(), kHTTPReqMsg1);
521523
std::string server_send_data(server_tracker->send_data().data_buffer().Head());
522-
EXPECT_THAT(server_send_data.size(), 131153);
524+
auto kernel = system::GetCachedKernelVersion();
525+
bool kernelGreaterThan5_1 = kernel.version >= 5 || (kernel.version == 5 && kernel.major_rev >= 1);
526+
if (kernelGreaterThan5_1) {
527+
// CHUNK_LIMIT * MAX_MSG_SIZE bytes + up to 1MB filler.
528+
// Currently 84*30720 + 932,370 filler bytes = 3,512,850
529+
EXPECT_THAT(server_send_data.size(), 3512850);
530+
} else {
531+
// CHUNK_LIMIT * MAX_MSG_SIZE bytes + up to 1MB filler.
532+
// Currently 4*30720 + 1024*1024 = 1,171,456, leaving gap of 2,341,394 bytes
533+
EXPECT_THAT(server_send_data.size(), 1171456);
534+
}
523535
EXPECT_THAT(server_send_data, HasSubstr("+++++"));
524536
// We expect filling with \0 bytes.
525537
EXPECT_EQ(server_send_data.substr(server_send_data.size() - 5, 5), ConstStringView("\0\0\0\0\0"));

0 commit comments

Comments
 (0)