From f78548d22255e0007e673b7e2a227c4977a99d7c Mon Sep 17 00:00:00 2001 From: Hugo Benichi Date: Mon, 29 Jan 2018 14:00:44 +0900 Subject: [PATCH] Prevent crash in NetworkManagementServiceTest#shutdown() The shutdown method in NetworkManagementServiceTest was trying to close the local socket on the test side, causing the NativeDaemonConnector internal to NetworkManagementService to sometime crash due to the output stream on NetworkManagementService side to throw on pending reads. The correct fix would be to shutdown the NativeDaemonConnector inside NetworkManagementService and implement NetworkManagementService's shutdown method, however there is no way to cleanly close a NativeDaemonConnector. Instead, this patch doesn't do any cleanup of the listening socket, the test local socket, and its output stream. These objects' resources get eventually collected by the system when the test process exits. Test: runtest frameworks-net Change-Id: I72c9aa43403754b55e9d23bf4f3ba8b7b4a3e10a --- .../com/android/server/NetworkManagementServiceTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/net/java/com/android/server/NetworkManagementServiceTest.java b/tests/net/java/com/android/server/NetworkManagementServiceTest.java index 2ac73dbd4f..56a075be47 100644 --- a/tests/net/java/com/android/server/NetworkManagementServiceTest.java +++ b/tests/net/java/com/android/server/NetworkManagementServiceTest.java @@ -99,8 +99,12 @@ public class NetworkManagementServiceTest { @After public void tearDown() throws Exception { - if (mSocket != null) mSocket.close(); - if (mServerSocket != null) mServerSocket.close(); + mNMService.shutdown(); + // Once NetworkManagementService#shutdown() actually does something and shutdowns + // the underlying NativeDaemonConnector, the block below should be uncommented. + // if (mOutputStream != null) mOutputStream.close(); + // if (mSocket != null) mSocket.close(); + // if (mServerSocket != null) mServerSocket.close(); } /**