diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiMetrics.java | 7 | ||||
-rw-r--r-- | service/proto/src/metrics.proto | 3 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java | 26 |
3 files changed, 34 insertions, 2 deletions
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index 72c52bdd2..a7544e031 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -44,6 +44,7 @@ import android.os.Message; import android.os.RemoteException; import android.os.SystemProperties; import android.telephony.TelephonyManager; +import android.text.TextUtils; import android.util.ArrayMap; import android.util.Base64; import android.util.Log; @@ -1111,6 +1112,7 @@ public class WifiMetrics { } sb.append(", numConsecutiveConnectionFailure=" + mConnectionEvent.numConsecutiveConnectionFailure); + sb.append(", isOsuProvisioned=" + mConnectionEvent.isOsuProvisioned); } return sb.toString(); } @@ -1460,9 +1462,12 @@ public class WifiMetrics { mBssidBlocklistMonitor.getNumBlockedBssidsForSsid(config.SSID); mCurrentConnectionEvent.mConnectionEvent.networkType = WifiMetricsProto.ConnectionEvent.TYPE_UNKNOWN; + mCurrentConnectionEvent.mConnectionEvent.isOsuProvisioned = false; if (config.isPasspoint()) { mCurrentConnectionEvent.mConnectionEvent.networkType = WifiMetricsProto.ConnectionEvent.TYPE_PASSPOINT; + mCurrentConnectionEvent.mConnectionEvent.isOsuProvisioned = + !TextUtils.isEmpty(config.updateIdentifier); } else if (WifiConfigurationUtil.isConfigForSaeNetwork(config)) { mCurrentConnectionEvent.mConnectionEvent.networkType = WifiMetricsProto.ConnectionEvent.TYPE_WPA3; @@ -3097,7 +3102,7 @@ public class WifiMetrics { for (ConnectionEvent event : mConnectionEventList) { String eventLine = event.toString(); if (event == mCurrentConnectionEvent) { - eventLine += "CURRENTLY OPEN EVENT"; + eventLine += " CURRENTLY OPEN EVENT"; } pw.println(eventLine); } diff --git a/service/proto/src/metrics.proto b/service/proto/src/metrics.proto index 481ff0f14..30b1690cc 100644 --- a/service/proto/src/metrics.proto +++ b/service/proto/src/metrics.proto @@ -1109,6 +1109,9 @@ message ConnectionEvent { // middle won't break the streak count. The count is cleared after // a network disconnection event. optional int32 num_consecutive_connection_failure = 19 [default = -1]; + + // Indicates if the profile used for the connection was provisioned by Passpoint OSU server + optional bool is_osu_provisioned = 20; } // Number of occurrences of a specific RSSI poll rssi value diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java index 198eb079f..4e895e488 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java @@ -1762,10 +1762,11 @@ public class WifiMetricsTest extends WifiBaseTest { assertEquals(1, mDecodedProto.connectionEvent.length); assertEquals(WifiMetricsProto.ConnectionEvent.TYPE_OPEN, mDecodedProto.connectionEvent[0].networkType); + assertFalse(mDecodedProto.connectionEvent[0].isOsuProvisioned); } /** - * Verify the ConnectionEvent is labeled with networkType passpoint correctly. + * Verify the ConnectionEvent is labeled with networkType Passpoint correctly. */ @Test public void testConnectionNetworkTypePasspoint() throws Exception { @@ -1781,6 +1782,7 @@ public class WifiMetricsTest extends WifiBaseTest { assertEquals(1, mDecodedProto.connectionEvent.length); assertEquals(WifiMetricsProto.ConnectionEvent.TYPE_PASSPOINT, mDecodedProto.connectionEvent[0].networkType); + assertFalse(mDecodedProto.connectionEvent[0].isOsuProvisioned); } /** @@ -4995,4 +4997,26 @@ public class WifiMetricsTest extends WifiBaseTest { assertEquals(2, mDecodedProto.carrierWifiMetrics.numConnectionAuthFailure); assertEquals(3, mDecodedProto.carrierWifiMetrics.numConnectionNonAuthFailure); } + + /** + * Verify the ConnectionEvent is labeled with networkType Passpoint correctly and that the OSU + * provisioned flag is set to true. + */ + @Test + public void testConnectionNetworkTypePasspointFromOsu() throws Exception { + WifiConfiguration config = WifiConfigurationTestUtil.createPasspointNetwork(); + config.updateIdentifier = "7"; + mWifiMetrics.startConnectionEvent(config, "RED", + WifiMetricsProto.ConnectionEvent.ROAM_NONE); + mWifiMetrics.endConnectionEvent( + WifiMetrics.ConnectionEvent.FAILURE_ASSOCIATION_TIMED_OUT, + WifiMetricsProto.ConnectionEvent.HLF_NONE, + WifiMetricsProto.ConnectionEvent.FAILURE_REASON_UNKNOWN); + dumpProtoAndDeserialize(); + + assertEquals(1, mDecodedProto.connectionEvent.length); + assertEquals(WifiMetricsProto.ConnectionEvent.TYPE_PASSPOINT, + mDecodedProto.connectionEvent[0].networkType); + assertTrue(mDecodedProto.connectionEvent[0].isOsuProvisioned); + } } |