From 7462f467c11536337ea6ab582001551d49f6f06a Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Mon, 23 Jan 2017 19:05:28 +0900 Subject: Add test for repeated calls to registerMobileUpstreamRequest() Test: as follows - built - flashed - booted - runtest framework-net passes Bug: 32163131 Change-Id: I6d2519601b7a9dcfda2917118214a7ceb9dbbb7f --- .../tethering/UpstreamNetworkMonitorTest.java | 49 ++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java b/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java index b8c739b64090..3ed56dff3f83 100644 --- a/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/tethering/UpstreamNetworkMonitorTest.java @@ -23,7 +23,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import android.content.Context; import android.net.ConnectivityManager; @@ -40,6 +46,7 @@ import org.junit.Before; import org.junit.runner.RunWith; import org.junit.Test; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import java.util.HashMap; @@ -64,7 +71,7 @@ public class UpstreamNetworkMonitorTest { reset(mContext); reset(mCS); - mCM = new TestConnectivityManager(mContext, mCS); + mCM = spy(new TestConnectivityManager(mContext, mCS)); mUNM = new UpstreamNetworkMonitor(null, EVENT_UNM_UPDATE, (ConnectivityManager) mCM); } @@ -125,6 +132,42 @@ public class UpstreamNetworkMonitorTest { assertTrue(mCM.hasNoCallbacks()); } + @Test + public void testDuplicateMobileRequestsIgnored() throws Exception { + assertFalse(mUNM.mobileNetworkRequested()); + assertEquals(0, mCM.requested.size()); + + mUNM.start(); + verify(mCM, Mockito.times(1)).registerNetworkCallback( + any(NetworkRequest.class), any(NetworkCallback.class)); + verify(mCM, Mockito.times(1)).registerDefaultNetworkCallback(any(NetworkCallback.class)); + assertFalse(mUNM.mobileNetworkRequested()); + assertEquals(0, mCM.requested.size()); + + mUNM.updateMobileRequiresDun(true); + mUNM.registerMobileNetworkRequest(); + verify(mCM, Mockito.times(1)).requestNetwork( + any(NetworkRequest.class), any(NetworkCallback.class), anyInt(), anyInt()); + + assertTrue(mUNM.mobileNetworkRequested()); + assertUpstreamTypeRequested(TYPE_MOBILE_DUN); + assertTrue(mCM.isDunRequested()); + + // Try a few things that must not result in any state change. + mUNM.registerMobileNetworkRequest(); + mUNM.updateMobileRequiresDun(true); + mUNM.registerMobileNetworkRequest(); + + assertTrue(mUNM.mobileNetworkRequested()); + assertUpstreamTypeRequested(TYPE_MOBILE_DUN); + assertTrue(mCM.isDunRequested()); + + mUNM.stop(); + verify(mCM, times(3)).unregisterNetworkCallback(any(NetworkCallback.class)); + + verifyNoMoreInteractions(mCM); + } + @Test public void testRequestsDunNetwork() throws Exception { assertFalse(mUNM.mobileNetworkRequested()); @@ -149,7 +192,7 @@ public class UpstreamNetworkMonitorTest { } @Test - public void testUpdateMobileRequiredDun() throws Exception { + public void testUpdateMobileRequiresDun() throws Exception { mUNM.start(); // Test going from no-DUN to DUN correctly re-registers callbacks. @@ -180,7 +223,7 @@ public class UpstreamNetworkMonitorTest { mCM.legacyTypeMap.values().iterator().next()); } - private static class TestConnectivityManager extends ConnectivityManager { + public static class TestConnectivityManager extends ConnectivityManager { public Set trackingDefault = new HashSet<>(); public Map listening = new HashMap<>(); public Map requested = new HashMap<>(); -- cgit v1.2.3-59-g8ed1b