From f6e186796334c8c6e10234f51a6b8cde5c7221e6 Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Thu, 17 Aug 2023 06:53:16 +0000 Subject: [PATCH] Stop the created handler threads on the tests The created handler thread will stay there for a while until all the tests are finished. This is considered as a leakage which will take the resource from the devices. In low end devices, this may possibly impact the performance. The created threads should be closed explicitly. Test: atest FrameworksNetTests Change-Id: Id5faceec341578f1c9757194c91a433fbb3f657f --- .../com/android/server/NsdServiceTest.java | 4 ++-- .../connectivity/PermissionMonitorTest.java | 9 +++++++++ .../mdns/MdnsSocketProviderTest.java | 18 ++++++++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/tests/unit/java/com/android/server/NsdServiceTest.java b/tests/unit/java/com/android/server/NsdServiceTest.java index f77807528b..c2ab45cf02 100644 --- a/tests/unit/java/com/android/server/NsdServiceTest.java +++ b/tests/unit/java/com/android/server/NsdServiceTest.java @@ -235,8 +235,8 @@ public class NsdServiceTest { @After public void tearDown() throws Exception { if (mThread != null) { - mThread.quit(); - mThread = null; + mThread.quitSafely(); + mThread.join(); } } diff --git a/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java index 8dcfffa0dd..5bde31ac19 100644 --- a/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/unit/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -100,6 +100,7 @@ import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRunner; import com.android.testutils.HandlerUtils; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -214,6 +215,14 @@ public class PermissionMonitorTest { onUserAdded(MOCK_USER1); } + @After + public void tearDown() throws Exception { + if (mHandlerThread != null) { + mHandlerThread.quitSafely(); + mHandlerThread.join(); + } + } + private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, String packageName, int uid, String... permissions) { final PackageInfo packageInfo = diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java index c0b74e16c6..1cc9985a75 100644 --- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java +++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java @@ -78,6 +78,7 @@ import com.android.testutils.DevSdkIgnoreRule; import com.android.testutils.DevSdkIgnoreRunner; import com.android.testutils.HandlerUtils; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -119,6 +120,7 @@ public class MdnsSocketProviderTest { @Mock private NetworkInterfaceWrapper mLocalOnlyIfaceWrapper; @Mock private NetworkInterfaceWrapper mTetheredIfaceWrapper; @Mock private SocketRequestMonitor mSocketRequestMonitor; + private HandlerThread mHandlerThread; private Handler mHandler; private MdnsSocketProvider mSocketProvider; private NetworkCallback mNetworkCallback; @@ -157,9 +159,9 @@ public class MdnsSocketProviderTest { eq(TETHERED_IFACE_NAME), any()); doReturn(789).when(mDeps).getNetworkInterfaceIndexByName( eq(WIFI_P2P_IFACE_NAME), any()); - final HandlerThread thread = new HandlerThread("MdnsSocketProviderTest"); - thread.start(); - mHandler = new Handler(thread.getLooper()); + mHandlerThread = new HandlerThread("MdnsSocketProviderTest"); + mHandlerThread.start(); + mHandler = new Handler(mHandlerThread.getLooper()); doReturn(mTestSocketNetLinkMonitor).when(mDeps).createSocketNetlinkMonitor(any(), any(), any()); @@ -170,10 +172,18 @@ public class MdnsSocketProviderTest { return mTestSocketNetLinkMonitor; }).when(mDeps).createSocketNetlinkMonitor(any(), any(), any()); - mSocketProvider = new MdnsSocketProvider(mContext, thread.getLooper(), mDeps, mLog, + mSocketProvider = new MdnsSocketProvider(mContext, mHandlerThread.getLooper(), mDeps, mLog, mSocketRequestMonitor); } + @After + public void tearDown() throws Exception { + if (mHandlerThread != null) { + mHandlerThread.quitSafely(); + mHandlerThread.join(); + } + } + private void runOnHandler(Runnable r) { mHandler.post(r); HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);