Add dump commmand for Wifi Wake.
Bug: 64094365
Test: adb shell dumpsys wifi | grep -A 10 WakeupController
frameworks/opt/net/wifi/tests/wifitests/runtests.sh
Change-Id: I8d835c083f534749c7dbca4b0706c558d46aef38
diff --git a/service/java/com/android/server/wifi/WakeupController.java b/service/java/com/android/server/wifi/WakeupController.java
index fc5761f..8787bfd 100644
--- a/service/java/com/android/server/wifi/WakeupController.java
+++ b/service/java/com/android/server/wifi/WakeupController.java
@@ -24,6 +24,9 @@
import com.android.internal.annotations.VisibleForTesting;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
/**
* WakeupController is responsible managing Auto Wifi.
*
@@ -95,6 +98,15 @@
return mWifiWakeupEnabled;
}
+ /** Dumps wakeup controller state. */
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println("Dump of WakeupController");
+ pw.println("mWifiWakeupEnabled: " + mWifiWakeupEnabled);
+ pw.println("USE_PLATFORM_WIFI_WAKE: " + USE_PLATFORM_WIFI_WAKE);
+ pw.println("mIsActive: " + mIsActive);
+ mWakeupLock.dump(fd, pw, args);
+ }
+
private class IsActiveDataSource implements WakeupConfigStoreData.DataSource<Boolean> {
@Override
diff --git a/service/java/com/android/server/wifi/WakeupLock.java b/service/java/com/android/server/wifi/WakeupLock.java
index aac7bf4..1fcd9f8 100644
--- a/service/java/com/android/server/wifi/WakeupLock.java
+++ b/service/java/com/android/server/wifi/WakeupLock.java
@@ -21,6 +21,8 @@
import com.android.internal.annotations.VisibleForTesting;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
@@ -111,6 +113,15 @@
return new WakeupLockDataSource();
}
+ /** Dumps wakeup lock contents. */
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ pw.println("WakeupLock: ");
+ pw.println("Locked networks: " + mLockedNetworks.size());
+ for (Map.Entry<ScanResultMatchInfo, Integer> entry : mLockedNetworks.entrySet()) {
+ pw.println(entry.getKey() + ", scans to evict: " + entry.getValue());
+ }
+ }
+
private class WakeupLockDataSource
implements WakeupConfigStoreData.DataSource<Set<ScanResultMatchInfo>> {
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index 0adef36..05b9b00 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -2281,6 +2281,7 @@
} else {
pw.println("mWifiConnectivityManager is not initialized");
}
+ mWifiInjector.getWakeupController().dump(fd, pw, args);
}
public void handleUserSwitch(int userId) {
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
index f19e82b..5e45570 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
@@ -31,6 +31,9 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
+
/**
* Unit tests for {@link WakeupController}.
*/
@@ -89,4 +92,17 @@
mWakeupController = newWakeupController();
verify(mWifiConfigStore).registerStoreData(any(WakeupConfigStoreData.class));
}
+
+ /**
+ * Verify that dump calls also dump the state of the WakeupLock.
+ */
+ @Test
+ public void dumpIncludesWakeupLock() {
+ mWakeupController = newWakeupController();
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ PrintWriter writer = new PrintWriter(stream);
+ mWakeupController.dump(null, writer, null);
+
+ verify(mWakeupLock).dump(null, writer, null);
+ }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
index 7a7fa92..ca8a342 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
@@ -376,6 +376,7 @@
@Mock IProvisioningCallback mProvisioningCallback;
@Mock HandlerThread mWifiServiceHandlerThread;
@Mock WifiPermissionsWrapper mWifiPermissionsWrapper;
+ @Mock WakeupController mWakeupController;
public WifiStateMachineTest() throws Exception {
}
@@ -422,6 +423,7 @@
when(mWifiServiceHandlerThread.getLooper()).thenReturn(mLooper.getLooper());
when(mWifiInjector.getWifiServiceHandlerThread()).thenReturn(mWifiServiceHandlerThread);
when(mWifiInjector.getWifiPermissionsWrapper()).thenReturn(mWifiPermissionsWrapper);
+ when(mWifiInjector.getWakeupController()).thenReturn(mWakeupController);
when(mWifiNative.setupForClientMode(WIFI_IFACE_NAME))
.thenReturn(Pair.create(WifiNative.SETUP_SUCCESS, mClientInterface));
@@ -2819,4 +2821,15 @@
currentConfig.networkId = lastSelectedNetworkId - 1;
assertFalse(mWsm.shouldEvaluateWhetherToSendExplicitlySelected(currentConfig));
}
+
+ /**
+ * Verify that WSM dump includes WakeupController.
+ */
+ @Test
+ public void testDumpShouldDumpWakeupController() {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ PrintWriter writer = new PrintWriter(stream);
+ mWsm.dump(null, writer, null);
+ verify(mWakeupController).dump(null, writer, null);
+ }
}