Skip to content

Instantly share code, notes, and snippets.

@invisiblek
Created December 7, 2016 21:09
Show Gist options
  • Save invisiblek/f8e29209bcf5e67a27e9fac0cc6b2cf9 to your computer and use it in GitHub Desktop.
Save invisiblek/f8e29209bcf5e67a27e9fac0cc6b2cf9 to your computer and use it in GitHub Desktop.
diff --git a/service/Android.mk b/service/Android.mk
index cdee104..c1ba4a8 100644
--- a/service/Android.mk
+++ b/service/Android.mk
@@ -145,12 +145,6 @@ LOCAL_MODULE_TAGS :=
LOCAL_MODULE := wifi-service
LOCAL_PROTOC_OPTIMIZE_TYPE := nano
-ifeq ($(EMMA_INSTRUMENT_FRAMEWORK),true)
-LOCAL_EMMA_INSTRUMENT := true
-endif
-
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.server.wifi.*
-
include $(BUILD_JAVA_LIBRARY)
endif
diff --git a/service/java/com/android/server/wifi/WifiConfigManager.java b/service/java/com/android/server/wifi/WifiConfigManager.java
index 24409ae..7f3a8ee 100644
--- a/service/java/com/android/server/wifi/WifiConfigManager.java
+++ b/service/java/com/android/server/wifi/WifiConfigManager.java
@@ -190,7 +190,7 @@ public class WifiConfigManager {
*/
private static final int[] NETWORK_SELECTION_DISABLE_THRESHOLD = {
-1, // threshold for NETWORK_SELECTION_ENABLE
- 1, // threshold for DISABLED_BAD_LINK (deprecated)
+ 1, // threshold for DISABLED_BAD_LINK
5, // threshold for DISABLED_ASSOCIATION_REJECTION
5, // threshold for DISABLED_AUTHENTICATION_FAILURE
5, // threshold for DISABLED_DHCP_FAILURE
@@ -206,7 +206,7 @@ public class WifiConfigManager {
*/
private static final int[] NETWORK_SELECTION_DISABLE_TIMEOUT = {
Integer.MAX_VALUE, // threshold for NETWORK_SELECTION_ENABLE
- 15, // threshold for DISABLED_BAD_LINK (deprecated)
+ 15, // threshold for DISABLED_BAD_LINK
5, // threshold for DISABLED_ASSOCIATION_REJECTION
5, // threshold for DISABLED_AUTHENTICATION_FAILURE
5, // threshold for DISABLED_DHCP_FAILURE
@@ -243,6 +243,11 @@ public class WifiConfigManager {
public AtomicInteger mBandAward5Ghz = new AtomicInteger();
/**
+ * If Connectivity Service has triggered an unwanted network disconnect
+ */
+ public long mLastUnwantedNetworkDisconnectTimestamp = 0;
+
+ /**
* Framework keeps a list of ephemeral SSIDs that where deleted by user,
* so as, framework knows not to autojoin again those SSIDs based on scorer input.
* The list is never cleared up.
@@ -1664,7 +1669,6 @@ public class WifiConfigManager {
// 2) mConfiguredNetworks caches a Passpoint network's FQDN the moment the network is added.
// Thus, we had to load the FQDNs first.
mConfiguredNetworks.clear();
- mScanDetailCaches.clear();
for (Map.Entry<String, WifiConfiguration> entry : configs.entrySet()) {
final String configKey = entry.getKey();
final WifiConfiguration config = entry.getValue();
@@ -2468,8 +2472,20 @@ public class WifiConfigManager {
}
private Map<HomeSP, PasspointMatch> matchPasspointNetworks(ScanDetail scanDetail) {
- // Nothing to do if no Hotspot 2.0 provider is configured.
if (!mMOManager.isConfigured()) {
+ if (mEnableOsuQueries) {
+ NetworkDetail networkDetail = scanDetail.getNetworkDetail();
+ List<Constants.ANQPElementType> querySet =
+ ANQPFactory.buildQueryList(networkDetail, false, true);
+
+ if (networkDetail.queriable(querySet)) {
+ querySet = mAnqpCache.initiate(networkDetail, querySet);
+ if (querySet != null) {
+ mSupplicantBridge.startANQP(scanDetail, querySet);
+ }
+ updateAnqpCache(scanDetail, networkDetail.getANQPElements());
+ }
+ }
return null;
}
NetworkDetail networkDetail = scanDetail.getNetworkDetail();
@@ -3217,6 +3233,29 @@ public class WifiConfigManager {
}
}
+ /** called when CS ask WiFistateMachine to disconnect the current network
+ * because the score is bad.
+ */
+ void handleBadNetworkDisconnectReport(int netId, WifiInfo info) {
+ /* TODO verify the bad network is current */
+ WifiConfiguration config = mConfiguredNetworks.getForCurrentUser(netId);
+ if (config != null) {
+ if ((info.is24GHz() && info.getRssi()
+ <= WifiQualifiedNetworkSelector.QUALIFIED_RSSI_24G_BAND)
+ || (info.is5GHz() && info.getRssi()
+ <= WifiQualifiedNetworkSelector.QUALIFIED_RSSI_5G_BAND)) {
+ // We do not block due to bad RSSI since network selection should not select bad
+ // RSSI candidate
+ } else {
+ // We got disabled but RSSI is good, so disable hard
+ updateNetworkSelectionStatus(config,
+ WifiConfiguration.NetworkSelectionStatus.DISABLED_BAD_LINK);
+ }
+ }
+ // Record last time Connectivity Service switched us away from WiFi and onto Cell
+ mLastUnwantedNetworkDisconnectTimestamp = mClock.currentTimeMillis();
+ }
+
int getMaxDhcpRetries() {
return mFacade.getIntegerSetting(mContext,
Settings.Global.WIFI_MAX_DHCP_RETRY_COUNT,
diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java
index 1cdfb69..bdd931e 100644
--- a/service/java/com/android/server/wifi/WifiConnectivityManager.java
+++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java
@@ -150,7 +150,6 @@ public class WifiConnectivityManager {
private long mLastPeriodicSingleScanTimeStamp = RESET_TIME_STAMP;
private boolean mPnoScanStarted = false;
private boolean mPeriodicScanTimerSet = false;
- private boolean mWaitForFullBandScanResults = false;
// PNO settings
private int mMin5GHzRssi;
@@ -230,7 +229,6 @@ public class WifiConnectivityManager {
mStateMachine.isSupplicantTransientState());
mWifiLastResortWatchdog.updateAvailableNetworks(
mQualifiedNetworkSelector.getFilteredScanDetails());
- mWifiMetrics.countScanResults(scanDetails);
if (candidate != null) {
localLog(listenerName + ": QNS candidate-" + candidate.SSID);
connectToNetwork(candidate);
@@ -329,21 +327,9 @@ public class WifiConnectivityManager {
public void onResults(WifiScanner.ScanData[] results) {
if (!mWifiEnabled || !mWifiConnectivityManagerEnabled) {
clearScanDetails();
- mWaitForFullBandScanResults = false;
return;
}
- // Full band scan results only.
- if (mWaitForFullBandScanResults) {
- if (!results[0].isAllChannelsScanned()) {
- localLog("AllSingleScanListener waiting for full band scan results.");
- clearScanDetails();
- return;
- } else {
- mWaitForFullBandScanResults = false;
- }
- }
-
boolean wasConnectAttempted = handleScanResults(mScanDetails, "AllSingleScanListener");
clearScanDetails();
@@ -527,7 +513,7 @@ public class WifiConnectivityManager {
public WifiConnectivityManager(Context context, WifiStateMachine stateMachine,
WifiScanner scanner, WifiConfigManager configManager, WifiInfo wifiInfo,
WifiQualifiedNetworkSelector qualifiedNetworkSelector,
- WifiInjector wifiInjector, Looper looper, boolean enable) {
+ WifiInjector wifiInjector, Looper looper) {
mStateMachine = stateMachine;
mScanner = scanner;
mConfigManager = configManager;
@@ -562,10 +548,7 @@ public class WifiConnectivityManager {
// Register for all single scan results
mScanner.registerScanListener(mAllSingleScanListener);
- mWifiConnectivityManagerEnabled = enable;
-
- Log.i(TAG, "ConnectivityScanManager initialized and "
- + (enable ? "enabled" : "disabled"));
+ Log.i(TAG, "ConnectivityScanManager initialized ");
}
/**
@@ -1094,8 +1077,7 @@ public class WifiConnectivityManager {
public void forceConnectivityScan() {
Log.i(TAG, "forceConnectivityScan");
- mWaitForFullBandScanResults = true;
- startSingleScan(true);
+ startConnectivityScan(SCAN_IMMEDIATELY);
}
/**
@@ -1139,9 +1121,6 @@ public class WifiConnectivityManager {
stopConnectivityScan();
resetLastPeriodicSingleScanTimeStamp();
mLastConnectionAttemptBssid = null;
- mWaitForFullBandScanResults = false;
- } else if (mWifiConnectivityManagerEnabled) {
- startConnectivityScan(SCAN_IMMEDIATELY);
}
}
@@ -1157,9 +1136,6 @@ public class WifiConnectivityManager {
stopConnectivityScan();
resetLastPeriodicSingleScanTimeStamp();
mLastConnectionAttemptBssid = null;
- mWaitForFullBandScanResults = false;
- } else if (mWifiEnabled) {
- startConnectivityScan(SCAN_IMMEDIATELY);
}
}
diff --git a/service/java/com/android/server/wifi/WifiLastResortWatchdog.java b/service/java/com/android/server/wifi/WifiLastResortWatchdog.java
index 0885e46..558b50e 100644
--- a/service/java/com/android/server/wifi/WifiLastResortWatchdog.java
+++ b/service/java/com/android/server/wifi/WifiLastResortWatchdog.java
@@ -209,12 +209,6 @@ public class WifiLastResortWatchdog {
public void connectedStateTransition(boolean isEntering) {
if (VDBG) Log.v(TAG, "connectedStateTransition: isEntering = " + isEntering);
mWifiIsConnected = isEntering;
-
- if (!mWatchdogAllowedToTrigger) {
- // WiFi has connected after a Watchdog trigger, without any new networks becoming
- // available, log a Watchdog success in wifi metrics
- mWifiMetrics.incrementNumLastResortWatchdogSuccesses();
- }
if (isEntering) {
// We connected to something! Reset failure counts for everything
clearAllFailureCounts();
diff --git a/service/java/com/android/server/wifi/WifiLoggerHal.java b/service/java/com/android/server/wifi/WifiLoggerHal.java
index 0294e9b..8a02764 100644
--- a/service/java/com/android/server/wifi/WifiLoggerHal.java
+++ b/service/java/com/android/server/wifi/WifiLoggerHal.java
@@ -46,9 +46,4 @@ public class WifiLoggerHal {
public static final byte RX_PKT_FATE_DRV_DROP_INVALID = 8;
public static final byte RX_PKT_FATE_DRV_DROP_NOBUFS = 9;
public static final byte RX_PKT_FATE_DRV_DROP_OTHER = 10;
-
- /** These aren't formally part of the HAL. But they probably should be, eventually. */
- public static final byte WIFI_ALERT_REASON_RESERVED = 0;
- public static final byte WIFI_ALERT_REASON_MIN = 0;
- public static final byte WIFI_ALERT_REASON_MAX = 64;
}
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java
index fcb6301..4ef29f6 100644
--- a/service/java/com/android/server/wifi/WifiMetrics.java
+++ b/service/java/com/android/server/wifi/WifiMetrics.java
@@ -16,7 +16,6 @@
package com.android.server.wifi;
-import android.net.NetworkAgent;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.util.Base64;
@@ -48,8 +47,6 @@ public class WifiMetrics {
*/
private static final int MAX_RSSI_POLL = 0;
private static final int MIN_RSSI_POLL = -127;
- private static final int MIN_WIFI_SCORE = 0;
- private static final int MAX_WIFI_SCORE = NetworkAgent.WIFI_BASE_SCORE;
private final Object mLock = new Object();
private static final int MAX_CONNECTION_EVENTS = 256;
private Clock mClock;
@@ -79,17 +76,13 @@ public class WifiMetrics {
* combination. Indexed by WifiLog.WifiState * (1 + screenOn)
*/
private final SparseIntArray mWifiSystemStateEntries = new SparseIntArray();
- /** Mapping of RSSI values to counts. */
- private final SparseIntArray mRssiPollCounts = new SparseIntArray();
- /** Mapping of alert reason to the respective alert count. */
- private final SparseIntArray mWifiAlertReasonCounts = new SparseIntArray();
/**
* Records the elapsedRealtime (in seconds) that represents the beginning of data
* capture for for this WifiMetricsProto
*/
+ private final SparseIntArray mRssiPollCounts = new SparseIntArray();
private long mRecordStartTimeSec;
- /** Mapping of Wifi Scores to counts */
- private final SparseIntArray mWifiScoreCounts = new SparseIntArray();
+
class RouterFingerPrint {
private WifiMetricsProto.RouterFingerPrint mRouterFingerPrintProto;
RouterFingerPrint() {
@@ -134,8 +127,6 @@ public class WifiMetrics {
mCurrentConnectionEvent.mRouterFingerPrint.mRouterFingerPrintProto
.authentication = WifiMetricsProto.RouterFingerPrint.AUTH_PERSONAL;
}
- mCurrentConnectionEvent.mRouterFingerPrint.mRouterFingerPrintProto
- .passpoint = config.isPasspoint();
// If there's a ScanResult candidate associated with this config already, get it and
// log (more accurate) metrics from it
ScanResult candidate = config.getNetworkSelectionStatus().getCandidate();
@@ -521,18 +512,6 @@ public class WifiMetrics {
}
}
- void setNumHiddenNetworks(int num) {
- synchronized (mLock) {
- mWifiLogProto.numHiddenNetworks = num;
- }
- }
-
- void setNumPasspointNetworks(int num) {
- synchronized (mLock) {
- mWifiLogProto.numPasspointNetworks = num;
- }
- }
-
void setNumNetworksAddedByUser(int num) {
synchronized (mLock) {
mWifiLogProto.numNetworksAddedByUser = num;
@@ -827,105 +806,10 @@ public class WifiMetrics {
}
}
- /**
- * Increment count of Watchdog successes.
- */
- public void incrementNumLastResortWatchdogSuccesses() {
- synchronized (mLock) {
- mWifiLogProto.numLastResortWatchdogSuccesses++;
- }
- }
-
- /**
- * Increments the count of alerts by alert reason.
- *
- * @param reason The cause of the alert. The reason values are driver-specific.
- */
- public void incrementAlertReasonCount(int reason) {
- if (reason > WifiLoggerHal.WIFI_ALERT_REASON_MAX
- || reason < WifiLoggerHal.WIFI_ALERT_REASON_MIN) {
- reason = WifiLoggerHal.WIFI_ALERT_REASON_RESERVED;
- }
- synchronized (mLock) {
- int alertCount = mWifiAlertReasonCounts.get(reason);
- mWifiAlertReasonCounts.put(reason, alertCount + 1);
- }
- }
-
- /**
- * Counts all the different types of networks seen in a set of scan results
- */
- public void countScanResults(List<ScanDetail> scanDetails) {
- if (scanDetails == null) {
- return;
- }
- int totalResults = 0;
- int openNetworks = 0;
- int personalNetworks = 0;
- int enterpriseNetworks = 0;
- int hiddenNetworks = 0;
- int hotspot2r1Networks = 0;
- int hotspot2r2Networks = 0;
- for (ScanDetail scanDetail : scanDetails) {
- NetworkDetail networkDetail = scanDetail.getNetworkDetail();
- ScanResult scanResult = scanDetail.getScanResult();
- totalResults++;
- if (networkDetail != null) {
- if (networkDetail.isHiddenBeaconFrame()) {
- hiddenNetworks++;
- }
- if (networkDetail.getHSRelease() != null) {
- if (networkDetail.getHSRelease() == NetworkDetail.HSRelease.R1) {
- hotspot2r1Networks++;
- } else if (networkDetail.getHSRelease() == NetworkDetail.HSRelease.R2) {
- hotspot2r2Networks++;
- }
- }
- }
- if (scanResult != null && scanResult.capabilities != null) {
- if (scanResult.capabilities.contains("EAP")) {
- enterpriseNetworks++;
- } else if (scanResult.capabilities.contains("PSK")
- || scanResult.capabilities.contains("WEP")) {
- personalNetworks++;
- } else {
- openNetworks++;
- }
- }
- }
- synchronized (mLock) {
- mWifiLogProto.numTotalScanResults += totalResults;
- mWifiLogProto.numOpenNetworkScanResults += openNetworks;
- mWifiLogProto.numPersonalNetworkScanResults += personalNetworks;
- mWifiLogProto.numEnterpriseNetworkScanResults += enterpriseNetworks;
- mWifiLogProto.numHiddenNetworkScanResults += hiddenNetworks;
- mWifiLogProto.numHotspot2R1NetworkScanResults += hotspot2r1Networks;
- mWifiLogProto.numHotspot2R2NetworkScanResults += hotspot2r2Networks;
- mWifiLogProto.numScans++;
- }
- }
-
- /**
- * Increments occurence of a particular wifi score calculated
- * in WifiScoreReport by current connected network. Scores are bounded
- * within [MIN_WIFI_SCORE, MAX_WIFI_SCORE] to limit size of SparseArray
- */
- public void incrementWifiScoreCount(int score) {
- if (score < MIN_WIFI_SCORE || score > MAX_WIFI_SCORE) {
- return;
- }
- synchronized (mLock) {
- int count = mWifiScoreCounts.get(score);
- mWifiScoreCounts.put(score, count + 1);
- }
- }
-
public static final String PROTO_DUMP_ARG = "wifiMetricsProto";
- public static final String CLEAN_DUMP_ARG = "clean";
-
/**
* Dump all WifiMetrics. Collects some metrics from ConfigStore, Settings and WifiManager
- * at this time.
+ * at this time
*
* @param fd unused
* @param pw PrintWriter for writing dump to
@@ -933,8 +817,9 @@ public class WifiMetrics {
*/
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
synchronized (mLock) {
+ pw.println("WifiMetrics:");
if ((args != null) && args.length > 0 && PROTO_DUMP_ARG.equals(args[0])) {
- // Dump serialized WifiLog proto
+ //Dump serialized WifiLog proto
consolidateProto(true);
for (ConnectionEvent event : mConnectionEventList) {
if (mCurrentConnectionEvent != event) {
@@ -945,18 +830,10 @@ public class WifiMetrics {
}
byte[] wifiMetricsProto = WifiMetricsProto.WifiLog.toByteArray(mWifiLogProto);
String metricsProtoDump = Base64.encodeToString(wifiMetricsProto, Base64.DEFAULT);
- if (args.length > 1 && CLEAN_DUMP_ARG.equals(args[1])) {
- // Output metrics proto bytes (base64) and nothing else
- pw.print(metricsProtoDump);
- } else {
- // Tag the start and end of the metrics proto bytes
- pw.println("WifiMetrics:");
- pw.println(metricsProtoDump);
- pw.println("EndWifiMetrics");
- }
+ pw.println(metricsProtoDump);
+ pw.println("EndWifiMetrics");
clear();
} else {
- pw.println("WifiMetrics:");
pw.println("mConnectionEvents:");
for (ConnectionEvent event : mConnectionEventList) {
String eventLine = event.toString();
@@ -971,9 +848,6 @@ public class WifiMetrics {
+ mWifiLogProto.numPersonalNetworks);
pw.println("mWifiLogProto.numEnterpriseNetworks="
+ mWifiLogProto.numEnterpriseNetworks);
- pw.println("mWifiLogProto.numHiddenNetworks=" + mWifiLogProto.numHiddenNetworks);
- pw.println("mWifiLogProto.numPasspointNetworks="
- + mWifiLogProto.numPasspointNetworks);
pw.println("mWifiLogProto.isLocationEnabled=" + mWifiLogProto.isLocationEnabled);
pw.println("mWifiLogProto.isScanningAlwaysEnabled="
+ mWifiLogProto.isScanningAlwaysEnabled);
@@ -1047,8 +921,6 @@ public class WifiMetrics {
+ mWifiLogProto.numLastResortWatchdogTriggersWithBadDhcp);
pw.println("mWifiLogProto.numLastResortWatchdogTriggersWithBadOther="
+ mWifiLogProto.numLastResortWatchdogTriggersWithBadOther);
- pw.println("mWifiLogProto.numLastResortWatchdogSuccesses="
- + mWifiLogProto.numLastResortWatchdogSuccesses);
pw.println("mWifiLogProto.recordDurationSec="
+ ((mClock.elapsedRealtime() / 1000) - mRecordStartTimeSec));
pw.println("mWifiLogProto.rssiPollRssiCount: Printing counts for [" + MIN_RSSI_POLL
@@ -1058,42 +930,6 @@ public class WifiMetrics {
sb.append(mRssiPollCounts.get(i) + " ");
}
pw.println(" " + sb.toString());
- pw.print("mWifiLogProto.alertReasonCounts=");
- sb.setLength(0);
- for (int i = WifiLoggerHal.WIFI_ALERT_REASON_MIN;
- i <= WifiLoggerHal.WIFI_ALERT_REASON_MAX; i++) {
- int count = mWifiAlertReasonCounts.get(i);
- if (count > 0) {
- sb.append("(" + i + "," + count + "),");
- }
- }
- if (sb.length() > 1) {
- sb.setLength(sb.length() - 1); // strip trailing comma
- pw.println(sb.toString());
- } else {
- pw.println("()");
- }
- pw.println("mWifiLogProto.numTotalScanResults="
- + mWifiLogProto.numTotalScanResults);
- pw.println("mWifiLogProto.numOpenNetworkScanResults="
- + mWifiLogProto.numOpenNetworkScanResults);
- pw.println("mWifiLogProto.numPersonalNetworkScanResults="
- + mWifiLogProto.numPersonalNetworkScanResults);
- pw.println("mWifiLogProto.numEnterpriseNetworkScanResults="
- + mWifiLogProto.numEnterpriseNetworkScanResults);
- pw.println("mWifiLogProto.numHiddenNetworkScanResults="
- + mWifiLogProto.numHiddenNetworkScanResults);
- pw.println("mWifiLogProto.numHotspot2R1NetworkScanResults="
- + mWifiLogProto.numHotspot2R1NetworkScanResults);
- pw.println("mWifiLogProto.numHotspot2R2NetworkScanResults="
- + mWifiLogProto.numHotspot2R2NetworkScanResults);
- pw.println("mWifiLogProto.numScans=" + mWifiLogProto.numScans);
- pw.println("mWifiLogProto.WifiScoreCount: [" + MIN_WIFI_SCORE + ", "
- + MAX_WIFI_SCORE + "]");
- for (int i = 0; i <= MAX_WIFI_SCORE; i++) {
- pw.print(mWifiScoreCounts.get(i) + " ");
- }
- pw.print("\n");
}
}
}
@@ -1107,8 +943,6 @@ public class WifiMetrics {
private void consolidateProto(boolean incremental) {
List<WifiMetricsProto.ConnectionEvent> events = new ArrayList<>();
List<WifiMetricsProto.RssiPollCount> rssis = new ArrayList<>();
- List<WifiMetricsProto.AlertReasonCount> alertReasons = new ArrayList<>();
- List<WifiMetricsProto.WifiScoreCount> scores = new ArrayList<>();
synchronized (mLock) {
for (ConnectionEvent event : mConnectionEventList) {
// If this is not incremental, dump full ConnectionEvent list
@@ -1166,29 +1000,6 @@ public class WifiMetrics {
rssis.add(keyVal);
}
mWifiLogProto.rssiPollRssiCount = rssis.toArray(mWifiLogProto.rssiPollRssiCount);
-
- /**
- * Convert the SparseIntArray of alert reasons and counts to the proto's repeated
- * IntKeyVal array.
- */
- for (int i = 0; i < mWifiAlertReasonCounts.size(); i++) {
- WifiMetricsProto.AlertReasonCount keyVal = new WifiMetricsProto.AlertReasonCount();
- keyVal.reason = mWifiAlertReasonCounts.keyAt(i);
- keyVal.count = mWifiAlertReasonCounts.valueAt(i);
- alertReasons.add(keyVal);
- }
- mWifiLogProto.alertReasonCount = alertReasons.toArray(mWifiLogProto.alertReasonCount);
- /**
- * Convert the SparseIntArray of Wifi Score and counts to proto's repeated
- * IntKeyVal array.
- */
- for (int score = 0; score < mWifiScoreCounts.size(); score++) {
- WifiMetricsProto.WifiScoreCount keyVal = new WifiMetricsProto.WifiScoreCount();
- keyVal.score = mWifiScoreCounts.keyAt(score);
- keyVal.count = mWifiScoreCounts.valueAt(score);
- scores.add(keyVal);
- }
- mWifiLogProto.wifiScoreCount = scores.toArray(mWifiLogProto.wifiScoreCount);
}
}
@@ -1205,8 +1016,6 @@ public class WifiMetrics {
mWifiSystemStateEntries.clear();
mRecordStartTimeSec = mClock.elapsedRealtime() / 1000;
mRssiPollCounts.clear();
- mWifiAlertReasonCounts.clear();
- mWifiScoreCounts.clear();
mWifiLogProto.clear();
}
}
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java
index f6931c1..7ed0409 100644
--- a/service/java/com/android/server/wifi/WifiNative.java
+++ b/service/java/com/android/server/wifi/WifiNative.java
@@ -78,7 +78,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.TimeZone;
@@ -1717,19 +1716,6 @@ public class WifiNative {
public int priority;
public byte flags;
public byte auth_bit_field;
-
- @Override
- public boolean equals(Object otherObj) {
- if (this == otherObj) {
- return true;
- } else if (otherObj == null || getClass() != otherObj.getClass()) {
- return false;
- }
- PnoNetwork other = (PnoNetwork) otherObj;
- return ((Objects.equals(ssid, other.ssid)) && (networkId == other.networkId)
- && (priority == other.priority) && (flags == other.flags)
- && (auth_bit_field == other.auth_bit_field));
- }
}
/**
@@ -2207,12 +2193,13 @@ public class WifiNative {
synchronized (sLock) {
if (isHalStarted()) {
if (sRttCmdId != 0) {
- Log.w(TAG, "Last one is still under measurement!");
+ Log.v("TAG", "Last one is still under measurement!");
return false;
} else {
sRttCmdId = getNewCmdIdLocked();
}
sRttEventHandler = handler;
+ Log.v(TAG, "native issue RTT request");
return requestRangeNative(sWlan0Index, sRttCmdId, params);
} else {
return false;
@@ -2231,6 +2218,7 @@ public class WifiNative {
if (cancelRangeRequestNative(sWlan0Index, sRttCmdId, params)) {
sRttEventHandler = null;
+ Log.v(TAG, "RTT cancel Request Successfully");
return true;
} else {
Log.e(TAG, "RTT cancel Request failed");
diff --git a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
index 00fffdb..7ad44c8 100644
--- a/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
+++ b/service/java/com/android/server/wifi/WifiQualifiedNetworkSelector.java
@@ -626,9 +626,9 @@ public class WifiQualifiedNetworkSelector {
mWifiConfigManager.getWifiConfiguration(mWifiInfo.getNetworkId());
}
- // Always get the current BSSID from WifiInfo in case that firmware initiated roaming
- // happened.
- mCurrentBssid = mWifiInfo.getBSSID();
+ if (mCurrentBssid == null) {
+ mCurrentBssid = mWifiInfo.getBSSID();
+ }
if (!forceSelectNetwork && !needQualifiedNetworkSelection(isLinkDebouncing, isConnected,
isDisconnected, isSupplicantTransient)) {
diff --git a/service/java/com/android/server/wifi/WifiScoreReport.java b/service/java/com/android/server/wifi/WifiScoreReport.java
index d32c722..50e28bf 100644
--- a/service/java/com/android/server/wifi/WifiScoreReport.java
+++ b/service/java/com/android/server/wifi/WifiScoreReport.java
@@ -97,8 +97,7 @@ public class WifiScoreReport {
WifiConfigManager wifiConfigManager,
NetworkAgent networkAgent,
WifiScoreReport lastReport,
- int aggressiveHandover,
- WifiMetrics wifiMetrics) {
+ int aggressiveHandover) {
boolean debugLogging = false;
if (wifiConfigManager.mEnableVerboseLogging.get() > 0) {
debugLogging = true;
@@ -371,7 +370,6 @@ public class WifiScoreReport {
networkAgent.sendNetworkScore(score);
}
}
- wifiMetrics.incrementWifiScoreCount(score);
return new WifiScoreReport(sb.toString(), badLinkspeedcount);
}
}
diff --git a/service/java/com/android/server/wifi/WifiStateMachine.java b/service/java/com/android/server/wifi/WifiStateMachine.java
index e343853..180fd82 100644
--- a/service/java/com/android/server/wifi/WifiStateMachine.java
+++ b/service/java/com/android/server/wifi/WifiStateMachine.java
@@ -98,7 +98,6 @@ import android.util.SparseArray;
import android.os.SystemProperties;
import com.android.internal.R;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.util.AsyncChannel;
@@ -552,14 +551,10 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
private WifiScanner mWifiScanner;
- @GuardedBy("mWifiReqCountLock")
- private int mConnectionReqCount = 0;
+ private int mConnectionRequests = 0;
private WifiNetworkFactory mNetworkFactory;
- @GuardedBy("mWifiReqCountLock")
- private int mUntrustedReqCount = 0;
private UntrustedWifiNetworkFactory mUntrustedNetworkFactory;
private WifiNetworkAgent mNetworkAgent;
- private final Object mWifiReqCountLock = new Object();
private String[] mWhiteListedSsids = null;
@@ -2377,13 +2372,6 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
@Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- if (args.length > 1 && WifiMetrics.PROTO_DUMP_ARG.equals(args[0])
- && WifiMetrics.CLEAN_DUMP_ARG.equals(args[1])) {
- // Dump only wifi metrics serialized proto bytes (base64)
- updateWifiMetrics();
- mWifiMetrics.dump(fd, pw, args);
- return;
- }
super.dump(fd, pw, args);
mSupplicantStateTracker.dump(fd, pw, args);
pw.println("mLinkProperties " + mLinkProperties);
@@ -2632,8 +2620,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
sb.append(" known=").append(mNumScanResultsKnown);
sb.append(" got=").append(mNumScanResultsReturned);
sb.append(String.format(" bcn=%d", mRunningBeaconCount));
- sb.append(String.format(" con=%d", mConnectionReqCount));
- sb.append(String.format(" untrustedcn=%d", mUntrustedReqCount));
+ sb.append(String.format(" con=%d", mConnectionRequests));
key = mWifiConfigManager.getLastSelectedConfiguration();
if (key != null) {
sb.append(" last=").append(key);
@@ -4002,33 +3989,23 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
@Override
protected void needNetworkFor(NetworkRequest networkRequest, int score) {
- synchronized (mWifiReqCountLock) {
- if (++mConnectionReqCount == 1) {
- if (mWifiConnectivityManager != null && mUntrustedReqCount == 0) {
- mWifiConnectivityManager.enable(true);
- }
- }
- }
+ ++mConnectionRequests;
}
@Override
protected void releaseNetworkFor(NetworkRequest networkRequest) {
- synchronized (mWifiReqCountLock) {
- if (--mConnectionReqCount == 0) {
- if (mWifiConnectivityManager != null && mUntrustedReqCount == 0) {
- mWifiConnectivityManager.enable(false);
- }
- }
- }
+ --mConnectionRequests;
}
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- pw.println("mConnectionReqCount " + mConnectionReqCount);
+ pw.println("mConnectionRequests " + mConnectionRequests);
}
}
private class UntrustedWifiNetworkFactory extends NetworkFactory {
+ private int mUntrustedReqCount;
+
public UntrustedWifiNetworkFactory(Looper l, Context c, String tag, NetworkCapabilities f) {
super(l, c, tag, f);
}
@@ -4037,14 +4014,9 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
protected void needNetworkFor(NetworkRequest networkRequest, int score) {
if (!networkRequest.networkCapabilities.hasCapability(
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
- synchronized (mWifiReqCountLock) {
- if (++mUntrustedReqCount == 1) {
- if (mWifiConnectivityManager != null) {
- if (mConnectionReqCount == 0) {
- mWifiConnectivityManager.enable(true);
- }
- mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
- }
+ if (++mUntrustedReqCount == 1) {
+ if (mWifiConnectivityManager != null) {
+ mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
}
}
}
@@ -4054,14 +4026,9 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
protected void releaseNetworkFor(NetworkRequest networkRequest) {
if (!networkRequest.networkCapabilities.hasCapability(
NetworkCapabilities.NET_CAPABILITY_TRUSTED)) {
- synchronized (mWifiReqCountLock) {
- if (--mUntrustedReqCount == 0) {
- if (mWifiConnectivityManager != null) {
- mWifiConnectivityManager.setUntrustedConnectionAllowed(false);
- if (mConnectionReqCount == 0) {
- mWifiConnectivityManager.enable(false);
- }
- }
+ if (--mUntrustedReqCount == 0) {
+ if (mWifiConnectivityManager != null) {
+ mWifiConnectivityManager.setUntrustedConnectionAllowed(false);
}
}
}
@@ -4267,9 +4234,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
case CMD_FIRMWARE_ALERT:
if (mWifiLogger != null) {
byte[] buffer = (byte[])message.obj;
- int alertReason = message.arg1;
- mWifiLogger.captureAlertData(alertReason, buffer);
- mWifiMetrics.incrementAlertReasonCount(alertReason);
+ mWifiLogger.captureAlertData(message.arg1, buffer);
}
break;
case CMD_GET_LINK_LAYER_STATS:
@@ -4814,13 +4779,10 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
if (mWifiScanner == null) {
mWifiScanner = mFacade.makeWifiScanner(mContext, getHandler().getLooper());
- synchronized (mWifiReqCountLock) {
- mWifiConnectivityManager = new WifiConnectivityManager(mContext,
- WifiStateMachine.this, mWifiScanner, mWifiConfigManager, mWifiInfo,
- mWifiQualifiedNetworkSelector, mWifiInjector,
- getHandler().getLooper(), hasConnectionRequests());
- mWifiConnectivityManager.setUntrustedConnectionAllowed(mUntrustedReqCount > 0);
- }
+ mWifiConnectivityManager = new WifiConnectivityManager(mContext,
+ WifiStateMachine.this, mWifiScanner, mWifiConfigManager, mWifiInfo,
+ mWifiQualifiedNetworkSelector, mWifiInjector,
+ getHandler().getLooper());
}
mWifiLogger.startLogging(DBG);
@@ -5709,11 +5671,8 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
config, disableOthers, message.sendingUid);
if (!ok) {
messageHandlingStatus = MESSAGE_HANDLING_STATUS_FAIL;
- } else {
- if (disableOthers) {
- mTargetNetworkId = netId;
- }
- mWifiConnectivityManager.forceConnectivityScan();
+ } else if (disableOthers) {
+ mTargetNetworkId = netId;
}
replyToMessage(message, message.what, ok ? SUCCESS : FAILURE);
@@ -6797,8 +6756,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
mWifiConfigManager,
mNetworkAgent,
mWifiScoreReport,
- mAggressiveHandover,
- mWifiMetrics);
+ mAggressiveHandover);
}
sendMessageDelayed(obtainMessage(CMD_RSSI_POLL,
mRssiPollToken, 0), POLL_RSSI_INTERVAL_MSECS);
@@ -7265,6 +7223,8 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
break;
case CMD_UNWANTED_NETWORK:
if (message.arg1 == NETWORK_STATUS_UNWANTED_DISCONNECT) {
+ mWifiConfigManager.handleBadNetworkDisconnectReport(
+ mLastNetworkId, mWifiInfo);
mWifiNative.disconnect();
transitionTo(mDisconnectingState);
} else if (message.arg1 == NETWORK_STATUS_UNWANTED_DISABLE_AUTOJOIN ||
@@ -7409,16 +7369,18 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
config = mWifiConfigManager.getWifiConfiguration(netId);
}
- setTargetBssid(config, bssid);
- mTargetNetworkId = netId;
-
logd("CMD_AUTO_ROAM sup state "
+ mSupplicantStateTracker.getSupplicantStateName()
+ " my state " + getCurrentState().getName()
+ " nid=" + Integer.toString(netId)
+ " config " + config.configKey()
+ + " roam=" + Integer.toString(message.arg2)
+ + " to " + bssid
+ " targetRoamBSSID " + mTargetRoamBSSID);
+ setTargetBssid(config, bssid);
+ mTargetNetworkId = netId;
+
/* Determine if this is a regular roam (between BSSIDs sharing the same SSID),
or a DBDC roam (between 2.4 & 5GHz networks on different SSID's, but with
matching 16 byte BSSID prefixes):
@@ -8289,11 +8251,7 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
* @param bssid BSSID of the network
*/
public void autoConnectToNetwork(int networkId, String bssid) {
- synchronized (mWifiReqCountLock) {
- if (hasConnectionRequests()) {
- sendMessage(CMD_AUTO_CONNECT, networkId, 0, bssid);
- }
- }
+ sendMessage(CMD_AUTO_CONNECT, networkId, 0, bssid);
}
/**
@@ -8344,8 +8302,6 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
int numEnterpriseNetworks = 0;
int numNetworksAddedByUser = 0;
int numNetworksAddedByApps = 0;
- int numHiddenNetworks = 0;
- int numPasspoint = 0;
for (WifiConfiguration config : mWifiConfigManager.getSavedNetworks()) {
if (config.allowedKeyManagement.get(WifiConfiguration.KeyMgmt.NONE)) {
numOpenNetworks++;
@@ -8359,12 +8315,6 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
} else {
numNetworksAddedByApps++;
}
- if (config.hiddenSSID) {
- numHiddenNetworks++;
- }
- if (config.isPasspoint()) {
- numPasspoint++;
- }
}
mWifiMetrics.setNumSavedNetworks(numSavedNetworks);
mWifiMetrics.setNumOpenNetworks(numOpenNetworks);
@@ -8372,8 +8322,17 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
mWifiMetrics.setNumEnterpriseNetworks(numEnterpriseNetworks);
mWifiMetrics.setNumNetworksAddedByUser(numNetworksAddedByUser);
mWifiMetrics.setNumNetworksAddedByApps(numNetworksAddedByApps);
- mWifiMetrics.setNumHiddenNetworks(numHiddenNetworks);
- mWifiMetrics.setNumPasspointNetworks(numPasspoint);
+
+ /* <TODO> decide how to access WifiServiecImpl.isLocationEnabled() or if to do it manually
+ mWifiMetrics.setIsLocationEnabled(Settings.Secure.getInt(
+ mContext.getContentResolver(),
+ Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF)
+ != Settings.Secure.LOCATION_MODE_OFF);
+ */
+
+ /* <TODO> decide how statemachine will access WifiSettingsStore
+ mWifiMetrics.setIsScanningAlwaysEnabled(mSettingsStore.isScanningAlwaysAvailable());
+ */
}
private static String getLinkPropertiesSummary(LinkProperties lp) {
@@ -8472,12 +8431,4 @@ public class WifiStateMachine extends StateMachine implements WifiNative.WifiRss
}
}
}
-
- /**
- * Check if there is any connection request for WiFi network.
- * Note, caller of this helper function must acquire mWifiReqCountLock.
- */
- private boolean hasConnectionRequests() {
- return mConnectionReqCount > 0 || mUntrustedReqCount > 0;
- }
}
diff --git a/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java b/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
index 321254c..402c0a8 100644
--- a/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
+++ b/service/java/com/android/server/wifi/hotspot2/NetworkDetail.java
@@ -59,8 +59,6 @@ public class NetworkDetail {
private final String mSSID;
private final long mHESSID;
private final long mBSSID;
- // True if the SSID is potentially from a hidden network
- private final boolean mIsHiddenSsid;
// BSS Load element:
private final int mStationCount;
@@ -133,7 +131,6 @@ public class NetworkDetail {
mBSSID = Utils.parseMac(bssid);
String ssid = null;
- boolean isHiddenSsid = false;
byte[] ssidOctets = null;
InformationElementUtil.BssLoad bssLoad = new InformationElementUtil.BssLoad();
@@ -239,18 +236,10 @@ public class NetworkDetail {
ssid = new String(ssidOctets, StandardCharsets.ISO_8859_1);
}
}
- isHiddenSsid = true;
- for (byte byteVal : ssidOctets) {
- if (byteVal != 0) {
- isHiddenSsid = false;
- break;
- }
- }
}
mSSID = ssid;
mHESSID = interworking.hessid;
- mIsHiddenSsid = isHiddenSsid;
mStationCount = bssLoad.stationCount;
mChannelUtilization = bssLoad.channelUtilization;
mCapacity = bssLoad.capacity;
@@ -279,9 +268,7 @@ public class NetworkDetail {
}
// If trafficIndicationMap is not valid, mDtimPeriod will be negative
- if (trafficIndicationMap.isValid()) {
- mDtimInterval = trafficIndicationMap.mDtimPeriod;
- }
+ mDtimInterval = trafficIndicationMap.mDtimPeriod;
int maxRateA = 0;
int maxRateB = 0;
@@ -331,7 +318,6 @@ public class NetworkDetail {
private NetworkDetail(NetworkDetail base, Map<Constants.ANQPElementType, ANQPElement> anqpElements) {
mSSID = base.mSSID;
- mIsHiddenSsid = base.mIsHiddenSsid;
mBSSID = base.mBSSID;
mHESSID = base.mHESSID;
mStationCount = base.mStationCount;
@@ -529,28 +515,6 @@ public class NetworkDetail {
return toMACString(mBSSID);
}
- /**
- * Evaluates the ScanResult this NetworkDetail is built from
- * returns true if built from a Beacon Frame
- * returns false if built from a Probe Response
- */
- public boolean isBeaconFrame() {
- // Beacon frames have a 'Traffic Indication Map' Information element
- // Probe Responses do not. This is indicated by a DTIM period > 0
- return mDtimInterval > 0;
- }
-
- /**
- * Evaluates the ScanResult this NetworkDetail is built from
- * returns true if built from a hidden Beacon Frame
- * returns false if not hidden or not a Beacon
- */
- public boolean isHiddenBeaconFrame() {
- // Hidden networks are not 80211 standard, but it is common for a hidden network beacon
- // frame to either send zero-value bytes as the SSID, or to send no bytes at all.
- return isBeaconFrame() && mIsHiddenSsid;
- }
-
public static String toMACString(long mac) {
StringBuilder sb = new StringBuilder();
boolean first = true;
@@ -564,4 +528,5 @@ public class NetworkDetail {
}
return sb.toString();
}
+
}
diff --git a/service/java/com/android/server/wifi/scanner/ChannelHelper.java b/service/java/com/android/server/wifi/scanner/ChannelHelper.java
index acb0ac8..d416812 100644
--- a/service/java/com/android/server/wifi/scanner/ChannelHelper.java
+++ b/service/java/com/android/server/wifi/scanner/ChannelHelper.java
@@ -100,10 +100,6 @@ public abstract class ChannelHelper {
*/
public abstract boolean isEmpty();
/**
- * @return true if the collection contains all available channels
- */
- public abstract boolean isAllChannels();
- /**
* Remove all channels from the collection
*/
public abstract void clear();
diff --git a/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java b/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java
index acddc26..b180da7 100644
--- a/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java
+++ b/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java
@@ -198,12 +198,6 @@ public class KnownBandsChannelHelper extends ChannelHelper {
}
@Override
- public boolean isAllChannels() {
- return getAvailableScanChannels(WifiScanner.WIFI_BAND_BOTH_WITH_DFS).length ==
- mChannels.size();
- }
-
- @Override
public void clear() {
mAllBands = 0;
mExactBands = 0;
diff --git a/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java b/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
index 4f8373b..7b16020 100644
--- a/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
+++ b/service/java/com/android/server/wifi/scanner/NoBandChannelHelper.java
@@ -112,11 +112,6 @@ public class NoBandChannelHelper extends ChannelHelper {
}
@Override
- public boolean isAllChannels() {
- return mAllChannels;
- }
-
- @Override
public void clear() {
mAllChannels = false;
mChannels.clear();
diff --git a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
index ac5db5a..ab013b1 100644
--- a/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/SupplicantWifiScannerImpl.java
@@ -330,11 +330,6 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
processPendingScans();
}
- private boolean isDifferentPnoScanSettings(LastScanSettings newScanSettings) {
- return (mLastScanSettings == null || !Arrays.equals(
- newScanSettings.pnoNetworkList, mLastScanSettings.pnoNetworkList));
- }
-
private void processPendingScans() {
synchronized (mSettingsLock) {
// Wait for the active scan result to come back to reschedule other scans,
@@ -465,16 +460,8 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
// TODO(b/27769665) background scans should be failed too if scans fail enough
}
} else if (isHwPnoScanRequired()) {
- newScanSettings.setHwPnoScan(mPnoSettings.networkList, mPnoEventHandler);
- boolean status;
- // If the PNO network list has changed from the previous request, ensure that
- // we bypass the debounce logic and restart PNO scan.
- if (isDifferentPnoScanSettings(newScanSettings)) {
- status = restartHwPnoScan();
- } else {
- status = startHwPnoScan();
- }
- if (status) {
+ newScanSettings.setHwPnoScan(mPnoEventHandler);
+ if (startHwPnoScan()) {
mLastScanSettings = newScanSettings;
} else {
Log.e(TAG, "Failed to start PNO scan");
@@ -638,8 +625,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
}
}
Collections.sort(singleScanResults, SCAN_RESULT_SORT_COMPARATOR);
- mLatestSingleScanResult = new WifiScanner.ScanData(mLastScanSettings.scanId, 0, 0,
- mLastScanSettings.singleScanFreqs.isAllChannels(),
+ mLatestSingleScanResult = new WifiScanner.ScanData(mLastScanSettings.scanId, 0,
singleScanResults.toArray(new ScanResult[singleScanResults.size()]));
mLastScanSettings.singleScanEventHandler
.onScanStatus(WifiNative.WIFI_SCAN_RESULTS_AVAILABLE);
@@ -709,11 +695,6 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
mHwPnoDebouncer.forceStopPnoScan();
}
- private boolean restartHwPnoScan() {
- mHwPnoDebouncer.forceStopPnoScan();
- return mHwPnoDebouncer.startPnoScan(mHwPnoDebouncerListener);
- }
-
/**
* Hw Pno Scan is required only for disconnected PNO when the device supports it.
* @param isConnectedPno Whether this is connected PNO vs disconnected PNO.
@@ -845,14 +826,10 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
}
public boolean hwPnoScanActive = false;
- public WifiNative.PnoNetwork[] pnoNetworkList;
public WifiNative.PnoEventHandler pnoScanEventHandler;
- public void setHwPnoScan(
- WifiNative.PnoNetwork[] pnoNetworkList,
- WifiNative.PnoEventHandler pnoScanEventHandler) {
+ public void setHwPnoScan(WifiNative.PnoEventHandler pnoScanEventHandler) {
hwPnoScanActive = true;
- this.pnoNetworkList = pnoNetworkList;
this.pnoScanEventHandler = pnoScanEventHandler;
}
}
@@ -1073,6 +1050,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
if (DBG) Log.d(TAG, "PNO state is already " + enable);
return true;
}
+
mLastPnoChangeTimeStamp = mClock.elapsedRealtime();
if (mWifiNative.setPnoScan(enable)) {
Log.d(TAG, "Changed PNO state from " + mCurrentPnoState + " to " + enable);
@@ -1080,7 +1058,6 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
return true;
} else {
Log.e(TAG, "PNO state change to " + enable + " failed");
- mCurrentPnoState = false;
return false;
}
}
@@ -1148,13 +1125,15 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
* scan immediately.
*/
public void forceStopPnoScan() {
- if (DBG) Log.d(TAG, "Force stopping Pno scan");
- // Cancel the debounce timer and stop PNO scan.
- if (mWaitForTimer) {
- mAlarmManager.cancel(mAlarmListener);
- mWaitForTimer = false;
+ if (mCurrentPnoState) {
+ if (DBG) Log.d(TAG, "Force stopping Pno scan");
+ // Cancel the debounce timer and stop PNO scan.
+ if (mWaitForTimer) {
+ mAlarmManager.cancel(mAlarmListener);
+ mWaitForTimer = false;
+ }
+ updatePnoState(false);
}
- updatePnoState(false);
}
}
}
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
index 9f8fb2f..6ae2237 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
@@ -164,9 +164,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
}
case AsyncChannel.CMD_CHANNEL_DISCONNECTED: {
ExternalClientInfo client = (ExternalClientInfo) mClients.get(msg.replyTo);
- if (client != null && msg.arg1 != AsyncChannel.STATUS_SEND_UNSUCCESSFUL
- && msg.arg1
- != AsyncChannel.STATUS_FULL_CONNECTION_REFUSED_ALREADY_CONNECTED) {
+ if (client != null) {
localLog("client disconnected: " + client + ", reason: " + msg.arg1);
client.cleanup();
}
diff --git a/service/java/com/android/server/wifi/util/InformationElementUtil.java b/service/java/com/android/server/wifi/util/InformationElementUtil.java
index d3e2fea..6e6dfcc 100644
--- a/service/java/com/android/server/wifi/util/InformationElementUtil.java
+++ b/service/java/com/android/server/wifi/util/InformationElementUtil.java
@@ -600,7 +600,7 @@ public class InformationElementUtil {
} catch (BufferUnderflowException e) {
return;
}
- if (mLength <= MAX_TIM_LENGTH && mDtimPeriod > 0) {
+ if (mLength <= MAX_TIM_LENGTH) {
mValid = true;
}
}
diff --git a/service/jni/com_android_server_wifi_WifiNative.cpp b/service/jni/com_android_server_wifi_WifiNative.cpp
index 7e70d95..e33512f 100644
--- a/service/jni/com_android_server_wifi_WifiNative.cpp
+++ b/service/jni/com_android_server_wifi_WifiNative.cpp
@@ -854,13 +854,6 @@ static jboolean android_net_wifi_setHotlist(
return false;
}
- if (params.num_bssid >
- static_cast<int>(sizeof(params.ap) / sizeof(params.ap[0]))) {
- ALOGE("setHotlist array length is too long");
- android_errorWriteLog(0x534e4554, "31856351");
- return false;
- }
-
for (int i = 0; i < params.num_bssid; i++) {
JNIObject<jobject> objAp = helper.getObjectArrayElement(array, i);
@@ -1187,7 +1180,7 @@ static void onRttResults(wifi_request_id id, unsigned num_results, wifi_rtt_resu
JNIHelper helper(mVM);
- if (DBG) ALOGD("onRttResults called, vm = %p, obj = %p", mVM, mCls);
+ ALOGD("onRttResults called, vm = %p, obj = %p", mVM, mCls);
JNIObject<jobjectArray> rttResults = helper.newObjectArray(
num_results, "android/net/wifi/RttManager$RttResult", NULL);
@@ -1234,12 +1227,14 @@ static void onRttResults(wifi_request_id id, unsigned num_results, wifi_rtt_resu
JNIObject<jobject> LCI = helper.createObject(
"android/net/wifi/RttManager$WifiInformationElement");
if (result->LCI != NULL && result->LCI->len > 0) {
+ ALOGD("Add LCI in result");
helper.setByteField(LCI, "id", result->LCI->id);
JNIObject<jbyteArray> elements = helper.newByteArray(result->LCI->len);
jbyte *bytes = (jbyte *)&(result->LCI->data[0]);
helper.setByteArrayRegion(elements, 0, result->LCI->len, bytes);
helper.setObjectField(LCI, "data", "[B", elements);
} else {
+ ALOGD("No LCI in result");
helper.setByteField(LCI, "id", (byte)(0xff));
}
helper.setObjectField(rttResult, "LCI",
@@ -1248,12 +1243,14 @@ static void onRttResults(wifi_request_id id, unsigned num_results, wifi_rtt_resu
JNIObject<jobject> LCR = helper.createObject(
"android/net/wifi/RttManager$WifiInformationElement");
if (result->LCR != NULL && result->LCR->len > 0) {
+ ALOGD("Add LCR in result");
helper.setByteField(LCR, "id", result->LCR->id);
JNIObject<jbyteArray> elements = helper.newByteArray(result->LCI->len);
jbyte *bytes = (jbyte *)&(result->LCR->data[0]);
helper.setByteArrayRegion(elements, 0, result->LCI->len, bytes);
helper.setObjectField(LCR, "data", "[B", elements);
} else {
+ ALOGD("No LCR in result");
helper.setByteField(LCR, "id", (byte)(0xff));
}
helper.setObjectField(rttResult, "LCR",
@@ -1274,7 +1271,7 @@ static jboolean android_net_wifi_requestRange(
JNIHelper helper(env);
wifi_interface_handle handle = getIfaceHandle(helper, cls, iface);
- if (DBG) ALOGD("sending rtt request [%d] = %p", id, handle);
+ ALOGD("sending rtt request [%d] = %p", id, handle);
if (params == NULL) {
ALOGE("ranging params are empty");
return false;
@@ -1292,7 +1289,7 @@ static jboolean android_net_wifi_requestRange(
JNIObject<jobject> param = helper.getObjectArrayElement((jobjectArray)params, i);
if (param == NULL) {
- ALOGW("could not get element %d", i);
+ ALOGD("could not get element %d", i);
continue;
}
@@ -1317,6 +1314,18 @@ static jboolean android_net_wifi_requestRange(
config.burst_duration = (unsigned) helper.getIntField(param, "burstTimeout");
config.preamble = (wifi_rtt_preamble) helper.getIntField(param, "preamble");
config.bw = (wifi_rtt_bw) helper.getIntField(param, "bandwidth");
+
+ ALOGD("RTT request destination %d: type is %d, peer is %d, bw is %d, center_freq is %d ", i,
+ config.type,config.peer, config.channel.width, config.channel.center_freq);
+ ALOGD("center_freq0 is %d, center_freq1 is %d, num_burst is %d,interval is %d",
+ config.channel.center_freq0, config.channel.center_freq1, config.num_burst,
+ config.burst_period);
+ ALOGD("frames_per_burst is %d, retries of measurement frame is %d, retries_per_ftmr is %d",
+ config.num_frames_per_burst, config.num_retries_per_rtt_frame,
+ config.num_retries_per_ftmr);
+ ALOGD("LCI_requestis %d, LCR_request is %d, burst_timeout is %d, preamble is %d, bw is %d",
+ config.LCI_request, config.LCR_request, config.burst_duration, config.preamble,
+ config.bw);
}
wifi_rtt_event_handler handler;
@@ -1330,7 +1339,7 @@ static jboolean android_net_wifi_cancelRange(
JNIHelper helper(env);
wifi_interface_handle handle = getIfaceHandle(helper, cls, iface);
- if (DBG) ALOGD("cancelling rtt request [%d] = %p", id, handle);
+ ALOGD("cancelling rtt request [%d] = %p", id, handle);
if (params == NULL) {
ALOGE("ranging params are empty");
@@ -1349,7 +1358,7 @@ static jboolean android_net_wifi_cancelRange(
JNIObject<jobject> param = helper.getObjectArrayElement(params, i);
if (param == NULL) {
- ALOGW("could not get element %d", i);
+ ALOGD("could not get element %d", i);
continue;
}
diff --git a/service/proto/wifi.proto b/service/proto/wifi.proto
index 8128ec1..3b0e854 100644
--- a/service/proto/wifi.proto
+++ b/service/proto/wifi.proto
@@ -189,46 +189,6 @@ message WifiLog {
// Counts the occurrences of each individual RSSI poll level
repeated RssiPollCount rssi_poll_rssi_count = 35;
-
- // Total number of times WiFi connected immediately after a Last Resort Watchdog trigger,
- // without new networks becoming available.
- optional int32 num_last_resort_watchdog_successes = 36;
-
- // Counts the occurrences of each alert reason.
- repeated AlertReasonCount alert_reason_count = 47;
-
- // Total number of saved hidden networks
- optional int32 num_hidden_networks = 37;
-
- // Total number of saved passpoint / hotspot 2.0 networks
- optional int32 num_passpoint_networks = 38;
-
- // Total number of scan results
- optional int32 num_total_scan_results = 39;
-
- // Total number of scan results for open networks
- optional int32 num_open_network_scan_results = 40;
-
- // Total number of scan results for personal networks
- optional int32 num_personal_network_scan_results = 41;
-
- // Total number of scan results for enterprise networks
- optional int32 num_enterprise_network_scan_results = 42;
-
- // Total number of scan results for hidden networks
- optional int32 num_hidden_network_scan_results = 43;
-
- // Total number of scan results for hotspot 2.0 r1 networks
- optional int32 num_hotspot2_r1_network_scan_results = 44;
-
- // Total number of scan results for hotspot 2.0 r2 networks
- optional int32 num_hotspot2_r2_network_scan_results = 45;
-
- // Total number of scans handled by framework (oneshot or otherwise)
- optional int32 num_scans = 46;
-
- // Counts the occurrences of each Wifi score
- repeated WifiScoreCount wifi_score_count = 48;
}
// Information that gets logged for every WiFi connection.
@@ -300,7 +260,7 @@ message RouterFingerPrint {
// Authentication scheme of the router.
optional Auth authentication = 4;
- // If the router is hidden.
+ // If the router is hidded.
optional bool hidden = 5;
// Channel information.
@@ -308,9 +268,6 @@ message RouterFingerPrint {
// whether ipv6 is supported.
optional bool supports_ipv6 = 7;
-
- // If the router is a passpoint / hotspot 2.0 network
- optional bool passpoint = 8;
}
message ConnectionEvent {
@@ -392,21 +349,3 @@ message RssiPollCount {
// Number of RSSI polls with 'rssi'
optional int32 count = 2;
}
-
-// Number of occurrences of a specific alert reason value
-message AlertReasonCount {
- // Alert reason
- optional int32 reason = 1;
-
- // Number of alerts with |reason|.
- optional int32 count = 2;
-}
-
-// Counts the number of instances of a specific Wifi Score calculated by WifiScoreReport
-message WifiScoreCount {
- // Wifi Score
- optional int32 score = 1;
-
- // Number of Wifi score reports with this score
- optional int32 count = 2;
-}
diff --git a/tests/wifitests/src/com/android/server/wifi/ScanResults.java b/tests/wifitests/src/com/android/server/wifi/ScanResults.java
index fc53270..1609020 100644
--- a/tests/wifitests/src/com/android/server/wifi/ScanResults.java
+++ b/tests/wifitests/src/com/android/server/wifi/ScanResults.java
@@ -138,29 +138,21 @@ public class ScanResults {
* @see #generateNativeResults for more details on how results are generated
*/
public static ScanResults create(int id, int... freqs) {
- return create(id, generateNativeResults(id, freqs));
- }
- public static ScanResults create(int id, boolean allChannelsScanned, int... freqs) {
- return create(id, allChannelsScanned, generateNativeResults(id, freqs));
+ return new ScanResults(id, -1, generateNativeResults(id, freqs));
}
/**
* Create a ScanResults with no IE information.
*/
public static ScanResults createWithNoIE(int id, int... freqs) {
- return create(id, generateNativeResults(false, id, freqs));
+ return new ScanResults(id, -1, generateNativeResults(false, id, freqs));
}
/**
* Create a ScanResults with the given ScanDetails
*/
public static ScanResults create(int id, ScanDetail... nativeResults) {
- return new ScanResults(id, false, -1, nativeResults);
- }
-
- public static ScanResults create(int id, boolean allChannelsScanned,
- ScanDetail... nativeResults) {
- return new ScanResults(id, allChannelsScanned, -1, nativeResults);
+ return new ScanResults(id, -1, nativeResults);
}
/**
@@ -170,11 +162,10 @@ public class ScanResults {
*/
public static ScanResults createOverflowing(int id, int maxResults,
ScanDetail... nativeResults) {
- return new ScanResults(id, false, maxResults, nativeResults);
+ return new ScanResults(id, maxResults, nativeResults);
}
- private ScanResults(int id, boolean allChannelsScanned, int maxResults,
- ScanDetail... nativeResults) {
+ private ScanResults(int id, int maxResults, ScanDetail... nativeResults) {
mScanResults = new ScanResult[nativeResults.length];
for (int i = 0; i < nativeResults.length; ++i) {
mScanDetails.add(nativeResults[i]);
@@ -182,13 +173,13 @@ public class ScanResults {
}
ScanResult[] sortedScanResults = Arrays.copyOf(mScanResults, mScanResults.length);
Arrays.sort(sortedScanResults, SCAN_RESULT_RSSI_COMPARATOR);
- mRawScanData = new ScanData(id, 0, 0, allChannelsScanned, sortedScanResults);
+ mRawScanData = new ScanData(id, 0, sortedScanResults);
if (maxResults == -1) {
mScanData = mRawScanData;
} else {
ScanResult[] reducedScanResults = Arrays.copyOf(sortedScanResults,
Math.min(sortedScanResults.length, maxResults));
- mScanData = new ScanData(id, 0, 0, allChannelsScanned, reducedScanResults);
+ mScanData = new ScanData(id, 0, reducedScanResults);
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java b/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java
index 7a1bdd2..8228118 100644
--- a/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java
+++ b/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java
@@ -217,7 +217,7 @@ public class ScanTestUtil {
for (int i = 0; i < freqs.length; ++i) {
results[i] = createScanResult(freqs[i]);
}
- return new ScanData(0, 0, bucketsScanned, false, results);
+ return new ScanData(0, 0, bucketsScanned, results);
}
public static ScanData[] createScanDatas(int[][] freqs, int[] bucketsScanned) {
@@ -272,8 +272,6 @@ public class ScanTestUtil {
assertNotNull(prefix + "actual ScanData was null", actual);
assertEquals(prefix + "id", expected.getId(), actual.getId());
assertEquals(prefix + "flags", expected.getFlags(), actual.getFlags());
- assertEquals(prefix + "all channels", expected.isAllChannelsScanned(),
- actual.isAllChannelsScanned());
assertScanResultsEquals(prefix, expected.getResults(), actual.getResults());
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
index 281ffa1..022997d 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityManagerTest.java
@@ -33,7 +33,6 @@ import android.net.wifi.WifiManager;
import android.net.wifi.WifiScanner;
import android.net.wifi.WifiScanner.PnoScanListener;
import android.net.wifi.WifiScanner.PnoSettings;
-import android.net.wifi.WifiScanner.ScanData;
import android.net.wifi.WifiScanner.ScanListener;
import android.net.wifi.WifiScanner.ScanSettings;
import android.net.wifi.WifiSsid;
@@ -72,12 +71,11 @@ public class WifiConnectivityManagerTest {
mWifiStateMachine = mockWifiStateMachine();
mWifiConfigManager = mockWifiConfigManager();
mWifiInfo = getWifiInfo();
- mScanData = mockScanData();
mWifiScanner = mockWifiScanner();
mWifiQNS = mockWifiQualifiedNetworkSelector();
mWifiConnectivityManager = new WifiConnectivityManager(mContext, mWifiStateMachine,
mWifiScanner, mWifiConfigManager, mWifiInfo, mWifiQNS, mWifiInjector,
- mLooper.getLooper(), true);
+ mLooper.getLooper());
mWifiConnectivityManager.setWifiEnabled(true);
when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
@@ -98,7 +96,6 @@ public class WifiConnectivityManagerTest {
private WifiQualifiedNetworkSelector mWifiQNS;
private WifiStateMachine mWifiStateMachine;
private WifiScanner mWifiScanner;
- private ScanData mScanData;
private WifiConfigManager mWifiConfigManager;
private WifiInfo mWifiInfo;
private Clock mClock = mock(Clock.class);
@@ -131,14 +128,6 @@ public class WifiConnectivityManagerTest {
return context;
}
- ScanData mockScanData() {
- ScanData scanData = mock(ScanData.class);
-
- when(scanData.isAllChannelsScanned()).thenReturn(true);
-
- return scanData;
- }
-
WifiScanner mockWifiScanner() {
WifiScanner scanner = mock(WifiScanner.class);
ArgumentCaptor<ScanListener> allSingleScanListenerCaptor =
@@ -146,8 +135,9 @@ public class WifiConnectivityManagerTest {
doNothing().when(scanner).registerScanListener(allSingleScanListenerCaptor.capture());
- ScanData[] scanDatas = new ScanData[1];
- scanDatas[0] = mScanData;
+ // dummy scan results. QNS PeriodicScanListener bulids scanDetails from
+ // the fullScanResult and doesn't really use results
+ final WifiScanner.ScanData[] scanDatas = new WifiScanner.ScanData[1];
// do a synchronous answer for the ScanListener callbacks
doAnswer(new AnswerWithArguments() {
@@ -766,9 +756,8 @@ public class WifiConnectivityManagerTest {
currentTimeStamp += 2000;
when(mClock.elapsedRealtime()).thenReturn(currentTimeStamp);
- // Allow untrusted networks so WifiConnectivityManager starts a periodic scan
- // immediately.
- mWifiConnectivityManager.setUntrustedConnectionAllowed(true);
+ // Force a connectivity scan
+ mWifiConnectivityManager.forceConnectivityScan();
// Get the second periodic scan actual time stamp. Note, this scan is not
// started from the AlarmManager.
@@ -955,41 +944,4 @@ public class WifiConnectivityManagerTest {
verify(mWifiStateMachine).autoConnectToNetwork(
CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
}
-
- /**
- * Verify that a forced connectivity scan waits for full band scan
- * results.
- *
- * Expected behavior: WifiConnectivityManager doesn't invoke
- * WifiStateMachine.autoConnectToNetwork() when full band scan
- * results are not available.
- */
- @Test
- public void waitForFullBandScanResults() {
- // Set WiFi to connected state.
- mWifiConnectivityManager.handleConnectionStateChanged(
- WifiConnectivityManager.WIFI_STATE_CONNECTED);
-
- // Set up as partial scan results.
- when(mScanData.isAllChannelsScanned()).thenReturn(false);
-
- // Force a connectivity scan which enables WifiConnectivityManager
- // to wait for full band scan results.
- mWifiConnectivityManager.forceConnectivityScan();
-
- // No roaming because no full band scan results.
- verify(mWifiStateMachine, times(0)).autoConnectToNetwork(
- CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
-
- // Set up as full band scan results.
- when(mScanData.isAllChannelsScanned()).thenReturn(true);
-
- // Force a connectivity scan which enables WifiConnectivityManager
- // to wait for full band scan results.
- mWifiConnectivityManager.forceConnectivityScan();
-
- // Roaming attempt because full band scan results are available.
- verify(mWifiStateMachine).autoConnectToNetwork(
- CANDIDATE_NETWORK_ID, CANDIDATE_BSSID);
- }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiLastResortWatchdogTest.java b/tests/wifitests/src/com/android/server/wifi/WifiLastResortWatchdogTest.java
index 08163e7..237fc66 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiLastResortWatchdogTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiLastResortWatchdogTest.java
@@ -1440,7 +1440,7 @@ public class WifiLastResortWatchdogTest {
int[] levels = {-60, -86, -50, -62, -60};
boolean[] isEphemeral = {false, false, false, false, false};
boolean[] hasEverConnected = {true, false, false, false, false};
- // Buffer potential candidates 1,2,3,4 & 5
+ // Buffer potential candidates 1,2,3 & 4
List<Pair<ScanDetail, WifiConfiguration>> candidates = createFilteredQnsCandidates(ssids,
bssids, frequencies, caps, levels, isEphemeral, hasEverConnected);
mLastResortWatchdog.updateAvailableNetworks(candidates);
@@ -1450,7 +1450,7 @@ public class WifiLastResortWatchdogTest {
assertFailureCountEquals(bssids[i], 0, 0, 0);
}
- //Increment failure counts
+ //Increment failure count for the first test network ssid & bssid
for (int i = 0; i < WifiLastResortWatchdog.FAILURE_THRESHOLD; i++) {
mLastResortWatchdog.noteConnectionFailureAndTriggerIfNeeded(
ssids[1], bssids[1], WifiLastResortWatchdog.FAILURE_CODE_AUTHENTICATION);
@@ -1478,58 +1478,6 @@ public class WifiLastResortWatchdogTest {
verify(mWifiMetrics, times(1)).incrementNumLastResortWatchdogTriggersWithBadAssociation();
verify(mWifiMetrics, times(1)).addCountToNumLastResortWatchdogBadDhcpNetworksTotal(3);
verify(mWifiMetrics, times(1)).incrementNumLastResortWatchdogTriggersWithBadDhcp();
-
- // Simulate wifi connecting after triggering
- mLastResortWatchdog.connectedStateTransition(true);
-
- // Verify that WifiMetrics counted this as a Watchdog success
- verify(mWifiMetrics, times(1)).incrementNumLastResortWatchdogSuccesses();
-
- // Simulate wifi disconnecting
- mLastResortWatchdog.connectedStateTransition(false);
-
- // Verify that WifiMetrics has still only counted one success
- verify(mWifiMetrics, times(1)).incrementNumLastResortWatchdogSuccesses();
-
- // Remove the fifth network from candidates
- candidates = createFilteredQnsCandidates(Arrays.copyOfRange(mSsids, 0, 4),
- Arrays.copyOfRange(mBssids, 0, 4),
- Arrays.copyOfRange(mFrequencies, 0, 4),
- Arrays.copyOfRange(mCaps, 0, 4),
- Arrays.copyOfRange(mLevels, 0, 4),
- Arrays.copyOfRange(mIsEphemeral, 0, 4));
-
- // Age out the fifth network
- for (int i = 0; i < WifiLastResortWatchdog.MAX_BSSID_AGE; i++) {
- mLastResortWatchdog.updateAvailableNetworks(candidates);
- }
-
- //Increment failure counts
- for (int i = 0; i < WifiLastResortWatchdog.FAILURE_THRESHOLD; i++) {
- mLastResortWatchdog.noteConnectionFailureAndTriggerIfNeeded(
- ssids[1], bssids[1], WifiLastResortWatchdog.FAILURE_CODE_AUTHENTICATION);
- mLastResortWatchdog.noteConnectionFailureAndTriggerIfNeeded(
- ssids[2], bssids[2], WifiLastResortWatchdog.FAILURE_CODE_DHCP);
- mLastResortWatchdog.noteConnectionFailureAndTriggerIfNeeded(
- ssids[3], bssids[3], WifiLastResortWatchdog.FAILURE_CODE_DHCP);
- mLastResortWatchdog.noteConnectionFailureAndTriggerIfNeeded(
- ssids[0], bssids[0], WifiLastResortWatchdog.FAILURE_CODE_ASSOCIATION);
- }
-
- // Add network #5 back into the candidates
- candidates = createFilteredQnsCandidates(ssids,
- bssids, frequencies, caps, levels, isEphemeral, hasEverConnected);
-
- // LastResortWatchdog should reactivate because there is a new network (#5) available,
- // Not because it was successful
- mLastResortWatchdog.updateAvailableNetworks(candidates);
-
- // Simulate wifi connecting
- mLastResortWatchdog.connectedStateTransition(true);
-
- // Verify that WifiMetrics did not count another success, as the connection could be due
- // to the newly available network #5
- verify(mWifiMetrics, times(1)).incrementNumLastResortWatchdogSuccesses();
}
/**
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
index 15a5327..011682b 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
@@ -19,7 +19,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;
-import android.net.NetworkAgent;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.test.suitebuilder.annotation.SmallTest;
@@ -34,8 +33,6 @@ import org.mockito.MockitoAnnotations;
import java.io.ByteArrayOutputStream;
import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -107,51 +104,15 @@ public class WifiMetricsTest {
mDeserializedWifiMetrics = WifiMetricsProto.WifiLog.parseFrom(protoBytes);
}
- /**
- * Gets the 'clean dump' proto bytes from mWifiMetrics & deserializes it into
- * mDeserializedWifiMetrics
- */
- public void cleanDumpProtoAndDeserialize() throws Exception {
+ @Test
+ public void dumpHumanReadable() throws Exception {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(stream);
String[] args = new String[0];
-
- when(mClock.elapsedRealtime()).thenReturn(TEST_RECORD_DURATION_MILLIS);
- //Test proto dump, by passing in proto arg option
- args = new String[]{WifiMetrics.PROTO_DUMP_ARG, WifiMetrics.CLEAN_DUMP_ARG};
mWifiMetrics.dump(null, writer, args);
writer.flush();
- String protoByteString = stream.toString();
- byte[] protoBytes = Base64.decode(protoByteString, Base64.DEFAULT);
- mDeserializedWifiMetrics = WifiMetricsProto.WifiLog.parseFrom(protoBytes);
- }
-
- /** Verifies that dump() includes the expected header */
- @Test
- public void stateDumpIncludesHeader() throws Exception {
- assertStringContains(getStateDump(), "WifiMetrics");
- }
-
- /** Verifies that dump() includes correct alert count when there are no alerts. */
- @Test
- public void stateDumpAlertCountIsCorrectWithNoAlerts() throws Exception {
- assertStringContains(getStateDump(), "mWifiLogProto.alertReasonCounts=()");
- }
-
- /** Verifies that dump() includes correct alert count when there is one alert. */
- @Test
- public void stateDumpAlertCountIsCorrectWithOneAlert() throws Exception {
- mWifiMetrics.incrementAlertReasonCount(1);
- assertStringContains(getStateDump(), "mWifiLogProto.alertReasonCounts=(1,1)");
- }
-
- /** Verifies that dump() includes correct alert count when there are multiple alerts. */
- @Test
- public void stateDumpAlertCountIsCorrectWithMultipleAlerts() throws Exception {
- mWifiMetrics.incrementAlertReasonCount(1);
- mWifiMetrics.incrementAlertReasonCount(1);
- mWifiMetrics.incrementAlertReasonCount(16);
- assertStringContains(getStateDump(), "mWifiLogProto.alertReasonCounts=(1,2),(16,1)");
+ assertTrue("stream.toString().contains(\"WifiMetrics\")",
+ stream.toString().contains("WifiMetrics"));
}
@Test
@@ -165,8 +126,6 @@ public class WifiMetricsTest {
private static final int NUM_OPEN_NETWORKS = 2;
private static final int NUM_PERSONAL_NETWORKS = 3;
private static final int NUM_ENTERPRISE_NETWORKS = 5;
- private static final int NUM_HIDDEN_NETWORKS = 3;
- private static final int NUM_PASSPOINT_NETWORKS = 4;
private static final boolean TEST_VAL_IS_LOCATION_ENABLED = true;
private static final boolean IS_SCANNING_ALWAYS_ENABLED = true;
private static final int NUM_NEWTORKS_ADDED_BY_USER = 13;
@@ -195,53 +154,8 @@ public class WifiMetricsTest {
private static final int NUM_LAST_RESORT_WATCHDOG_TRIGGERS_WITH_BAD_AUTHENTICATION = 8;
private static final int NUM_LAST_RESORT_WATCHDOG_TRIGGERS_WITH_BAD_DHCP = 9;
private static final int NUM_LAST_RESORT_WATCHDOG_TRIGGERS_WITH_BAD_OTHER = 10;
- private static final int NUM_LAST_RESORT_WATCHDOG_SUCCESSES = 5;
private static final int NUM_RSSI_LEVELS_TO_INCREMENT = 20;
private static final int FIRST_RSSI_LEVEL = -80;
- private static final int NUM_OPEN_NETWORK_SCAN_RESULTS = 1;
- private static final int NUM_PERSONAL_NETWORK_SCAN_RESULTS = 4;
- private static final int NUM_ENTERPRISE_NETWORK_SCAN_RESULTS = 3;
- private static final int NUM_HIDDEN_NETWORK_SCAN_RESULTS = 1;
- private static final int NUM_HOTSPOT2_R1_NETWORK_SCAN_RESULTS = 1;
- private static final int NUM_HOTSPOT2_R2_NETWORK_SCAN_RESULTS = 2;
- private static final int NUM_SCANS = 5;
- private static final int NUM_TOTAL_SCAN_RESULTS = 8;
- private static final int MIN_RSSI_LEVEL = -127;
- private static final int MAX_RSSI_LEVEL = 0;
- private static final int WIFI_SCORE_RANGE_MIN = 0;
- private static final int NUM_WIFI_SCORES_TO_INCREMENT = 20;
- private static final int WIFI_SCORE_RANGE_MAX = 60;
- private static final int NUM_OUT_OF_BOUND_ENTRIES = 10;
-
- private ScanDetail buildMockScanDetail(boolean hidden, NetworkDetail.HSRelease hSRelease,
- String capabilities) {
- ScanDetail mockScanDetail = mock(ScanDetail.class);
- NetworkDetail mockNetworkDetail = mock(NetworkDetail.class);
- ScanResult mockScanResult = mock(ScanResult.class);
- when(mockScanDetail.getNetworkDetail()).thenReturn(mockNetworkDetail);
- when(mockScanDetail.getScanResult()).thenReturn(mockScanResult);
- when(mockNetworkDetail.isHiddenBeaconFrame()).thenReturn(hidden);
- when(mockNetworkDetail.getHSRelease()).thenReturn(hSRelease);
- mockScanResult.capabilities = capabilities;
- return mockScanDetail;
- }
-
- private List<ScanDetail> buildMockScanDetailList() {
- List<ScanDetail> mockScanDetails = new ArrayList<ScanDetail>();
- mockScanDetails.add(buildMockScanDetail(true, null, "[ESS]"));
- mockScanDetails.add(buildMockScanDetail(false, null, "[WPA2-PSK-CCMP][ESS]"));
- mockScanDetails.add(buildMockScanDetail(false, null, "[WPA-PSK-CCMP]"));
- mockScanDetails.add(buildMockScanDetail(false, null, "[WPA-PSK-CCMP]"));
- mockScanDetails.add(buildMockScanDetail(false, null, "[WEP]"));
- mockScanDetails.add(buildMockScanDetail(false, NetworkDetail.HSRelease.R2,
- "[WPA-EAP-CCMP]"));
- mockScanDetails.add(buildMockScanDetail(false, NetworkDetail.HSRelease.R2,
- "[WPA2-EAP+FT/EAP-CCMP]"));
- mockScanDetails.add(buildMockScanDetail(false, NetworkDetail.HSRelease.R1,
- "[WPA-EAP-CCMP]"));
- return mockScanDetails;
- }
-
/**
* Set simple metrics, increment others
*/
@@ -250,8 +164,6 @@ public class WifiMetricsTest {
mWifiMetrics.setNumOpenNetworks(NUM_OPEN_NETWORKS);
mWifiMetrics.setNumPersonalNetworks(NUM_PERSONAL_NETWORKS);
mWifiMetrics.setNumEnterpriseNetworks(NUM_ENTERPRISE_NETWORKS);
- mWifiMetrics.setNumHiddenNetworks(NUM_HIDDEN_NETWORKS);
- mWifiMetrics.setNumPasspointNetworks(NUM_PASSPOINT_NETWORKS);
mWifiMetrics.setNumNetworksAddedByUser(NUM_NEWTORKS_ADDED_BY_USER);
mWifiMetrics.setNumNetworksAddedByApps(NUM_NEWTORKS_ADDED_BY_APPS);
mWifiMetrics.setIsLocationEnabled(TEST_VAL_IS_LOCATION_ENABLED);
@@ -326,43 +238,11 @@ public class WifiMetricsTest {
for (int i = 0; i < NUM_LAST_RESORT_WATCHDOG_TRIGGERS_WITH_BAD_OTHER; i++) {
mWifiMetrics.incrementNumLastResortWatchdogTriggersWithBadOther();
}
- for (int i = 0; i < NUM_LAST_RESORT_WATCHDOG_SUCCESSES; i++) {
- mWifiMetrics.incrementNumLastResortWatchdogSuccesses();
- }
for (int i = 0; i < NUM_RSSI_LEVELS_TO_INCREMENT; i++) {
for (int j = 0; j <= i; j++) {
- mWifiMetrics.incrementRssiPollRssiCount(MIN_RSSI_LEVEL + i);
+ mWifiMetrics.incrementRssiPollRssiCount(FIRST_RSSI_LEVEL + i);
}
}
- for (int i = 1; i < NUM_OUT_OF_BOUND_ENTRIES; i++) {
- mWifiMetrics.incrementRssiPollRssiCount(MIN_RSSI_LEVEL - i);
- }
- for (int i = 1; i < NUM_OUT_OF_BOUND_ENTRIES; i++) {
- mWifiMetrics.incrementRssiPollRssiCount(MAX_RSSI_LEVEL + i);
- }
- // Test alert-reason clamping.
- mWifiMetrics.incrementAlertReasonCount(WifiLoggerHal.WIFI_ALERT_REASON_MIN - 1);
- mWifiMetrics.incrementAlertReasonCount(WifiLoggerHal.WIFI_ALERT_REASON_MAX + 1);
- // Simple cases for alert reason.
- mWifiMetrics.incrementAlertReasonCount(1);
- mWifiMetrics.incrementAlertReasonCount(1);
- mWifiMetrics.incrementAlertReasonCount(1);
- mWifiMetrics.incrementAlertReasonCount(2);
- List<ScanDetail> mockScanDetails = buildMockScanDetailList();
- for (int i = 0; i < NUM_SCANS; i++) {
- mWifiMetrics.countScanResults(mockScanDetails);
- }
- for (int score = WIFI_SCORE_RANGE_MIN; score < NUM_WIFI_SCORES_TO_INCREMENT; score++) {
- for (int offset = 0; offset <= score; offset++) {
- mWifiMetrics.incrementWifiScoreCount(WIFI_SCORE_RANGE_MIN + score);
- }
- }
- for (int i = 1; i < NUM_OUT_OF_BOUND_ENTRIES; i++) {
- mWifiMetrics.incrementWifiScoreCount(WIFI_SCORE_RANGE_MIN - i);
- }
- for (int i = 1; i < NUM_OUT_OF_BOUND_ENTRIES; i++) {
- mWifiMetrics.incrementWifiScoreCount(WIFI_SCORE_RANGE_MAX + i);
- }
}
/**
@@ -381,8 +261,6 @@ public class WifiMetricsTest {
assertEquals("mDeserializedWifiMetrics.numNetworksAddedByUser "
+ "== NUM_NEWTORKS_ADDED_BY_USER",
mDeserializedWifiMetrics.numNetworksAddedByUser, NUM_NEWTORKS_ADDED_BY_USER);
- assertEquals(NUM_HIDDEN_NETWORKS, mDeserializedWifiMetrics.numHiddenNetworks);
- assertEquals(NUM_PASSPOINT_NETWORKS, mDeserializedWifiMetrics.numPasspointNetworks);
assertEquals("mDeserializedWifiMetrics.numNetworksAddedByApps "
+ "== NUM_NEWTORKS_ADDED_BY_APPS",
mDeserializedWifiMetrics.numNetworksAddedByApps, NUM_NEWTORKS_ADDED_BY_APPS);
@@ -440,53 +318,12 @@ public class WifiMetricsTest {
mDeserializedWifiMetrics.numLastResortWatchdogTriggersWithBadDhcp);
assertEquals(NUM_LAST_RESORT_WATCHDOG_TRIGGERS_WITH_BAD_OTHER,
mDeserializedWifiMetrics.numLastResortWatchdogTriggersWithBadOther);
- assertEquals(NUM_LAST_RESORT_WATCHDOG_SUCCESSES,
- mDeserializedWifiMetrics.numLastResortWatchdogSuccesses);
assertEquals(TEST_RECORD_DURATION_SEC,
mDeserializedWifiMetrics.recordDurationSec);
for (int i = 0; i < NUM_RSSI_LEVELS_TO_INCREMENT; i++) {
- assertEquals(MIN_RSSI_LEVEL + i, mDeserializedWifiMetrics.rssiPollRssiCount[i].rssi);
+ assertEquals(FIRST_RSSI_LEVEL + i, mDeserializedWifiMetrics.rssiPollRssiCount[i].rssi);
assertEquals(i + 1, mDeserializedWifiMetrics.rssiPollRssiCount[i].count);
}
- StringBuilder sb_rssi = new StringBuilder();
- sb_rssi.append("Number of RSSIs = " + mDeserializedWifiMetrics.rssiPollRssiCount.length);
- assertTrue(sb_rssi.toString(), (mDeserializedWifiMetrics.rssiPollRssiCount.length
- <= (MAX_RSSI_LEVEL - MIN_RSSI_LEVEL + 1)));
- assertEquals(2, mDeserializedWifiMetrics.alertReasonCount[0].count); // Clamped reasons.
- assertEquals(3, mDeserializedWifiMetrics.alertReasonCount[1].count);
- assertEquals(1, mDeserializedWifiMetrics.alertReasonCount[2].count);
- assertEquals(3, mDeserializedWifiMetrics.alertReasonCount.length);
- assertEquals(NUM_TOTAL_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numTotalScanResults);
- assertEquals(NUM_OPEN_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numOpenNetworkScanResults);
- assertEquals(NUM_PERSONAL_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numPersonalNetworkScanResults);
- assertEquals(NUM_ENTERPRISE_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numEnterpriseNetworkScanResults);
- assertEquals(NUM_HIDDEN_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numHiddenNetworkScanResults);
- assertEquals(NUM_HOTSPOT2_R1_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numHotspot2R1NetworkScanResults);
- assertEquals(NUM_HOTSPOT2_R2_NETWORK_SCAN_RESULTS * NUM_SCANS,
- mDeserializedWifiMetrics.numHotspot2R2NetworkScanResults);
- assertEquals(NUM_SCANS,
- mDeserializedWifiMetrics.numScans);
- for (int score_index = 0; score_index < NUM_WIFI_SCORES_TO_INCREMENT; score_index++) {
- assertEquals(WIFI_SCORE_RANGE_MIN + score_index,
- mDeserializedWifiMetrics.wifiScoreCount[score_index].score);
- assertEquals(score_index + 1,
- mDeserializedWifiMetrics.wifiScoreCount[score_index].count);
- }
- StringBuilder sb_wifi_score = new StringBuilder();
- sb_wifi_score.append("Number of wifi_scores = "
- + mDeserializedWifiMetrics.wifiScoreCount.length);
- assertTrue(sb_wifi_score.toString(), (mDeserializedWifiMetrics.wifiScoreCount.length
- <= (WIFI_SCORE_RANGE_MAX - WIFI_SCORE_RANGE_MIN + 1)));
- StringBuilder sb_wifi_limits = new StringBuilder();
- sb_wifi_limits.append("Wifi Score limit is " + NetworkAgent.WIFI_BASE_SCORE
- + ">= " + WIFI_SCORE_RANGE_MAX);
- assertTrue(sb_wifi_limits.toString(), NetworkAgent.WIFI_BASE_SCORE <= WIFI_SCORE_RANGE_MAX);
}
/**
@@ -624,8 +461,6 @@ public class WifiMetricsTest {
dumpProtoAndDeserialize();
//Check there are only 3 connection events
assertEquals(mDeserializedWifiMetrics.connectionEvent.length, 4);
- assertEquals(mDeserializedWifiMetrics.rssiPollRssiCount.length, 0);
- assertEquals(mDeserializedWifiMetrics.alertReasonCount.length, 0);
// Create 2 ConnectionEvents
mWifiMetrics.startConnectionEvent(null, "BLUE",
@@ -644,35 +479,4 @@ public class WifiMetricsTest {
//Check there are only 2 connection events
assertEquals(mDeserializedWifiMetrics.connectionEvent.length, 2);
}
-
- /**
- * Tests that after setting metrics values they can be serialized and deserialized with the
- * $ adb shell dumpsys wifi wifiMetricsProto clean
- */
- @Test
- public void testClearMetricsDump() throws Exception {
- setAndIncrementMetrics();
- startAndEndConnectionEventSucceeds();
- cleanDumpProtoAndDeserialize();
- assertDeserializedMetricsCorrect();
- assertEquals("mDeserializedWifiMetrics.connectionEvent.length",
- 2, mDeserializedWifiMetrics.connectionEvent.length);
- }
-
- private void assertStringContains(
- String actualString, String expectedSubstring) {
- assertTrue("Expected text not found in: " + actualString,
- actualString.contains(expectedSubstring));
- }
-
- private String getStateDump() {
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- PrintWriter writer = new PrintWriter(stream);
- String[] args = new String[0];
- mWifiMetrics.dump(null, writer, args);
- writer.flush();
- return stream.toString();
- }
}
-
-
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
index 1726e7d..92de7d4 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiQualifiedNetworkSelectorTest.java
@@ -2270,59 +2270,4 @@ public class WifiQualifiedNetworkSelectorTest {
verifySelectedResult(chosenScanResult, candidate);
}
-
- /**
- * Case #47 Choose the currently connected BSSID after a firmware initiated roaming.
- *
- * In this test. we simulate following scenario:
- * Two APs are found in scan results
- * BSSID1 is @ 2.4GHz with RSSI -78
- * BSSID2 is @ 2.4Ghz with RSSI -77
- * BSSID2 is chosen because of stronger RSSI. Then firmware initiates
- * a roaming to BSSID1. QNS now selects BSSID1 because of the bonus for currently
- * connected network even if BSSID 2 has slightly stronger signal strengh.
- *
- * expect BSSID2 to be chosen after firmware roaming
- */
- @Test
- public void chooseCurrentlyConnectedBssid() {
- String[] ssids = {"\"test1\"", "\"test1\""};
- String[] bssids = {"6c:f3:7f:ae:8c:f3", "6c:f3:7f:ae:8c:f4"};
- int[] frequencies = {2437, 2437};
- String[] caps = {"[ESS]", "[ESS]"};
- int[] levels = {-78, -77};
- int[] security = {SECURITY_NONE, SECURITY_NONE};
-
- List<ScanDetail> scanDetails = getScanDetails(ssids, bssids, frequencies, caps, levels);
- WifiConfiguration[] savedConfigs = generateWifiConfigurations(ssids, security);
- prepareConfigStore(savedConfigs);
-
- final List<WifiConfiguration> savedNetwork = Arrays.asList(savedConfigs);
- when(mWifiConfigManager.getSavedNetworks()).thenReturn(savedNetwork);
- scanResultLinkConfiguration(savedConfigs, scanDetails);
-
- // Choose BSSID2 as it has stronger RSSI
- ScanResult chosenScanResult = scanDetails.get(1).getScanResult();
- WifiConfiguration candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(false,
- false, scanDetails, false, false, true, false);
- verifySelectedResult(chosenScanResult, candidate);
- when(mWifiInfo.getBSSID()).thenReturn(bssids[1]);
- when(mWifiConfigManager.getEnableAutoJoinWhenAssociated()).thenReturn(true);
-
- // Choose BSSID2 as it has stronger RSSI and it is the currently connected BSSID
- chosenScanResult = scanDetails.get(1).getScanResult();
- candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(true,
- false, scanDetails, false, true, false, false);
- verifySelectedResult(chosenScanResult, candidate);
-
- // Pretend firmware roamed the device to BSSID1
- when(mWifiInfo.getBSSID()).thenReturn(bssids[0]);
-
- // Choose BSSID1 as it is the currently connected BSSID even if BSSID2 has slightly
- // higher RSSI value.
- chosenScanResult = scanDetails.get(0).getScanResult();
- candidate = mWifiQualifiedNetworkSelector.selectQualifiedNetwork(true,
- false, scanDetails, false, true, false, false);
- verifySelectedResult(chosenScanResult, candidate);
- }
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
index a881d8f..53d8f46 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiStateMachineTest.java
@@ -22,7 +22,6 @@ import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;
import android.app.ActivityManager;
-import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -42,7 +41,6 @@ import android.net.wifi.WifiSsid;
import android.net.wifi.p2p.IWifiP2pManager;
import android.os.BatteryStats;
import android.os.Binder;
-import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
@@ -58,8 +56,6 @@ import android.os.UserManager;
import android.provider.Settings;
import android.security.KeyStore;
import android.telephony.TelephonyManager;
-import android.test.mock.MockContentProvider;
-import android.test.mock.MockContentResolver;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Base64;
import android.util.Log;
@@ -222,19 +218,13 @@ public class WifiStateMachineTest {
Context context = mock(Context.class);
when(context.getPackageManager()).thenReturn(pkgMgr);
+ when(context.getContentResolver()).thenReturn(mock(ContentResolver.class));
MockResources resources = new com.android.server.wifi.MockResources();
when(context.getResources()).thenReturn(resources);
- MockContentResolver mockContentResolver = new MockContentResolver();
- mockContentResolver.addProvider(Settings.AUTHORITY,
- new MockContentProvider(context) {
- @Override
- public Bundle call(String method, String arg, Bundle extras) {
- return new Bundle();
- }
- });
- when(context.getContentResolver()).thenReturn(mockContentResolver);
+ ContentResolver cr = mock(ContentResolver.class);
+ when(context.getContentResolver()).thenReturn(cr);
when(context.getSystemService(Context.POWER_SERVICE)).thenReturn(
new PowerManager(context, mock(IPowerManager.class), new Handler()));
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
index 767cddf..1355961 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java
@@ -89,12 +89,6 @@ public abstract class BaseWifiScannerImplTest {
when(mClock.elapsedRealtime()).thenReturn(SystemClock.elapsedRealtime());
}
- protected boolean isAllChannelsScanned(int band) {
- ChannelCollection collection = mScanner.getChannelHelper().createChannelCollection();
- collection.addBand(band);
- return collection.isAllChannels();
- }
-
protected Set<Integer> expectedBandScanFreqs(int band) {
ChannelCollection collection = mScanner.getChannelHelper().createChannelCollection();
collection.addBand(band);
@@ -121,8 +115,7 @@ public abstract class BaseWifiScannerImplTest {
doSuccessfulSingleScanTest(settings, expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ),
new HashSet<Integer>(),
- ScanResults.create(0, isAllChannelsScanned(WifiScanner.WIFI_BAND_24_GHZ),
- 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450), false);
+ ScanResults.create(0, 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450), false);
}
@Test
@@ -151,8 +144,7 @@ public abstract class BaseWifiScannerImplTest {
doSuccessfulSingleScanTest(settings, expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ),
new HashSet<Integer>(),
- ScanResults.create(0, isAllChannelsScanned(WifiScanner.WIFI_BAND_24_GHZ),
- 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450), true);
+ ScanResults.create(0, 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450), true);
}
/**
@@ -354,7 +346,7 @@ public abstract class BaseWifiScannerImplTest {
.withBasePeriod(10000)
.withMaxApPerScan(10)
.addBucketWithBand(10000, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN,
- WifiScanner.WIFI_BAND_BOTH_WITH_DFS)
+ WifiScanner.WIFI_BAND_5_GHZ)
.build();
WifiNative.ScanEventHandler eventHandler = mock(WifiNative.ScanEventHandler.class);
@@ -369,17 +361,15 @@ public abstract class BaseWifiScannerImplTest {
expectSuccessfulSingleScan(order, eventHandler,
expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ),
new HashSet<Integer>(),
- ScanResults.create(0, isAllChannelsScanned(WifiScanner.WIFI_BAND_24_GHZ),
- 2400, 2450, 2450), false);
+ ScanResults.create(0, 2400, 2450, 2450), false);
// start second scan
assertTrue(mScanner.startSingleScan(settings2, eventHandler));
expectSuccessfulSingleScan(order, eventHandler,
- expectedBandScanFreqs(WifiScanner.WIFI_BAND_BOTH_WITH_DFS),
+ expectedBandScanFreqs(WifiScanner.WIFI_BAND_5_GHZ),
new HashSet<Integer>(),
- ScanResults.create(0, true,
- 5150, 5175), false);
+ ScanResults.create(0, 5150, 5175), false);
verifyNoMoreInteractions(eventHandler);
}
@@ -422,8 +412,7 @@ public abstract class BaseWifiScannerImplTest {
}
ArrayList<ScanResult> scanDataResults = new ArrayList<>(fullResults);
Collections.sort(scanDataResults, ScanResults.SCAN_RESULT_RSSI_COMPARATOR);
- ScanData scanData = new ScanData(0, 0, 0,
- isAllChannelsScanned(WifiScanner.WIFI_BAND_24_GHZ),
+ ScanData scanData = new ScanData(0, 0,
scanDataResults.toArray(new ScanResult[scanDataResults.size()]));
Set<Integer> expectedScan = expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ);
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/KnownBandsChannelHelperTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/KnownBandsChannelHelperTest.java
index 3e482a9..ed46683 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/KnownBandsChannelHelperTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/KnownBandsChannelHelperTest.java
@@ -290,7 +290,6 @@ public class KnownBandsChannelHelperTest {
assertTrue(mChannelCollection.isEmpty());
assertFalse(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -311,7 +310,6 @@ public class KnownBandsChannelHelperTest {
assertTrue(mChannelCollection.isEmpty());
assertFalse(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -331,7 +329,6 @@ public class KnownBandsChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -351,7 +348,6 @@ public class KnownBandsChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -372,7 +368,6 @@ public class KnownBandsChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -393,7 +388,6 @@ public class KnownBandsChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -414,7 +408,6 @@ public class KnownBandsChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -435,7 +428,6 @@ public class KnownBandsChannelHelperTest {
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
assertTrue(mChannelCollection.containsChannel(5600));
- assertTrue(mChannelCollection.isAllChannels());
}
/**
@@ -450,7 +442,6 @@ public class KnownBandsChannelHelperTest {
WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings();
mChannelCollection.fillBucketSettings(bucketSettings, 2);
assertThat(bucketSettings, bandIs(WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -465,27 +456,6 @@ public class KnownBandsChannelHelperTest {
WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings();
mChannelCollection.fillBucketSettings(bucketSettings, 2);
assertThat(bucketSettings, bandIs(WifiScanner.WIFI_BAND_BOTH));
- assertFalse(mChannelCollection.isAllChannels());
- }
-
-
- /**
- * Add enough channels across all bands that the max channels is exceeded
- */
- @Test
- public void addChannel_addAllAvailableChannels() {
- mChannelCollection.addChannel(2400);
- mChannelCollection.addChannel(2450);
- mChannelCollection.addChannel(5150);
- mChannelCollection.addChannel(5175);
- mChannelCollection.addChannel(5600);
- mChannelCollection.addChannel(5650);
- mChannelCollection.addChannel(5660);
-
- WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings();
- mChannelCollection.fillBucketSettings(bucketSettings, Integer.MAX_VALUE);
- assertThat(bucketSettings, channelsAre(2400, 2450, 5150, 5175, 5600, 5650, 5660));
- assertTrue(mChannelCollection.isAllChannels());
}
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/NoBandChannelHelperTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/NoBandChannelHelperTest.java
index 2863b9f..cbf6fe5 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/NoBandChannelHelperTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/NoBandChannelHelperTest.java
@@ -199,7 +199,7 @@ public class NoBandChannelHelperTest {
* {@link com.android.server.wifi.scanner.NoBandChannelHelper.NoBandChannelCollection}.
*/
@SmallTest
- public static class NoBandsChannelCollectionTest {
+ public static class KnownBandsChannelCollectionTest {
ChannelHelper.ChannelCollection mChannelCollection;
/**
@@ -225,7 +225,6 @@ public class NoBandChannelHelperTest {
assertTrue(mChannelCollection.isEmpty());
assertFalse(mChannelCollection.containsChannel(2400));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -245,7 +244,6 @@ public class NoBandChannelHelperTest {
assertTrue(mChannelCollection.isEmpty());
assertFalse(mChannelCollection.containsChannel(2400));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -264,7 +262,6 @@ public class NoBandChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
- assertTrue(mChannelCollection.isAllChannels());
}
/**
@@ -284,7 +281,6 @@ public class NoBandChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -305,7 +301,6 @@ public class NoBandChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertFalse(mChannelCollection.containsChannel(5150));
- assertFalse(mChannelCollection.isAllChannels());
}
/**
@@ -325,7 +320,6 @@ public class NoBandChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
- assertTrue(mChannelCollection.isAllChannels());
}
/**
@@ -345,7 +339,6 @@ public class NoBandChannelHelperTest {
assertFalse(mChannelCollection.isEmpty());
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
- assertTrue(mChannelCollection.isAllChannels());
}
/**
@@ -366,7 +359,6 @@ public class NoBandChannelHelperTest {
assertTrue(mChannelCollection.containsChannel(2400));
assertTrue(mChannelCollection.containsChannel(5150));
assertTrue(mChannelCollection.containsChannel(5600));
- assertTrue(mChannelCollection.isAllChannels());
}
/**
@@ -381,7 +373,6 @@ public class NoBandChannelHelperTest {
WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings();
mChannelCollection.fillBucketSettings(bucketSettings, 2);
assertThat(bucketSettings, bandIs(ALL_BANDS));
- assertFalse(mChannelCollection.isAllChannels()); // can't determine from just channels
}
/**
@@ -396,7 +387,6 @@ public class NoBandChannelHelperTest {
WifiNative.BucketSettings bucketSettings = new WifiNative.BucketSettings();
mChannelCollection.fillBucketSettings(bucketSettings, 2);
assertThat(bucketSettings, bandIs(ALL_BANDS));
- assertFalse(mChannelCollection.isAllChannels()); // can't determine from just channels
}
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
index 560710f..39709f8 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/SupplicantPnoScannerTest.java
@@ -45,7 +45,6 @@ import org.mockito.InOrder;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -91,7 +90,7 @@ public class SupplicantPnoScannerTest {
WifiNative.PnoEventHandler pnoEventHandler = mock(WifiNative.PnoEventHandler.class);
WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
- ScanResults scanResults = createDummyScanResults(false);
+ ScanResults scanResults = createDummyScanResults();
InOrder order = inOrder(pnoEventHandler, mWifiNative);
// Start PNO scan
@@ -112,7 +111,7 @@ public class SupplicantPnoScannerTest {
WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
WifiNative.ScanEventHandler eventHandler = mock(WifiNative.ScanEventHandler.class);
WifiNative.ScanSettings settings = createDummyScanSettings();
- ScanResults scanResults = createDummyScanResults(true);
+ ScanResults scanResults = createDummyScanResults();
InOrder order = inOrder(eventHandler, mWifiNative);
// Start PNO scan
@@ -182,7 +181,7 @@ public class SupplicantPnoScannerTest {
WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
WifiNative.ScanEventHandler eventHandler = mock(WifiNative.ScanEventHandler.class);
WifiNative.ScanSettings settings = createDummyScanSettings();
- ScanResults scanResults = createDummyScanResults(true);
+ ScanResults scanResults = createDummyScanResults();
InOrder order = inOrder(eventHandler, mWifiNative);
// Start PNO scan
@@ -215,126 +214,12 @@ public class SupplicantPnoScannerTest {
verifyNoMoreInteractions(pnoEventHandler);
}
- /**
- * Verify that the HW PNO scan stop failure still resets the PNO scan state.
- * 1. Start Hw PNO.
- * 2. Stop Hw PNO scan which raises a stop command to WifiNative which is failed.
- * 3. Now restart a new PNO scan to ensure that the failure was cleanly handled.
- */
- @Test
- public void ignoreHwDisconnectedPnoScanStopFailure() {
- createScannerWithHwPnoScanSupport();
-
- WifiNative.PnoEventHandler pnoEventHandler = mock(WifiNative.PnoEventHandler.class);
- WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
-
- // Start PNO scan
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
-
- // Fail the PNO stop.
- when(mWifiNative.setPnoScan(false)).thenReturn(false);
- assertTrue(mScanner.resetHwPnoList());
- assertTrue("dispatch pno monitor alarm",
- mAlarmManager.dispatch(
- SupplicantWifiScannerImpl.HwPnoDebouncer.PNO_DEBOUNCER_ALARM_TAG));
- mLooper.dispatchAll();
- verify(mWifiNative).setPnoScan(false);
-
- // Add a new PNO scan request and ensure it runs successfully.
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
- assertTrue("dispatch pno monitor alarm",
- mAlarmManager.dispatch(
- SupplicantWifiScannerImpl.HwPnoDebouncer.PNO_DEBOUNCER_ALARM_TAG));
- mLooper.dispatchAll();
- InOrder order = inOrder(pnoEventHandler, mWifiNative);
- ScanResults scanResults = createDummyScanResults(false);
- expectSuccessfulHwDisconnectedPnoScan(order, pnoSettings, pnoEventHandler, scanResults);
- verifyNoMoreInteractions(pnoEventHandler);
- }
-
- /**
- * Verify that the HW PNO scan is forcefully stopped (bypass debounce logic) and restarted when
- * settings change.
- * 1. Start Hw PNO.
- * 2. Stop Hw PNO .
- * 3. Now restart a new PNO scan with different settings.
- * 4. Ensure that the stop was issued before we start again.
- */
- @Test
- public void forceRestartHwDisconnectedPnoScanWhenSettingsChange() {
- createScannerWithHwPnoScanSupport();
-
- WifiNative.PnoEventHandler pnoEventHandler = mock(WifiNative.PnoEventHandler.class);
- WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
- InOrder order = inOrder(pnoEventHandler, mWifiNative);
-
- // Start PNO scan
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
- expectHwDisconnectedPnoScanStart(order, pnoSettings);
-
- // Stop PNO now. This should trigger the debounce timer and not stop PNO.
- assertTrue(mScanner.resetHwPnoList());
- assertTrue(mAlarmManager.isPending(
- SupplicantWifiScannerImpl.HwPnoDebouncer.PNO_DEBOUNCER_ALARM_TAG));
- order.verify(mWifiNative, never()).setPnoScan(false);
-
- // Now restart PNO scan with an extra network in settings.
- pnoSettings.networkList =
- Arrays.copyOf(pnoSettings.networkList, pnoSettings.networkList.length + 1);
- pnoSettings.networkList[pnoSettings.networkList.length - 1] =
- createDummyPnoNetwork("ssid_pno_new", 6, 6);
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
-
- // This should bypass the debounce timer and stop PNO scan immediately and then start
- // a new debounce timer for the start.
- order.verify(mWifiNative).setPnoScan(false);
-
- // Trigger the debounce timer and ensure we start PNO scan again.
- mAlarmManager.dispatch(SupplicantWifiScannerImpl.HwPnoDebouncer.PNO_DEBOUNCER_ALARM_TAG);
- mLooper.dispatchAll();
- order.verify(mWifiNative).setPnoScan(true);
- }
-
- /**
- * Verify that the HW PNO scan is not forcefully stopped (bypass debounce logic) when
- * settings don't change.
- * 1. Start Hw PNO.
- * 2. Stop Hw PNO .
- * 3. Now restart a new PNO scan with same settings.
- * 4. Ensure that the stop was never issued.
- */
- @Test
- public void noForceRestartHwDisconnectedPnoScanWhenNoSettingsChange() {
- createScannerWithHwPnoScanSupport();
-
- WifiNative.PnoEventHandler pnoEventHandler = mock(WifiNative.PnoEventHandler.class);
- WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(false);
- InOrder order = inOrder(pnoEventHandler, mWifiNative);
-
- // Start PNO scan
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
- expectHwDisconnectedPnoScanStart(order, pnoSettings);
-
- // Stop PNO now. This should trigger the debounce timer and not stop PNO.
- assertTrue(mScanner.resetHwPnoList());
- assertTrue(mAlarmManager.isPending(
- SupplicantWifiScannerImpl.HwPnoDebouncer.PNO_DEBOUNCER_ALARM_TAG));
- order.verify(mWifiNative, never()).setPnoScan(false);
-
- // Now restart PNO scan with the same settings.
- startSuccessfulPnoScan(null, pnoSettings, null, pnoEventHandler);
-
- // Trigger the debounce timer and ensure that we neither stop/start.
- mLooper.dispatchAll();
- order.verify(mWifiNative, never()).setPnoScan(anyBoolean());
- }
-
private void doSuccessfulSwPnoScanTest(boolean isConnectedPno) {
WifiNative.PnoEventHandler pnoEventHandler = mock(WifiNative.PnoEventHandler.class);
WifiNative.PnoSettings pnoSettings = createDummyPnoSettings(isConnectedPno);
WifiNative.ScanEventHandler scanEventHandler = mock(WifiNative.ScanEventHandler.class);
WifiNative.ScanSettings scanSettings = createDummyScanSettings();
- ScanResults scanResults = createDummyScanResults(false);
+ ScanResults scanResults = createDummyScanResults();
InOrder order = inOrder(scanEventHandler, mWifiNative);
@@ -358,20 +243,18 @@ public class SupplicantPnoScannerTest {
new SupplicantWifiScannerImpl(mContext, mWifiNative, mLooper.getLooper(), mClock);
}
- private WifiNative.PnoNetwork createDummyPnoNetwork(String ssid, int networkId, int priority) {
- WifiNative.PnoNetwork pnoNetwork = new WifiNative.PnoNetwork();
- pnoNetwork.ssid = ssid;
- pnoNetwork.networkId = networkId;
- pnoNetwork.priority = priority;
- return pnoNetwork;
- }
-
private WifiNative.PnoSettings createDummyPnoSettings(boolean isConnected) {
WifiNative.PnoSettings pnoSettings = new WifiNative.PnoSettings();
pnoSettings.isConnected = isConnected;
pnoSettings.networkList = new WifiNative.PnoNetwork[2];
- pnoSettings.networkList[0] = createDummyPnoNetwork("ssid_pno_1", 1, 1);
- pnoSettings.networkList[1] = createDummyPnoNetwork("ssid_pno_2", 2, 2);
+ pnoSettings.networkList[0] = new WifiNative.PnoNetwork();
+ pnoSettings.networkList[0].ssid = "ssid_pno_1";
+ pnoSettings.networkList[0].networkId = 1;
+ pnoSettings.networkList[0].priority = 1;
+ pnoSettings.networkList[1] = new WifiNative.PnoNetwork();
+ pnoSettings.networkList[1].ssid = "ssid_pno_2";
+ pnoSettings.networkList[1].networkId = 2;
+ pnoSettings.networkList[1].priority = 2;
return pnoSettings;
}
@@ -385,15 +268,13 @@ public class SupplicantPnoScannerTest {
return settings;
}
- private ScanResults createDummyScanResults(boolean allChannelsScanned) {
- return ScanResults.create(0, allChannelsScanned, 2400, 2450, 2450, 2400, 2450, 2450, 2400,
- 2450, 2450);
+ private ScanResults createDummyScanResults() {
+ return ScanResults.create(0, 2400, 2450, 2450, 2400, 2450, 2450, 2400, 2450, 2450);
}
private void startSuccessfulPnoScan(WifiNative.ScanSettings scanSettings,
WifiNative.PnoSettings pnoSettings, WifiNative.ScanEventHandler scanEventHandler,
WifiNative.PnoEventHandler pnoEventHandler) {
- reset(mWifiNative);
when(mWifiNative.setNetworkVariable(anyInt(), anyString(), anyString())).thenReturn(true);
when(mWifiNative.enableNetworkWithoutConnect(anyInt())).thenReturn(true);
// Scans succeed
@@ -419,8 +300,9 @@ public class SupplicantPnoScannerTest {
/**
* Verify that the PNO scan was successfully started.
*/
- private void expectHwDisconnectedPnoScanStart(InOrder order,
- WifiNative.PnoSettings pnoSettings) {
+ private void expectSuccessfulHwDisconnectedPnoScan(InOrder order,
+ WifiNative.PnoSettings pnoSettings, WifiNative.PnoEventHandler eventHandler,
+ ScanResults scanResults) {
for (int i = 0; i < pnoSettings.networkList.length; i++) {
WifiNative.PnoNetwork network = pnoSettings.networkList[i];
order.verify(mWifiNative).setNetworkVariable(network.networkId,
@@ -429,17 +311,6 @@ public class SupplicantPnoScannerTest {
}
// Verify HW PNO scan started
order.verify(mWifiNative).setPnoScan(true);
- }
-
- /**
- *
- * 1. Verify that the PNO scan was successfully started.
- * 2. Send scan results and ensure that the |onPnoNetworkFound| callback was called.
- */
- private void expectSuccessfulHwDisconnectedPnoScan(InOrder order,
- WifiNative.PnoSettings pnoSettings, WifiNative.PnoEventHandler eventHandler,
- ScanResults scanResults) {
- expectHwDisconnectedPnoScanStart(order, pnoSettings);
// Setup scan results
when(mWifiNative.getScanResults()).thenReturn(scanResults.getScanDetailArrayList());
diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
index 3498b53..03a11dc 100644
--- a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java
@@ -1,4 +1,4 @@
- /*
+/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -371,7 +371,7 @@ public class WifiScanningServiceTest {
assertTrue("dump did not contain log with type=" + type + ", id=" + id +
": " + serviceDump + "\n",
logLineRegex.matcher(serviceDump).find());
- }
+ }
private void assertDumpContainsCallbackLog(String callback, int id, String extra) {
String serviceDump = dumpService();
@@ -382,7 +382,7 @@ public class WifiScanningServiceTest {
assertTrue("dump did not contain callback log with callback=" + callback + ", id=" + id +
", extra=" + extra + ": " + serviceDump + "\n",
logLineRegex.matcher(serviceDump).find());
- }
+ }
@Test
public void construct() throws Exception {
@@ -507,10 +507,10 @@ public class WifiScanningServiceTest {
*/
@Test
public void sendSingleScanBandRequest() throws Exception {
- WifiScanner.ScanSettings requestSettings = createRequest(WifiScanner.WIFI_BAND_BOTH_WITH_DFS,
- 0, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ WifiScanner.ScanSettings requestSettings = createRequest(WifiScanner.WIFI_BAND_BOTH, 0,
+ 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
doSuccessfulSingleScan(requestSettings, computeSingleScanNativeSettings(requestSettings),
- ScanResults.create(0, true, 2400, 5150, 5175));
+ ScanResults.create(0, 2400, 5150, 5175));
}
/**
@@ -518,25 +518,13 @@ public class WifiScanningServiceTest {
*/
@Test
public void sendSingleScanChannelsRequest() throws Exception {
- WifiScanner.ScanSettings requestSettings = createRequest(channelsToSpec(2400, 5150, 5175),
- 0, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
+ WifiScanner.ScanSettings requestSettings = createRequest(WifiScanner.WIFI_BAND_BOTH, 0,
+ 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
doSuccessfulSingleScan(requestSettings, computeSingleScanNativeSettings(requestSettings),
ScanResults.create(0, 2400, 5150, 5175));
}
/**
- * Do a single scan for a list of all channels and verify that it is successful.
- */
- @Test
- public void sendSingleScanAllChannelsRequest() throws Exception {
- WifiScanner.ScanSettings requestSettings = createRequest(
- channelsToSpec(2400, 2450, 5150, 5175, 5600, 5650, 5660),
- 0, 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
- doSuccessfulSingleScan(requestSettings, computeSingleScanNativeSettings(requestSettings),
- ScanResults.create(0, true, 2400, 5150, 5175));
- }
-
- /**
* Do a single scan with no results and verify that it is successful.
*/
@Test
@@ -1667,8 +1655,8 @@ public class WifiScanningServiceTest {
sendSingleScanRequest(controlChannel, requestId, requestSettings, null);
// Can't call |disconnect| here because that sends |CMD_CHANNEL_DISCONNECT| followed by
// |CMD_CHANNEL_DISCONNECTED|.
- controlChannel.sendMessage(Message.obtain(null, AsyncChannel.CMD_CHANNEL_DISCONNECTED,
- AsyncChannel.STATUS_REMOTE_DISCONNECTION, 0, null));
+ controlChannel.sendMessage(Message.obtain(null, AsyncChannel.CMD_CHANNEL_DISCONNECTED, 0,
+ 0, null));
// Now process the above 2 actions. This should result in first processing the single scan
// request (which forwards the request to SingleScanStateMachine) and then processing the
@@ -1683,55 +1671,4 @@ public class WifiScanningServiceTest {
logLineRegex.matcher(serviceDump).find());
}
- /**
- * Tries to simulate the race scenario where a client is disconnected immediately after single
- * scan request is sent to |SingleScanStateMachine|.
- */
- @Test
- public void sendScanRequestAfterUnsuccessfulSend() throws Exception {
- WifiScanner.ScanSettings requestSettings = createRequest(WifiScanner.WIFI_BAND_BOTH, 0,
- 0, 20, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN);
- int requestId = 9;
-
- startServiceAndLoadDriver();
- Handler handler = mock(Handler.class);
- BidirectionalAsyncChannel controlChannel = connectChannel(handler);
- mLooper.dispatchAll();
-
- when(mWifiScannerImpl.startSingleScan(any(WifiNative.ScanSettings.class),
- any(WifiNative.ScanEventHandler.class))).thenReturn(true);
- ScanResults results = ScanResults.create(0, 2400);
- when(mWifiScannerImpl.getLatestSingleScanResults())
- .thenReturn(results.getRawScanData());
-
- InOrder order = inOrder(mWifiScannerImpl, handler);
-
- sendSingleScanRequest(controlChannel, requestId, requestSettings, null);
- mLooper.dispatchAll();
- WifiNative.ScanEventHandler eventHandler1 = verifyStartSingleScan(order,
- computeSingleScanNativeSettings(requestSettings));
- verifySuccessfulResponse(order, handler, requestId);
-
- eventHandler1.onScanStatus(WifiNative.WIFI_SCAN_RESULTS_AVAILABLE);
- mLooper.dispatchAll();
- verifyScanResultsRecieved(order, handler, requestId, results.getScanData());
- verifySingleScanCompletedRecieved(order, handler, requestId);
- verifyNoMoreInteractions(handler);
-
- controlChannel.sendMessage(Message.obtain(null, AsyncChannel.CMD_CHANNEL_DISCONNECTED,
- AsyncChannel.STATUS_SEND_UNSUCCESSFUL, 0, null));
- mLooper.dispatchAll();
-
- sendSingleScanRequest(controlChannel, requestId, requestSettings, null);
- mLooper.dispatchAll();
- WifiNative.ScanEventHandler eventHandler2 = verifyStartSingleScan(order,
- computeSingleScanNativeSettings(requestSettings));
- verifySuccessfulResponse(order, handler, requestId);
-
- eventHandler2.onScanStatus(WifiNative.WIFI_SCAN_RESULTS_AVAILABLE);
- mLooper.dispatchAll();
- verifyScanResultsRecieved(order, handler, requestId, results.getScanData());
- verifySingleScanCompletedRecieved(order, handler, requestId);
- verifyNoMoreInteractions(handler);
- }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment