From 0cd8f7f44d88a9972c6c5ee88c976a84c1f0e5bd Mon Sep 17 00:00:00 2001 From: Yang Sun Date: Sun, 28 Jan 2024 17:37:49 +0800 Subject: [PATCH] NetworkUtilsTest.testSetSockOptBytes Use sec but not usec in the test. setsockopt TimeVal may lose precision on usec when kernel rounds up the requested value based on the HZ setting: val = tv.tv_sec * HZ + DIV_ROUND_UP((unsigned long)tv.tv_usec, USEC_PER_SEC / HZ); Bug: 321577714 Test: atest FrameworksNetTests:android.net.connectivity.android.net.NetworkUtilsTest Change-Id: I13a12319370ec2bebe0935f2acdef88bca4d963d --- .../unit/java/android/net/NetworkUtilsTest.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/tests/unit/java/android/net/NetworkUtilsTest.java b/tests/unit/java/android/net/NetworkUtilsTest.java index 2bf22112b5..e453c02ec0 100644 --- a/tests/unit/java/android/net/NetworkUtilsTest.java +++ b/tests/unit/java/android/net/NetworkUtilsTest.java @@ -159,10 +159,9 @@ public class NetworkUtilsTest { return timeval; } - @Test - public void testSetSockOptBytes() throws ErrnoException { - final FileDescriptor sock = Os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); - final StructTimeval writeTimeval = StructTimeval.fromMillis(1200); + private void testSetSockOptBytes(FileDescriptor sock, long timeValMillis) + throws ErrnoException { + final StructTimeval writeTimeval = StructTimeval.fromMillis(timeValMillis); byte[] timeval = getTimevalBytes(writeTimeval); final StructTimeval readTimeval; @@ -170,6 +169,16 @@ public class NetworkUtilsTest { readTimeval = Os.getsockoptTimeval(sock, SOL_SOCKET, SO_RCVTIMEO); assertEquals(writeTimeval, readTimeval); + } + + @Test + public void testSetSockOptBytes() throws ErrnoException { + final FileDescriptor sock = Os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); + + testSetSockOptBytes(sock, 3000); + + testSetSockOptBytes(sock, 5000); + SocketUtils.closeSocketQuietly(sock); }