Merge "Fix UDP GRO/GSO tests."
diff --git a/luni/src/test/java/libcore/android/system/OsTest.java b/luni/src/test/java/libcore/android/system/OsTest.java
index 9cc25e9..def9c5d 100644
--- a/luni/src/test/java/libcore/android/system/OsTest.java
+++ b/luni/src/test/java/libcore/android/system/OsTest.java
@@ -1046,37 +1046,37 @@
}
}
- private double getKernelVersion() {
+ private int[] getKernelVersion() throws Exception {
// Example:
// 4.9.29-g958411d --> 4.9
String release = Os.uname().release;
Matcher m = Pattern.compile("^(\\d+)\\.(\\d+)").matcher(release);
assertTrue("No pattern in release string: " + release, m.find());
- double version = Double.parseDouble(m.group(1) + "." + m.group(2));
- return version;
+ return new int[]{ Integer.parseInt(m.group(1)), Integer.parseInt(m.group(2)) };
+ }
+
+ private boolean kernelIsAtLeast(int major, int minor) throws Exception {
+ int[] version = getKernelVersion();
+ return version[0] > major || (version[0] == major && version[1] >= minor);
}
public void test_socket_udpGro_setAndGet() throws Exception {
// UDP GRO not required to be enabled on kernels prior to 5.4
- double kernelVersion = getKernelVersion();
- if (kernelVersion < 5.4) return;
+ if (!kernelIsAtLeast(5, 4)) return;
final FileDescriptor fd = Os.socket(AF_INET6, SOCK_DGRAM, 0);
try {
- assertEquals(0, Os.getsockoptInt(fd, IPPROTO_UDP, UDP_GRO));
-
final int setValue = 1;
Os.setsockoptInt(fd, IPPROTO_UDP, UDP_GRO, setValue);
- assertEquals(setValue, Os.getsockoptInt(fd, IPPROTO_UDP, UDP_GRO));
+ // getsockopt(IPPROTO_UDP, UDP_GRO) is not implemented.
} finally {
Os.close(fd);
}
}
- public void test_socket_udpGso_setAndGet() throws Exception {
+ public void test_socket_udpGso_set() throws Exception {
// UDP GSO not required to be enabled on kernels prior to 4.19.
- double kernelVersion = getKernelVersion();
- if (kernelVersion < 4.19) return;
+ if (!kernelIsAtLeast(4, 19)) return;
final FileDescriptor fd = Os.socket(AF_INET, SOCK_DGRAM, 0);
try {