diff options
author | Peter Qiu <zqiu@google.com> | 2017-07-12 17:44:19 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-07-12 17:44:19 +0000 |
commit | 209007db2b1f561b39a79e443e8ab82e9c67b8b0 (patch) | |
tree | 4752e8934974acdceb9cc90f7b6fd708b340430d /tests | |
parent | 9c785b63e3ddd34dbfb5fd736328019633ad9885 (diff) | |
parent | 49357a30edf5786c8db4bad6f5dbe62545751cc6 (diff) |
Merge changes from topic 'passpoint_metrics' into oc-dr1-dev
* changes:
hotspot2: track number of providers that connected successfully
WifiMetrics: add support for Passpoint related metrics
Diffstat (limited to 'tests')
4 files changed, 147 insertions, 2 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java index 1c89190dd..e7216ce4a 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java @@ -237,6 +237,13 @@ public class WifiMetricsTest { private static final int NUM_WIFICOND_CRASHES = 12; private static final int NUM_WIFI_ON_FAILURE_DUE_TO_HAL = 13; private static final int NUM_WIFI_ON_FAILURE_DUE_TO_WIFICOND = 14; + private static final int NUM_PASSPOINT_PROVIDERS = 4; + private static final int NUM_PASSPOINT_PROVIDER_INSTALLATION = 5; + private static final int NUM_PASSPOINT_PROVIDER_INSTALL_SUCCESS = 4; + private static final int NUM_PASSPOINT_PROVIDER_UNINSTALLATION = 3; + private static final int NUM_PASSPOINT_PROVIDER_UNINSTALL_SUCCESS = 2; + private static final int NUM_PASSPOINT_PROVIDERS_SUCCESSFULLY_CONNECTED = 1; + private ScanDetail buildMockScanDetail(boolean hidden, NetworkDetail.HSRelease hSRelease, String capabilities) { @@ -288,6 +295,8 @@ public class WifiMetricsTest { */ public void setAndIncrementMetrics() throws Exception { mWifiMetrics.updateSavedNetworks(buildSavedNetworkList()); + mWifiMetrics.updateSavedPasspointProfiles(NUM_PASSPOINT_PROVIDERS, + NUM_PASSPOINT_PROVIDERS_SUCCESSFULLY_CONNECTED); mWifiMetrics.setIsLocationEnabled(TEST_VAL_IS_LOCATION_ENABLED); mWifiMetrics.setIsScanningAlwaysEnabled(IS_SCANNING_ALWAYS_ENABLED); @@ -421,6 +430,18 @@ public class WifiMetricsTest { for (int i = 0; i < NUM_WIFI_ON_FAILURE_DUE_TO_WIFICOND; i++) { mWifiMetrics.incrementNumWifiOnFailureDueToWificond(); } + for (int i = 0; i < NUM_PASSPOINT_PROVIDER_INSTALLATION; i++) { + mWifiMetrics.incrementNumPasspointProviderInstallation(); + } + for (int i = 0; i < NUM_PASSPOINT_PROVIDER_INSTALL_SUCCESS; i++) { + mWifiMetrics.incrementNumPasspointProviderInstallSuccess(); + } + for (int i = 0; i < NUM_PASSPOINT_PROVIDER_UNINSTALLATION; i++) { + mWifiMetrics.incrementNumPasspointProviderUninstallation(); + } + for (int i = 0; i < NUM_PASSPOINT_PROVIDER_UNINSTALL_SUCCESS; i++) { + mWifiMetrics.incrementNumPasspointProviderUninstallSuccess(); + } } /** @@ -563,6 +584,17 @@ public class WifiMetricsTest { mDeserializedWifiMetrics.numWifiOnFailureDueToHal); assertEquals(NUM_WIFI_ON_FAILURE_DUE_TO_WIFICOND, mDeserializedWifiMetrics.numWifiOnFailureDueToWificond); + assertEquals(NUM_PASSPOINT_PROVIDERS, mDeserializedWifiMetrics.numPasspointProviders); + assertEquals(NUM_PASSPOINT_PROVIDER_INSTALLATION, + mDeserializedWifiMetrics.numPasspointProviderInstallation); + assertEquals(NUM_PASSPOINT_PROVIDER_INSTALL_SUCCESS, + mDeserializedWifiMetrics.numPasspointProviderInstallSuccess); + assertEquals(NUM_PASSPOINT_PROVIDER_UNINSTALLATION, + mDeserializedWifiMetrics.numPasspointProviderUninstallation); + assertEquals(NUM_PASSPOINT_PROVIDER_UNINSTALL_SUCCESS, + mDeserializedWifiMetrics.numPasspointProviderUninstallSuccess); + assertEquals(NUM_PASSPOINT_PROVIDERS_SUCCESSFULLY_CONNECTED, + mDeserializedWifiMetrics.numPasspointProvidersSuccessfullyConnected); } /** diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java index 8e808efcf..7e05c3d09 100644 --- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java +++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java @@ -60,6 +60,7 @@ public class PasspointConfigStoreDataTest { private static final String TEST_CLIENT_PRIVATE_KEY_ALIAS = "ClientPrivateKey"; private static final long TEST_PROVIDER_ID = 1; private static final int TEST_CREATOR_UID = 1234; + private static final boolean TEST_HAS_EVER_CONNECTED = true; @Mock WifiKeyStore mKeyStore; @Mock SIMAccessor mSimAccessor; @@ -238,7 +239,7 @@ public class PasspointConfigStoreDataTest { providerList.add(new PasspointProvider(createFullPasspointConfiguration(), mKeyStore, mSimAccessor, TEST_PROVIDER_ID, TEST_CREATOR_UID, TEST_CA_CERTIFICATE_ALIAS, TEST_CLIENT_CERTIFICATE_ALIAS, - TEST_CLIENT_PRIVATE_KEY_ALIAS)); + TEST_CLIENT_PRIVATE_KEY_ALIAS, TEST_HAS_EVER_CONNECTED)); // Serialize data for user store. when(mDataSource.getProviders()).thenReturn(providerList); diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java index d2762d022..01566c203 100644 --- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java @@ -69,6 +69,7 @@ import com.android.server.wifi.SIMAccessor; import com.android.server.wifi.WifiConfigManager; import com.android.server.wifi.WifiConfigStore; import com.android.server.wifi.WifiKeyStore; +import com.android.server.wifi.WifiMetrics; import com.android.server.wifi.WifiNative; import com.android.server.wifi.hotspot2.anqp.ANQPElement; import com.android.server.wifi.hotspot2.anqp.Constants.ANQPElementType; @@ -128,6 +129,7 @@ public class PasspointManagerTest { @Mock WifiConfigManager mWifiConfigManager; @Mock WifiConfigStore mWifiConfigStore; @Mock PasspointConfigStoreData.DataSource mDataSource; + @Mock WifiMetrics mWifiMetrics; PasspointManager mManager; /** Sets up test. */ @@ -139,7 +141,7 @@ public class PasspointManagerTest { .thenReturn(mAnqpRequestManager); when(mObjectFactory.makeCertificateVerifier()).thenReturn(mCertVerifier); mManager = new PasspointManager(mContext, mWifiNative, mWifiKeyStore, mClock, - mSimAccessor, mObjectFactory, mWifiConfigManager, mWifiConfigStore); + mSimAccessor, mObjectFactory, mWifiConfigManager, mWifiConfigStore, mWifiMetrics); ArgumentCaptor<PasspointEventHandler.Callbacks> callbacks = ArgumentCaptor.forClass(PasspointEventHandler.Callbacks.class); verify(mObjectFactory).makePasspointEventHandler(any(WifiNative.class), @@ -411,6 +413,8 @@ public class PasspointManagerTest { @Test public void addProviderWithNullConfig() throws Exception { assertFalse(mManager.addOrUpdateProvider(null, TEST_CREATOR_UID)); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderInstallSuccess(); } /** @@ -421,6 +425,8 @@ public class PasspointManagerTest { @Test public void addProviderWithEmptyConfig() throws Exception { assertFalse(mManager.addOrUpdateProvider(new PasspointConfiguration(), TEST_CREATOR_UID)); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderInstallSuccess(); } /** @@ -435,6 +441,8 @@ public class PasspointManagerTest { // EAP-TLS not allowed for user credential. config.getCredential().getUserCredential().setEapType(EAPConstants.EAP_TLS); assertFalse(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderInstallSuccess(); } /** @@ -451,6 +459,9 @@ public class PasspointManagerTest { assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); verifyInstalledConfig(config); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess(); + reset(mWifiMetrics); reset(mWifiConfigManager); // Verify content in the data source. @@ -464,6 +475,8 @@ public class PasspointManagerTest { assertTrue(mManager.removeProvider(TEST_FQDN)); verify(provider).uninstallCertsAndKeys(); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderUninstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderUninstallSuccess(); assertTrue(mManager.getProviderConfigs().isEmpty()); // Verify content in the data source. @@ -486,6 +499,9 @@ public class PasspointManagerTest { assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); verifyInstalledConfig(config); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess(); + reset(mWifiMetrics); reset(mWifiConfigManager); // Verify content in the data source. @@ -499,6 +515,8 @@ public class PasspointManagerTest { assertTrue(mManager.removeProvider(TEST_FQDN)); verify(provider).uninstallCertsAndKeys(); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderUninstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderUninstallSuccess(); assertTrue(mManager.getProviderConfigs().isEmpty()); // Verify content in the data source. @@ -524,6 +542,9 @@ public class PasspointManagerTest { assertTrue(mManager.addOrUpdateProvider(origConfig, TEST_CREATOR_UID)); verifyInstalledConfig(origConfig); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess(); + reset(mWifiMetrics); reset(mWifiConfigManager); // Verify data source content. @@ -541,6 +562,8 @@ public class PasspointManagerTest { assertTrue(mManager.addOrUpdateProvider(newConfig, TEST_CREATOR_UID)); verifyInstalledConfig(newConfig); verify(mWifiConfigManager).saveToStore(true); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess(); // Verify data source content. List<PasspointProvider> newProviders = mDataSource.getProviders(); @@ -563,6 +586,8 @@ public class PasspointManagerTest { when(mObjectFactory.makePasspointProvider(eq(config), eq(mWifiKeyStore), eq(mSimAccessor), anyLong(), eq(TEST_CREATOR_UID))).thenReturn(provider); assertFalse(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderInstallSuccess(); } /** @@ -576,6 +601,8 @@ public class PasspointManagerTest { doThrow(new GeneralSecurityException()) .when(mCertVerifier).verifyCaCert(any(X509Certificate.class)); assertFalse(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderInstallSuccess(); } /** @@ -594,6 +621,8 @@ public class PasspointManagerTest { assertTrue(mManager.addOrUpdateProvider(config, TEST_CREATOR_UID)); verify(mCertVerifier, never()).verifyCaCert(any(X509Certificate.class)); verifyInstalledConfig(config); + verify(mWifiMetrics).incrementNumPasspointProviderInstallation(); + verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess(); } /** @@ -604,6 +633,8 @@ public class PasspointManagerTest { @Test public void removeNonExistingProvider() throws Exception { assertFalse(mManager.removeProvider(TEST_FQDN)); + verify(mWifiMetrics).incrementNumPasspointProviderUninstallation(); + verify(mWifiMetrics, never()).incrementNumPasspointProviderUninstallSuccess(); } /** @@ -1184,4 +1215,62 @@ public class PasspointManagerTest { assertFalse(PasspointManager.addLegacyPasspointConfig(wifiConfig)); } + + /** + * Verify that the provider's "hasEverConnected" flag will be set to true and the associated + * metric is updated after the provider was used to successfully connect to a Passpoint + * network for the first time. + * + * @throws Exception + */ + @Test + public void providerNetworkConnectedFirstTime() throws Exception { + PasspointProvider provider = addTestProvider(); + when(provider.getHasEverConnected()).thenReturn(false); + mManager.onPasspointNetworkConnected(TEST_FQDN); + verify(provider).setHasEverConnected(eq(true)); + } + + /** + * Verify that the provider's "hasEverConnected" flag the associated metric is not updated + * after the provider was used to successfully connect to a Passpoint network for non-first + * time. + * + * @throws Exception + */ + @Test + public void providerNetworkConnectedNotFirstTime() throws Exception { + PasspointProvider provider = addTestProvider(); + when(provider.getHasEverConnected()).thenReturn(true); + mManager.onPasspointNetworkConnected(TEST_FQDN); + verify(provider, never()).setHasEverConnected(anyBoolean()); + } + + /** + * Verify that the expected Passpoint metrics are updated when + * {@link PasspointManager#updateMetrics} is invoked. + * + * @throws Exception + */ + @Test + public void updateMetrics() throws Exception { + PasspointProvider provider = addTestProvider(); + + // Provider have not provided a successful network connection. + int expectedInstalledProviders = 1; + int expectedConnectedProviders = 0; + when(provider.getHasEverConnected()).thenReturn(false); + mManager.updateMetrics(); + verify(mWifiMetrics).updateSavedPasspointProfiles( + eq(expectedInstalledProviders), eq(expectedConnectedProviders)); + reset(provider); + reset(mWifiMetrics); + + // Provider have provided a successful network connection. + expectedConnectedProviders = 1; + when(provider.getHasEverConnected()).thenReturn(true); + mManager.updateMetrics(); + verify(mWifiMetrics).updateSavedPasspointProfiles( + eq(expectedInstalledProviders), eq(expectedConnectedProviders)); + } } diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java index 15f8471e0..9ee9fc6d5 100644 --- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java +++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java @@ -963,4 +963,27 @@ public class PasspointProviderTest { assertFalse(mProvider.isSimCredential()); } + + /** + * Verify that hasEverConnected flag is set correctly using + * {@link PasspointProvider#setHasEverConnected}. + * + * @throws Exception + */ + @Test + public void setHasEverConnected() throws Exception { + PasspointConfiguration config = new PasspointConfiguration(); + HomeSp homeSp = new HomeSp(); + homeSp.setFqdn("test1"); + config.setHomeSp(homeSp); + Credential credential = new Credential(); + credential.setUserCredential(new Credential.UserCredential()); + config.setCredential(credential); + mProvider = createProvider(config); + verifyInstalledConfig(config, true); + + assertFalse(mProvider.getHasEverConnected()); + mProvider.setHasEverConnected(true); + assertTrue(mProvider.getHasEverConnected()); + } } |