summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEtan Cohen <etancohen@google.com>2018-02-17 05:26:28 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-02-17 05:26:28 +0000
commitf1f32b622619d35b577dd37bcbdd7b7c29769c42 (patch)
tree517af9dc9d0e1d8b0bfe89189f8cd322260bd66e /tests
parent406a8ce816edc71ef49647b6fd11c00a3129b0af (diff)
parent353ed66e1af63e0e01eb01751a6e2874413f47ca (diff)
Merge "[AWARE] React to Wi-Fi state changes: disable when Wi-Fi is off"
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java5
-rw-r--r--tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java102
2 files changed, 106 insertions, 1 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
index dd31e7604..83be557aa 100644
--- a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareDataPathStateManagerTest.java
@@ -45,6 +45,7 @@ import android.net.NetworkCapabilities;
import android.net.NetworkFactory;
import android.net.NetworkRequest;
import android.net.NetworkSpecifier;
+import android.net.wifi.WifiManager;
import android.net.wifi.aware.AttachCallback;
import android.net.wifi.aware.ConfigRequest;
import android.net.wifi.aware.DiscoverySession;
@@ -115,6 +116,7 @@ public class WifiAwareDataPathStateManagerTest {
@Mock private WifiPermissionsUtil mWifiPermissionsUtil;
@Mock private WifiPermissionsWrapper mPermissionsWrapperMock;
@Mock private LocationManager mLocationManagerMock;
+ @Mock private WifiManager mMockWifiManager;
TestAlarmManager mAlarmManager;
private PowerManager mMockPowerManager;
@@ -132,6 +134,9 @@ public class WifiAwareDataPathStateManagerTest {
when(mMockContext.getSystemService(Context.ALARM_SERVICE))
.thenReturn(mAlarmManager.getAlarmManager());
+ when(mMockContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
+ when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
+
mMockLooper = new TestLooper();
mMockLooperHandler = new Handler(mMockLooper.getLooper());
diff --git a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
index 7ada6ae82..e6586e3e7 100644
--- a/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/aware/WifiAwareStateManagerTest.java
@@ -50,6 +50,7 @@ import android.hardware.wifi.V1_0.NanRangingIndication;
import android.hardware.wifi.V1_0.NanStatusType;
import android.location.LocationManager;
import android.net.ConnectivityManager;
+import android.net.wifi.WifiManager;
import android.net.wifi.aware.ConfigRequest;
import android.net.wifi.aware.IWifiAwareDiscoverySessionCallback;
import android.net.wifi.aware.IWifiAwareEventCallback;
@@ -116,8 +117,10 @@ public class WifiAwareStateManagerTest {
@Mock private LocationManager mLocationManagerMock;
TestAlarmManager mAlarmManager;
private PowerManager mMockPowerManager;
+ @Mock private WifiManager mMockWifiManager;
private BroadcastReceiver mPowerBcastReceiver;
private BroadcastReceiver mLocationModeReceiver;
+ private BroadcastReceiver mWifiStateChangedReceiver;
@Mock private WifiAwareDataPathStateManager mMockAwareDataPathStatemanager;
@Rule
@@ -136,6 +139,9 @@ public class WifiAwareStateManagerTest {
when(mMockContext.getSystemService(Context.ALARM_SERVICE))
.thenReturn(mAlarmManager.getAlarmManager());
+ when(mMockContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
+ when(mMockWifiManager.getWifiState()).thenReturn(WifiManager.WIFI_STATE_ENABLED);
+
mMockLooper = new TestLooper();
IPowerManager powerManagerService = mock(IPowerManager.class);
@@ -170,10 +176,11 @@ public class WifiAwareStateManagerTest {
mWifiPermissionsUtil, mPermissionsWrapperMock);
mDut.startLate();
mMockLooper.dispatchAll();
- verify(mMockContext, times(2)).registerReceiver(bcastRxCaptor.capture(),
+ verify(mMockContext, times(3)).registerReceiver(bcastRxCaptor.capture(),
any(IntentFilter.class));
mPowerBcastReceiver = bcastRxCaptor.getAllValues().get(0);
mLocationModeReceiver = bcastRxCaptor.getAllValues().get(1);
+ mWifiStateChangedReceiver = bcastRxCaptor.getAllValues().get(2);
installMocksInStateManager(mDut, mMockAwareDataPathStatemanager);
}
@@ -3105,6 +3112,16 @@ public class WifiAwareStateManagerTest {
simulatePowerStateChangeInteractive(false);
mMockLooper.dispatchAll();
+ // and same for other gating changes -> no changes
+ simulateLocationModeChange(false);
+ simulateWifiStateChange(false);
+ mMockLooper.dispatchAll();
+
+ // and same for other gating changes -> no changes
+ simulateLocationModeChange(true);
+ simulateWifiStateChange(true);
+ mMockLooper.dispatchAll();
+
// (5) power state change: DOZE OFF
simulatePowerStateChangeDoze(false);
mMockLooper.dispatchAll();
@@ -3155,6 +3172,16 @@ public class WifiAwareStateManagerTest {
mDut.onDisableResponse(transactionId.getValue(), NanStatusType.SUCCESS);
validateCorrectAwareStatusChangeBroadcast(inOrder, false);
+ // disable other gating feature -> no change
+ simulatePowerStateChangeDoze(true);
+ simulateWifiStateChange(false);
+ mMockLooper.dispatchAll();
+
+ // enable other gating feature -> no change
+ simulatePowerStateChangeDoze(false);
+ simulateWifiStateChange(true);
+ mMockLooper.dispatchAll();
+
// (4) location mode change: enable
simulateLocationModeChange(true);
mMockLooper.dispatchAll();
@@ -3163,6 +3190,66 @@ public class WifiAwareStateManagerTest {
verifyNoMoreInteractions(mMockNativeManager, mMockNative, mockCallback);
}
+ /**
+ * Validate aware enable/disable during Wi-Fi State transitions.
+ */
+ @Test
+ public void testEnableDisableOnWifiStateChanges() throws Exception {
+ final int clientId = 188;
+ final int uid = 1000;
+ final int pid = 2000;
+ final String callingPackage = "com.google.somePackage";
+
+ ConfigRequest configRequest = new ConfigRequest.Builder().build();
+
+ ArgumentCaptor<Short> transactionId = ArgumentCaptor.forClass(Short.class);
+ IWifiAwareEventCallback mockCallback = mock(IWifiAwareEventCallback.class);
+ InOrder inOrder = inOrder(mMockContext, mMockNativeManager, mMockNative, mockCallback);
+ inOrder.verify(mMockNativeManager).start(any(Handler.class));
+
+ mDut.enableUsage();
+ mMockLooper.dispatchAll();
+ inOrder.verify(mMockNativeManager).tryToGetAware();
+ inOrder.verify(mMockNative).getCapabilities(transactionId.capture());
+ mDut.onCapabilitiesUpdateResponse(transactionId.getValue(), getCapabilities());
+ mMockLooper.dispatchAll();
+ inOrder.verify(mMockNativeManager).releaseAware();
+
+ // (1) connect
+ mDut.connect(clientId, uid, pid, callingPackage, mockCallback, configRequest, false);
+ mMockLooper.dispatchAll();
+ inOrder.verify(mMockNativeManager).tryToGetAware();
+ inOrder.verify(mMockNative).enableAndConfigure(transactionId.capture(),
+ eq(configRequest), eq(false), eq(true), eq(true), eq(false));
+ mDut.onConfigSuccessResponse(transactionId.getValue());
+ mMockLooper.dispatchAll();
+ inOrder.verify(mockCallback).onConnectSuccess(clientId);
+
+ // (3) wifi state change: disable
+ simulateWifiStateChange(false);
+ mMockLooper.dispatchAll();
+ inOrder.verify(mMockNative).disable(transactionId.capture());
+ mDut.onDisableResponse(transactionId.getValue(), NanStatusType.SUCCESS);
+ validateCorrectAwareStatusChangeBroadcast(inOrder, false);
+
+ // disable other gating feature -> no change
+ simulatePowerStateChangeDoze(true);
+ simulateLocationModeChange(false);
+ mMockLooper.dispatchAll();
+
+ // enable other gating feature -> no change
+ simulatePowerStateChangeDoze(false);
+ simulateLocationModeChange(true);
+ mMockLooper.dispatchAll();
+
+ // (4) wifi state change: enable
+ simulateWifiStateChange(true);
+ mMockLooper.dispatchAll();
+ validateCorrectAwareStatusChangeBroadcast(inOrder, true);
+
+ verifyNoMoreInteractions(mMockNativeManager, mMockNative, mockCallback);
+ }
+
/*
* Tests of internal state of WifiAwareStateManager: very limited (not usually
* a good idea). However, these test that the internal state is cleaned-up
@@ -3354,6 +3441,19 @@ public class WifiAwareStateManagerTest {
mLocationModeReceiver.onReceive(mMockContext, intent);
}
+ /**
+ * Simulate Wi-Fi state change: broadcast state change and modify the API return value.
+ */
+ private void simulateWifiStateChange(boolean isWifiOn) {
+ when(mMockWifiManager.getWifiState()).thenReturn(
+ isWifiOn ? WifiManager.WIFI_STATE_ENABLED : WifiManager.WIFI_STATE_DISABLED);
+
+ Intent intent = new Intent(WifiManager.WIFI_STATE_CHANGED_ACTION);
+ intent.putExtra(WifiManager.EXTRA_WIFI_STATE,
+ isWifiOn ? WifiManager.WIFI_STATE_ENABLED : WifiManager.WIFI_STATE_DISABLED);
+ mWifiStateChangedReceiver.onReceive(mMockContext, intent);
+ }
+
private static Capabilities getCapabilities() {
Capabilities cap = new Capabilities();
cap.maxConcurrentAwareClusters = 1;