From 33f7c6326e4c3330a4f4c055fd431f9b72600b08 Mon Sep 17 00:00:00 2001 From: Alex Konradi Date: Tue, 4 Apr 2023 11:20:21 -0700 Subject: [PATCH] Don't require buffer size doubling on Fuchsia For packet sockets, don't expect that reading the buffer size set via SO_RCVBUF or SO_SNDBUF returns exactly twice the value that was set (assuming no min/max clipping) on Fuchsia. The doubling is a Linux-ism, and is not required by POSIX. PiperOrigin-RevId: 521816820 --- test/syscalls/linux/packet_socket_raw.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/test/syscalls/linux/packet_socket_raw.cc b/test/syscalls/linux/packet_socket_raw.cc index aaa20a039..bd2e85374 100644 --- a/test/syscalls/linux/packet_socket_raw.cc +++ b/test/syscalls/linux/packet_socket_raw.cc @@ -398,7 +398,7 @@ TEST_P(RawPacketTest, SetSocketRecvBuf) { SyscallSucceeds()); } - int quarter_sz = min + (max - min) / 4; + const int quarter_sz = min + (max - min) / 4; ASSERT_THAT( setsockopt(s_, SOL_SOCKET, SO_RCVBUF, &quarter_sz, sizeof(quarter_sz)), SyscallSucceeds()); @@ -408,8 +408,11 @@ TEST_P(RawPacketTest, SetSocketRecvBuf) { ASSERT_THAT(getsockopt(s_, SOL_SOCKET, SO_RCVBUF, &val, &val_len), SyscallSucceeds()); - quarter_sz *= 2; - ASSERT_EQ(quarter_sz, val); +#ifndef __Fuchsia__ + ASSERT_EQ(val, quarter_sz * 2); +#else + ASSERT_THAT(val, AnyOf(quarter_sz, quarter_sz * 2)); +#endif // __Fuchsia__ } // Check that setting SO_SNDBUF below min is clamped to the minimum @@ -502,7 +505,7 @@ TEST_P(RawPacketTest, SetSocketSendBuf) { SyscallSucceeds()); } - int quarter_sz = min + (max - min) / 4; + const int quarter_sz = min + (max - min) / 4; ASSERT_THAT( setsockopt(s_, SOL_SOCKET, SO_SNDBUF, &quarter_sz, sizeof(quarter_sz)), SyscallSucceeds()); @@ -512,8 +515,11 @@ TEST_P(RawPacketTest, SetSocketSendBuf) { ASSERT_THAT(getsockopt(s_, SOL_SOCKET, SO_SNDBUF, &val, &val_len), SyscallSucceeds()); - quarter_sz *= 2; - ASSERT_EQ(quarter_sz, val); +#ifndef __Fuchsia__ + ASSERT_EQ(val, quarter_sz * 2); +#else + ASSERT_THAT(val, AnyOf(quarter_sz, quarter_sz * 2)); +#endif // __Fuchsia__ } TEST_P(RawPacketTest, GetSocketError) {