summaryrefslogtreecommitdiffstats
path: root/core/tests
diff options
context:
space:
mode:
authorErik Kline <ek@google.com>2015-05-15 18:49:17 +0900
committerErik Kline <ek@google.com>2015-05-20 12:08:55 +0900
commitabd3142dcae02026689b939c363329b822b7cc0a (patch)
treef880c9210be6b53d028608e82562fdda3e0efe99 /core/tests
parentf357c96273ad8c0f7acc0e15213cced2f0b21883 (diff)
downloadframeworks_base-abd3142dcae02026689b939c363329b822b7cc0a.zip
frameworks_base-abd3142dcae02026689b939c363329b822b7cc0a.tar.gz
frameworks_base-abd3142dcae02026689b939c363329b822b7cc0a.tar.bz2
Close netlink socket when shutting down IpReachabilityMonitor
This forces the NetlinkSocketObserver thread to exit quickly, rather than lingering until the next random netlink neighbor multicast message arrives. Additionally, add a small unittest to verify that multiple calls to NetlinkSocket#close() are safe. Change-Id: I101730fad7eee72f9c6e8a7e7bd10c634f2ceab4
Diffstat (limited to 'core/tests')
-rw-r--r--core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java b/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java
index b32de78..c599fe3 100644
--- a/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java
+++ b/core/tests/coretests/src/android/net/netlink/NetlinkSocketTest.java
@@ -90,4 +90,27 @@ public class NetlinkSocketTest extends TestCase {
s.close();
}
+
+ public void testRepeatedCloseCallsAreQuiet() throws Exception {
+ // Create a working NetlinkSocket.
+ NetlinkSocket s = new NetlinkSocket(OsConstants.NETLINK_ROUTE);
+ assertNotNull(s);
+ s.connectToKernel();
+ NetlinkSocketAddress localAddr = s.getLocalAddress();
+ assertNotNull(localAddr);
+ assertEquals(0, localAddr.getGroupsMask());
+ assertTrue(0 != localAddr.getPortId());
+ // Close once.
+ s.close();
+ // Test that it is closed.
+ boolean expectedErrorSeen = false;
+ try {
+ localAddr = s.getLocalAddress();
+ } catch (ErrnoException e) {
+ expectedErrorSeen = true;
+ }
+ assertTrue(expectedErrorSeen);
+ // Close once more.
+ s.close();
+ }
}