From 2515f4725aad094037fdfd674bb32e2f6cf17639 Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Tue, 19 Sep 2017 09:52:43 -0400 Subject: [PATCH] Make NetworkController tests more deterministic Test: runtest systemui Fixes: 63386204 Change-Id: I371c6897c929e70e61a44e116c5a508f494eff0c --- .../policy/NetworkControllerBaseTest.java | 80 +++++++++---------- .../policy/NetworkControllerDataTest.java | 7 +- .../policy/NetworkControllerEthernetTest.java | 5 +- .../policy/NetworkControllerSignalTest.java | 5 +- .../policy/NetworkControllerWifiTest.java | 5 +- 5 files changed, 58 insertions(+), 44 deletions(-) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index bb7b197c2a05b..b7e6a40c68805 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -16,44 +16,6 @@ package com.android.systemui.statusbar.policy; -import android.content.Intent; -import android.net.ConnectivityManager; -import android.net.NetworkCapabilities; -import android.net.wifi.WifiManager; -import android.os.Looper; -import android.provider.Settings; -import android.provider.Settings.Global; -import android.telephony.PhoneStateListener; -import android.telephony.ServiceState; -import android.telephony.SignalStrength; -import android.telephony.SubscriptionInfo; -import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; -import android.util.Log; -import com.android.internal.telephony.cdma.EriInfo; -import com.android.settingslib.net.DataUsageController; -import com.android.systemui.statusbar.phone.SignalDrawable; -import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; -import com.android.systemui.statusbar.policy.NetworkController.IconState; -import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; -import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; -import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults; -import com.android.systemui.SysuiTestCase; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.rules.TestWatcher; -import org.junit.runner.Description; -import org.mockito.ArgumentCaptor; -import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.List; - import static junit.framework.Assert.assertEquals; import static org.mockito.Matchers.any; @@ -65,6 +27,43 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkCapabilities; +import android.net.wifi.WifiManager; +import android.provider.Settings; +import android.provider.Settings.Global; +import android.telephony.PhoneStateListener; +import android.telephony.ServiceState; +import android.telephony.SignalStrength; +import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; +import android.telephony.TelephonyManager; +import android.testing.TestableLooper; +import android.util.Log; + +import com.android.internal.telephony.cdma.EriInfo; +import com.android.settingslib.net.DataUsageController; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.statusbar.phone.SignalDrawable; +import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; +import com.android.systemui.statusbar.policy.NetworkController.IconState; +import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; +import com.android.systemui.statusbar.policy.NetworkControllerImpl.Config; +import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionDefaults; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.rules.TestWatcher; +import org.junit.runner.Description; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; + public class NetworkControllerBaseTest extends SysuiTestCase { private static final String TAG = "NetworkControllerBaseTest"; protected static final int DEFAULT_LEVEL = 2; @@ -131,11 +130,12 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mUserCallback = (DeviceProvisionedListener) invocation.getArguments()[0]; mUserCallback.onUserSetupChanged(); mUserCallback.onDeviceProvisionedChanged(); + TestableLooper.get(this).processAllMessages(); return null; }).when(mMockProvisionController).addCallback(any()); mNetworkController = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, - mConfig, Looper.getMainLooper(), mCallbackHandler, + mConfig, TestableLooper.get(this).getLooper(), mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mMockProvisionController); setupNetworkController(); @@ -176,7 +176,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { when(mMockCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false); NetworkControllerImpl networkControllerNoMobile = new NetworkControllerImpl(mContext, mMockCm, mMockTm, mMockWm, mMockSm, - mConfig, mContext.getMainLooper(), mCallbackHandler, + mConfig, TestableLooper.get(this).getLooper(), mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index 0313a4374d55e..1419e9ad43a2d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -9,6 +9,9 @@ import android.os.Looper; import android.support.test.runner.AndroidJUnit4; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; +import android.testing.TestableLooper.RunWithLooper; import com.android.settingslib.net.DataUsageController; @@ -16,7 +19,8 @@ import org.junit.Test; import org.junit.runner.RunWith; @SmallTest -@RunWith(AndroidJUnit4.class) +@RunWith(AndroidTestingRunner.class) +@RunWithLooper public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test @@ -126,6 +130,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { setConnectivity(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); when(mMockProvisionController.isUserSetup(anyInt())).thenReturn(false); mUserCallback.onUserSetupChanged(); + TestableLooper.get(this).processAllMessages(); // Don't show the X until the device is setup. verifyDataIndicators(0, 0); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java index 9ac51b65f3820..d2d73470efe79 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerEthernetTest.java @@ -3,6 +3,8 @@ package com.android.systemui.statusbar.policy; import android.net.NetworkCapabilities; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper.RunWithLooper; import com.android.systemui.statusbar.policy.NetworkController.IconState; @@ -14,7 +16,8 @@ import org.mockito.Mockito; import static junit.framework.Assert.assertEquals; @SmallTest -@RunWith(AndroidJUnit4.class) +@RunWith(AndroidTestingRunner.class) +@RunWithLooper public class NetworkControllerEthernetTest extends NetworkControllerBaseTest { @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index b353f5ab51371..3ad107c222457 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -25,6 +25,8 @@ import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper.RunWithLooper; import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.TelephonyIntents; @@ -46,7 +48,8 @@ import static junit.framework.Assert.assertFalse; import static org.mockito.Mockito.mock; @SmallTest -@RunWith(AndroidJUnit4.class) +@RunWith(AndroidTestingRunner.class) +@RunWithLooper public class NetworkControllerSignalTest extends NetworkControllerBaseTest { @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java index ffd0165195e5d..4c18f8d82750a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java @@ -7,6 +7,8 @@ import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper.RunWithLooper; import com.android.systemui.statusbar.policy.NetworkController.IconState; @@ -21,7 +23,8 @@ import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; @SmallTest -@RunWith(AndroidJUnit4.class) +@RunWith(AndroidTestingRunner.class) +@RunWithLooper public class NetworkControllerWifiTest extends NetworkControllerBaseTest { // These match the constants in WifiManager and need to be kept up to date. private static final int MIN_RSSI = -100;