diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java index 31f3124e54..4219f9b387 100755 --- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java @@ -387,6 +387,7 @@ import com.android.networkstack.apishim.common.BroadcastOptionsShim; import com.android.networkstack.apishim.common.UnsupportedApiLevelException; import com.android.server.ConnectivityService.ConnectivityDiagnosticsCallbackInfo; import com.android.server.ConnectivityService.NetworkRequestInfo; +import com.android.server.ConnectivityServiceTest.ConnectivityServiceDependencies.DestroySocketsWrapper; import com.android.server.ConnectivityServiceTest.ConnectivityServiceDependencies.ReportedInterfaces; import com.android.server.connectivity.ApplicationSelfCertifiedNetworkCapabilities; import com.android.server.connectivity.AutomaticOnOffKeepaliveTracker; @@ -615,6 +616,7 @@ public class ConnectivityServiceTest { @Mock TetheringManager mTetheringManager; @Mock BroadcastOptionsShim mBroadcastOptionsShim; @Mock ActivityManager mActivityManager; + @Mock DestroySocketsWrapper mDestroySocketsWrapper; // BatteryStatsManager is final and cannot be mocked with regular mockito, so just mock the // underlying binder calls. @@ -1865,7 +1867,7 @@ public class ConnectivityServiceTest { final Context mockResContext = mock(Context.class); doReturn(mResources).when(mockResContext).getResources(); ConnectivityResources.setResourcesContextForTest(mockResContext); - mDeps = spy(new ConnectivityServiceDependencies(mockResContext)); + mDeps = new ConnectivityServiceDependencies(mockResContext); mAutoOnOffKeepaliveDependencies = new AutomaticOnOffKeepaliveTrackerDependencies(mServiceContext); mService = new ConnectivityService(mServiceContext, @@ -1928,8 +1930,7 @@ public class ConnectivityServiceTest { R.integer.config_networkWakeupPacketMark); } - // ConnectivityServiceDependencies is public to use Mockito.spy - public class ConnectivityServiceDependencies extends ConnectivityService.Dependencies { + class ConnectivityServiceDependencies extends ConnectivityService.Dependencies { final ConnectivityResources mConnRes; ConnectivityServiceDependencies(final Context mockResContext) { @@ -2168,15 +2169,24 @@ public class ConnectivityServiceTest { } } - @Override - public void destroyLiveTcpSockets(final Set> ranges, - final Set exemptUids) { - // This function is empty since the invocation of this method is verified by mocks + // Class to be mocked and used to verify destroy sockets methods call + public class DestroySocketsWrapper { + public void destroyLiveTcpSockets(final Set> ranges, + final Set exemptUids){} + public void destroyLiveTcpSocketsByOwnerUids(final Set ownerUids){} } - @Override + @Override @SuppressWarnings("DirectInvocationOnMock") + public void destroyLiveTcpSockets(final Set> ranges, + final Set exemptUids) { + // Call mocked destroyLiveTcpSockets so that test can verify this method call + mDestroySocketsWrapper.destroyLiveTcpSockets(ranges, exemptUids); + } + + @Override @SuppressWarnings("DirectInvocationOnMock") public void destroyLiveTcpSocketsByOwnerUids(final Set ownerUids) { - // This function is empty since the invocation of this method is verified by mocks + // Call mocked destroyLiveTcpSocketsByOwnerUids so that test can verify this method call + mDestroySocketsWrapper.destroyLiveTcpSocketsByOwnerUids(ownerUids); } } @@ -10276,7 +10286,7 @@ public class ConnectivityServiceTest { private void doTestSetFirewallChainEnabledCloseSocket(final int chain, final boolean isAllowList) throws Exception { - reset(mDeps); + reset(mDestroySocketsWrapper); mCm.setFirewallChainEnabled(chain, true /* enabled */); final Set uids = @@ -10284,13 +10294,13 @@ public class ConnectivityServiceTest { if (isAllowList) { final Set> range = new ArraySet<>( List.of(new Range<>(Process.FIRST_APPLICATION_UID, Integer.MAX_VALUE))); - verify(mDeps).destroyLiveTcpSockets(range, uids); + verify(mDestroySocketsWrapper).destroyLiveTcpSockets(range, uids); } else { - verify(mDeps).destroyLiveTcpSocketsByOwnerUids(uids); + verify(mDestroySocketsWrapper).destroyLiveTcpSocketsByOwnerUids(uids); } mCm.setFirewallChainEnabled(chain, false /* enabled */); - verifyNoMoreInteractions(mDeps); + verifyNoMoreInteractions(mDestroySocketsWrapper); } @Test @IgnoreUpTo(Build.VERSION_CODES.TIRAMISU) @@ -12627,11 +12637,11 @@ public class ConnectivityServiceTest { private void assertVpnUidRangesUpdated(boolean add, Set vpnRanges, int exemptUid) throws Exception { - InOrder inOrder = inOrder(mMockNetd, mDeps); + InOrder inOrder = inOrder(mMockNetd, mDestroySocketsWrapper); final Set exemptUidSet = new ArraySet<>(List.of(exemptUid, Process.VPN_UID)); - inOrder.verify(mDeps).destroyLiveTcpSockets(UidRange.toIntRanges(vpnRanges), - exemptUidSet); + inOrder.verify(mDestroySocketsWrapper).destroyLiveTcpSockets( + UidRange.toIntRanges(vpnRanges), exemptUidSet); if (add) { inOrder.verify(mMockNetd, times(1)).networkAddUidRangesParcel( @@ -12643,8 +12653,8 @@ public class ConnectivityServiceTest { toUidRangeStableParcels(vpnRanges), PREFERENCE_ORDER_VPN)); } - inOrder.verify(mDeps).destroyLiveTcpSockets(UidRange.toIntRanges(vpnRanges), - exemptUidSet); + inOrder.verify(mDestroySocketsWrapper).destroyLiveTcpSockets( + UidRange.toIntRanges(vpnRanges), exemptUidSet); } @Test @@ -17984,7 +17994,7 @@ public class ConnectivityServiceTest { final UidRange frozenUidRange = new UidRange(TEST_FROZEN_UID, TEST_FROZEN_UID); final Set ranges = Collections.singleton(frozenUidRange); - verify(mDeps).destroyLiveTcpSockets(eq(UidRange.toIntRanges(ranges)), + verify(mDestroySocketsWrapper).destroyLiveTcpSockets(eq(UidRange.toIntRanges(ranges)), eq(exemptUids)); } }