summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPeter Qiu <zqiu@google.com>2017-07-12 17:44:19 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-07-12 17:44:19 +0000
commit209007db2b1f561b39a79e443e8ab82e9c67b8b0 (patch)
tree4752e8934974acdceb9cc90f7b6fd708b340430d /tests
parent9c785b63e3ddd34dbfb5fd736328019633ad9885 (diff)
parent49357a30edf5786c8db4bad6f5dbe62545751cc6 (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')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java32
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java3
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java91
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointProviderTest.java23
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());
+ }
}