diff options
4 files changed, 36 insertions, 16 deletions
diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index d70fa3044..0afca3e09 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -385,6 +385,8 @@ public class WifiMetrics { private Map<Pair<Integer, Integer>, NetworkSelectionExperimentResults> mNetworkSelectionExperimentPairNumChoicesCounts = new ArrayMap<>(); + private int mNetworkSelectorExperimentId; + private final CellularLinkLayerStatsCollector mCellularLinkLayerStatsCollector; /** @@ -996,7 +998,7 @@ public class WifiMetrics { mCurrentConnectionEvent.mConfigBssid = targetBSSID; mCurrentConnectionEvent.mConnectionEvent.roamType = roamType; mCurrentConnectionEvent.mConnectionEvent.networkSelectorExperimentId = - mScoringParams.getExperimentIdentifier(); + mNetworkSelectorExperimentId; mCurrentConnectionEvent.mRouterFingerPrint.updateFromWifiConfiguration(config); mCurrentConnectionEvent.mConfigBssid = "any"; mCurrentConnectionEvent.mRealStartTime = mClock.getElapsedSinceBootMillis(); @@ -4766,6 +4768,15 @@ public class WifiMetrics { } } + /** + * Sets the numeric CandidateScorer id. + */ + public void setNetworkSelectorExperimentId(int expId) { + synchronized (mLock) { + mNetworkSelectorExperimentId = expId; + } + } + /** Add a WifiLock acqusition session */ public void addWifiLockAcqSession(int lockType, long duration) { switch (lockType) { diff --git a/service/java/com/android/server/wifi/WifiNetworkSelector.java b/service/java/com/android/server/wifi/WifiNetworkSelector.java index b9ea717f3..f084e3151 100644 --- a/service/java/com/android/server/wifi/WifiNetworkSelector.java +++ b/service/java/com/android/server/wifi/WifiNetworkSelector.java @@ -834,6 +834,9 @@ public class WifiNetworkSelector { if (ans == null && PRESET_CANDIDATE_SCORER_NAME != null) { Log.wtf(TAG, PRESET_CANDIDATE_SCORER_NAME + " is not registered!"); } + mWifiMetrics.setNetworkSelectorExperimentId(ans == null + ? LEGACY_CANDIDATE_SCORER_EXP_ID + : experimentIdFromIdentifier(ans.getIdentifier())); return ans; } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java index 33da96690..5d94c1193 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java @@ -2159,13 +2159,12 @@ public class WifiMetricsTest { } /** - * Check ScoringParams + * Check network selector id */ @Test - public void testExperimentId() throws Exception { - final int id = 42; - final String expectId = "x" + id; - when(mScoringParams.getExperimentIdentifier()).thenReturn(id); + public void testNetworkSelectorExperimentId() throws Exception { + final int id = 42888888; + mWifiMetrics.setNetworkSelectorExperimentId(id); mWifiMetrics.startConnectionEvent(mTestWifiConfig, "TestNetwork", WifiMetricsProto.ConnectionEvent.ROAM_ENTERPRISE); mWifiMetrics.endConnectionEvent( @@ -2173,11 +2172,22 @@ public class WifiMetricsTest { WifiMetricsProto.ConnectionEvent.HLF_NONE, WifiMetricsProto.ConnectionEvent.FAILURE_REASON_UNKNOWN); dumpProtoAndDeserialize(); - assertEquals(expectId, mDecodedProto.scoreExperimentId); assertEquals(id, mDecodedProto.connectionEvent[0].networkSelectorExperimentId); } /** + * Check ScoringParams + */ + @Test + public void testExperimentId() throws Exception { + final int id = 42; + final String expectId = "x" + id; + when(mScoringParams.getExperimentIdentifier()).thenReturn(id); + dumpProtoAndDeserialize(); + assertEquals(expectId, mDecodedProto.scoreExperimentId); + } + + /** * Check ScoringParams default case */ @Test @@ -2185,16 +2195,8 @@ public class WifiMetricsTest { final int id = 0; final String expectId = ""; when(mScoringParams.getExperimentIdentifier()).thenReturn(id); - mWifiMetrics.startConnectionEvent(mTestWifiConfig, "TestNetwork", - WifiMetricsProto.ConnectionEvent.ROAM_ENTERPRISE); - mWifiMetrics.endConnectionEvent( - WifiMetrics.ConnectionEvent.FAILURE_NONE, - WifiMetricsProto.ConnectionEvent.HLF_NONE, - WifiMetricsProto.ConnectionEvent.FAILURE_REASON_UNKNOWN); dumpProtoAndDeserialize(); assertEquals(expectId, mDecodedProto.scoreExperimentId); - assertEquals(id, mDecodedProto.connectionEvent[0].networkSelectorExperimentId); - } /** short hand for instantiating an anonymous int array, instead of 'new int[]{a1, a2, ...}' */ diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java index ec79e5749..cda5d626b 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java @@ -783,6 +783,7 @@ public class WifiNetworkSelectorTest { WifiMetricsProto.ConnectionEvent.NOMINATOR_EXTERNAL_SCORED, WifiMetricsProto.ConnectionEvent.NOMINATOR_SAVED))); } + verify(mWifiMetrics, atLeastOnce()).setNetworkSelectorExperimentId(anyInt()); } /** @@ -1627,6 +1628,7 @@ public class WifiNetworkSelectorTest { verify(mWifiMetrics).logNetworkSelectionDecision( WifiNetworkSelector.LEGACY_CANDIDATE_SCORER_EXP_ID, nullScorerId, false, 2); verify(mWifiMetrics, atLeastOnce()).setNominatorForNetwork(anyInt(), anyInt()); + verify(mWifiMetrics, atLeastOnce()).setNetworkSelectorExperimentId(anyInt()); verifyNoMoreInteractions(mWifiMetrics); } @@ -1670,6 +1672,8 @@ public class WifiNetworkSelectorTest { verify(mWifiMetrics, times(2)).logNetworkSelectionDecision( WifiNetworkSelector.LEGACY_CANDIDATE_SCORER_EXP_ID, compatibilityExpId, true, 2); + + int expid = CompatibilityScorer.COMPATIBILITY_SCORER_DEFAULT_EXPID; + verify(mWifiMetrics, atLeastOnce()).setNetworkSelectorExperimentId(eq(expid)); } } - |