summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2018-11-05 16:18:53 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-11-05 16:18:53 +0000
commit356236173d6dc1dc992376cd717cdd8c509f6872 (patch)
tree8a197a4cd90f3aa805f7baac83481591796e96dc /tests
parent163e683668606f6b0a30535fb2e4219d0e0180a5 (diff)
parent697799b05b333bab62965d29f7b4fcb91b14fed9 (diff)
Merge changes Ibc07a7ad,Iebe54b6b
* changes: WifiConfigStore Refactor (2/2) WifiConfigStore Refactor (1/2)
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/DeletedEphemeralSsidsStoreDataTest.java51
-rw-r--r--tests/wifitests/src/com/android/server/wifi/NetworkListStoreDataTest.java89
-rw-r--r--tests/wifitests/src/com/android/server/wifi/SsidSetStoreDataTest.java51
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WakeupConfigStoreDataTest.java53
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java76
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConfigStoreTest.java387
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigSharedStoreDataTest.java125
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigUserStoreDataTest.java (renamed from tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java)57
-rw-r--r--tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java47
10 files changed, 540 insertions, 398 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/DeletedEphemeralSsidsStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/DeletedEphemeralSsidsStoreDataTest.java
index 289a3beab..2af8b557c 100644
--- a/tests/wifitests/src/com/android/server/wifi/DeletedEphemeralSsidsStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/DeletedEphemeralSsidsStoreDataTest.java
@@ -27,7 +27,6 @@ import com.android.internal.util.FastXmlSerializer;
import org.junit.Before;
import org.junit.Test;
import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import java.io.ByteArrayInputStream;
@@ -61,15 +60,14 @@ public class DeletedEphemeralSsidsStoreDataTest {
/**
* Helper function for serializing configuration data to a XML block.
*
- * @param shared Flag indicating serializing shared or user configurations
* @return byte[] of the XML data
* @throws Exception
*/
- private byte[] serializeData(boolean shared) throws Exception {
+ private byte[] serializeData() throws Exception {
final XmlSerializer out = new FastXmlSerializer();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
out.setOutput(outputStream, StandardCharsets.UTF_8.name());
- mDeletedEphemeralSsidsStoreData.serializeData(out, shared);
+ mDeletedEphemeralSsidsStoreData.serializeData(out);
out.flush();
return outputStream.toByteArray();
}
@@ -78,43 +76,18 @@ public class DeletedEphemeralSsidsStoreDataTest {
* Helper function for parsing configuration data from a XML block.
*
* @param data XML data to parse from
- * @param shared Flag indicating parsing of shared or user configurations
* @return SSID list
* @throws Exception
*/
- private Set<String> deserializeData(byte[] data, boolean shared) throws Exception {
+ private Set<String> deserializeData(byte[] data) throws Exception {
final XmlPullParser in = Xml.newPullParser();
final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
in.setInput(inputStream, StandardCharsets.UTF_8.name());
- mDeletedEphemeralSsidsStoreData.deserializeData(in, in.getDepth(), shared);
+ mDeletedEphemeralSsidsStoreData.deserializeData(in, in.getDepth());
return mDeletedEphemeralSsidsStoreData.getSsidList();
}
/**
- * Verify that a XmlPullParserException will be thrown when attempting to serialize SSID list
- * to the share store, since the deleted ephemeral SSID list should never be persist
- * to the share store.
- *
- * @throws Exception
- */
- @Test(expected = XmlPullParserException.class)
- public void serializeShareData() throws Exception {
- serializeData(true /* shared */);
- }
-
- /**
- * Verify that a XmlPullParserException will be thrown when attempting to parse SSID list
- * from the share store, since the deleted ephemeral SSID list should never be persist
- * to the share store.
- *
- * @throws Exception
- */
- @Test(expected = XmlPullParserException.class)
- public void deserializeShareData() throws Exception {
- deserializeData(new byte[0], true /* shared */);
- }
-
- /**
* Verify that serializing the user store data without any configuration doesn't cause any
* crash and no data should be serialized.
*
@@ -122,7 +95,7 @@ public class DeletedEphemeralSsidsStoreDataTest {
*/
@Test
public void serializeEmptyConfigs() throws Exception {
- assertEquals(0, serializeData(false /* shared */).length);
+ assertEquals(0, serializeData().length);
}
/**
@@ -133,17 +106,19 @@ public class DeletedEphemeralSsidsStoreDataTest {
*/
@Test
public void deserializeEmptyData() throws Exception {
- assertTrue(deserializeData(new byte[0], false /* shared */).isEmpty());
+ assertTrue(deserializeData(new byte[0]).isEmpty());
}
/**
- * Verify that DeletedEphemeralSsidsStoreData does not support share data.
+ * Verify that DeletedEphemeralSsidsStoreData is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_USER_GENERAL}.
*
* @throws Exception
*/
@Test
- public void supportShareData() throws Exception {
- assertFalse(mDeletedEphemeralSsidsStoreData.supportShareData());
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_USER_GENERAL,
+ mDeletedEphemeralSsidsStoreData.getStoreFileId());
}
/**
@@ -158,7 +133,7 @@ public class DeletedEphemeralSsidsStoreDataTest {
ssidList.add(TEST_SSID1);
ssidList.add(TEST_SSID2);
mDeletedEphemeralSsidsStoreData.setSsidList(ssidList);
- byte[] actualData = serializeData(false /* shared */);
+ byte[] actualData = serializeData();
assertTrue(Arrays.equals(TEST_SSID_LIST_XML_BYTES, actualData));
}
@@ -173,6 +148,6 @@ public class DeletedEphemeralSsidsStoreDataTest {
Set<String> ssidList = new HashSet<>();
ssidList.add(TEST_SSID1);
ssidList.add(TEST_SSID2);
- assertEquals(ssidList, deserializeData(TEST_SSID_LIST_XML_BYTES, false /* shared */));
+ assertEquals(ssidList, deserializeData(TEST_SSID_LIST_XML_BYTES));
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/NetworkListStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/NetworkListStoreDataTest.java
index caed9445e..5fa15e81b 100644
--- a/tests/wifitests/src/com/android/server/wifi/NetworkListStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/NetworkListStoreDataTest.java
@@ -48,7 +48,7 @@ import java.util.Arrays;
import java.util.List;
/**
- * Unit tests for {@link com.android.server.wifi.NetworksListStoreData}.
+ * Unit tests for {@link com.android.server.wifi.NetworkListStoreData}.
*/
@SmallTest
public class NetworkListStoreDataTest {
@@ -182,7 +182,9 @@ public class NetworkListStoreDataTest {
+ "</WifiEnterpriseConfiguration>\n"
+ "</Network>\n";
- private NetworkListStoreData mNetworkListStoreData;
+ // We use {@link NetworkListSharedStoreData} instance because {@link NetworkListStoreData} is
+ // abstract.
+ private NetworkListSharedStoreData mNetworkListSharedStoreData;
@Mock private Context mContext;
@Mock private PackageManager mPackageManager;
@@ -191,21 +193,20 @@ public class NetworkListStoreDataTest {
MockitoAnnotations.initMocks(this);
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getNameForUid(anyInt())).thenReturn(TEST_CREATOR_NAME);
- mNetworkListStoreData = new NetworkListStoreData(mContext);
+ mNetworkListSharedStoreData = new NetworkListSharedStoreData(mContext);
}
/**
* Helper function for serializing configuration data to a XML block.
*
- * @param shared Flag indicating serializing shared or user configurations
* @return byte[] of the XML data
* @throws Exception
*/
- private byte[] serializeData(boolean shared) throws Exception {
+ private byte[] serializeData() throws Exception {
final XmlSerializer out = new FastXmlSerializer();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
out.setOutput(outputStream, StandardCharsets.UTF_8.name());
- mNetworkListStoreData.serializeData(out, shared);
+ mNetworkListSharedStoreData.serializeData(out);
out.flush();
return outputStream.toByteArray();
}
@@ -214,20 +215,15 @@ public class NetworkListStoreDataTest {
* Helper function for parsing configuration data from a XML block.
*
* @param data XML data to parse from
- * @param shared Flag indicating parsing of shared or user configurations
* @return List of WifiConfiguration parsed
* @throws Exception
*/
- private List<WifiConfiguration> deserializeData(byte[] data, boolean shared) throws Exception {
+ private List<WifiConfiguration> deserializeData(byte[] data) throws Exception {
final XmlPullParser in = Xml.newPullParser();
final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
in.setInput(inputStream, StandardCharsets.UTF_8.name());
- mNetworkListStoreData.deserializeData(in, in.getDepth(), shared);
- if (shared) {
- return mNetworkListStoreData.getSharedConfigurations();
- } else {
- return mNetworkListStoreData.getUserConfigurations();
- }
+ mNetworkListSharedStoreData.deserializeData(in, in.getDepth());
+ return mNetworkListSharedStoreData.getConfigurations();
}
/**
@@ -288,8 +284,7 @@ public class NetworkListStoreDataTest {
*/
@Test
public void serializeEmptyConfigs() throws Exception {
- assertEquals(0, serializeData(true /* shared */).length);
- assertEquals(0, serializeData(false /* shared */).length);
+ assertEquals(0, serializeData().length);
}
/**
@@ -300,18 +295,23 @@ public class NetworkListStoreDataTest {
*/
@Test
public void deserializeEmptyData() throws Exception {
- assertTrue(deserializeData(new byte[0], true /* shared */).isEmpty());
- assertTrue(deserializeData(new byte[0], false /* shared */).isEmpty());
+ assertTrue(deserializeData(new byte[0]).isEmpty());
}
/**
- * Verify that NetworkListStoreData does support share data.
+ * Verify that {@link NetworkListSharedStoreData} is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_SHARED_GENERAL}.
+ * Verify that {@link NetworkListUserStoreData} is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_USER_GENERAL}.
*
* @throws Exception
*/
@Test
- public void supportShareData() throws Exception {
- assertTrue(mNetworkListStoreData.supportShareData());
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_SHARED_GENERAL,
+ mNetworkListSharedStoreData.getStoreFileId());
+ assertEquals(WifiConfigStore.STORE_FILE_USER_GENERAL,
+ new NetworkListUserStoreData(mContext).getStoreFileId());
}
/**
@@ -323,9 +323,9 @@ public class NetworkListStoreDataTest {
@Test
public void serializeSharedConfigurations() throws Exception {
List<WifiConfiguration> networkList = getTestNetworksConfig(true /* shared */);
- mNetworkListStoreData.setSharedConfigurations(networkList);
+ mNetworkListSharedStoreData.setConfigurations(networkList);
byte[] expectedData = getTestNetworksXmlBytes(networkList.get(0), networkList.get(1));
- assertTrue(Arrays.equals(expectedData, serializeData(true /* shared */)));
+ assertTrue(Arrays.equals(expectedData, serializeData()));
}
/**
@@ -338,34 +338,7 @@ public class NetworkListStoreDataTest {
List<WifiConfiguration> networkList = getTestNetworksConfig(true /* shared */);
byte[] xmlData = getTestNetworksXmlBytes(networkList.get(0), networkList.get(1));
WifiConfigurationTestUtil.assertConfigurationsEqualForConfigStore(
- networkList, deserializeData(xmlData, true /* shared */));
- }
-
- /**
- * Verify that the user configurations (containing an open and an EAP network) are serialized
- * correctly, matching the expected XML string.
- *
- * @throws Exception
- */
- @Test
- public void serializeUserConfigurations() throws Exception {
- List<WifiConfiguration> networkList = getTestNetworksConfig(false /* shared */);
- mNetworkListStoreData.setUserConfigurations(networkList);
- byte[] expectedData = getTestNetworksXmlBytes(networkList.get(0), networkList.get(1));
- assertTrue(Arrays.equals(expectedData, serializeData(false /* shared */)));
- }
-
- /**
- * Verify that the user configurations are parsed correctly from a XML string containing
- * test networks (an open and an EAP network).
- * @throws Exception
- */
- @Test
- public void deserializeUserConfigurations() throws Exception {
- List<WifiConfiguration> networkList = getTestNetworksConfig(false /* shared */);
- byte[] xmlData = getTestNetworksXmlBytes(networkList.get(0), networkList.get(1));
- WifiConfigurationTestUtil.assertConfigurationsEqualForConfigStore(
- networkList, deserializeData(xmlData, false /* shared */));
+ networkList, deserializeData(xmlData));
}
/**
@@ -432,7 +405,7 @@ public class NetworkListStoreDataTest {
openNetwork.SSID.replaceAll("\"", "&quot;"),
openNetwork.shared, openNetwork.creatorUid, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- deserializeData(xmlData, true);
+ deserializeData(xmlData);
}
/**
@@ -450,7 +423,7 @@ public class NetworkListStoreDataTest {
openNetwork.shared, openNetwork.creatorUid,
openNetwork.creatorName, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- deserializeData(xmlData, true);
+ deserializeData(xmlData);
}
/**
@@ -470,7 +443,7 @@ public class NetworkListStoreDataTest {
String.format(XmlUtilTest.XML_STRING_EAP_METHOD_REPLACE_FORMAT,
WifiEnterpriseConfig.Eap.NONE));
List<WifiConfiguration> retrievedNetworkList =
- deserializeData(xmlString.getBytes(StandardCharsets.UTF_8), true /* shared */);
+ deserializeData(xmlString.getBytes(StandardCharsets.UTF_8));
// Retrieved network should not contain the eap network.
assertEquals(1, retrievedNetworkList.size());
for (WifiConfiguration network : retrievedNetworkList) {
@@ -495,7 +468,7 @@ public class NetworkListStoreDataTest {
openNetwork.shared, openNetwork.creatorUid,
openNetwork.creatorName, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData, true);
+ List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData);
assertEquals(1, deserializedNetworks.size());
assertEquals(openNetwork.configKey(), deserializedNetworks.get(0).configKey());
assertEquals(SYSTEM_UID, deserializedNetworks.get(0).creatorUid);
@@ -523,7 +496,7 @@ public class NetworkListStoreDataTest {
openNetwork.shared, openNetwork.creatorUid,
openNetwork.creatorName, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData, true);
+ List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData);
assertEquals(1, deserializedNetworks.size());
assertEquals(openNetwork.configKey(), deserializedNetworks.get(0).configKey());
assertEquals(openNetwork.creatorUid, deserializedNetworks.get(0).creatorUid);
@@ -550,7 +523,7 @@ public class NetworkListStoreDataTest {
openNetwork.shared, openNetwork.creatorUid,
openNetwork.creatorName, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData, true);
+ List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData);
assertEquals(1, deserializedNetworks.size());
assertEquals(openNetwork.configKey(), deserializedNetworks.get(0).configKey());
assertEquals(openNetwork.creatorUid, deserializedNetworks.get(0).creatorUid);
@@ -571,7 +544,7 @@ public class NetworkListStoreDataTest {
openNetwork.shared, openNetwork.creatorUid,
openNetwork.creatorName, openNetwork.getRandomizedMacAddress())
.getBytes(StandardCharsets.UTF_8);
- List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData, true);
+ List<WifiConfiguration> deserializedNetworks = deserializeData(xmlData);
assertEquals(1, deserializedNetworks.size());
assertEquals(openNetwork.configKey(), deserializedNetworks.get(0).configKey());
assertEquals(openNetwork.creatorUid, deserializedNetworks.get(0).creatorUid);
diff --git a/tests/wifitests/src/com/android/server/wifi/SsidSetStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/SsidSetStoreDataTest.java
index 8a9d9bc80..86ebb875f 100644
--- a/tests/wifitests/src/com/android/server/wifi/SsidSetStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/SsidSetStoreDataTest.java
@@ -17,7 +17,6 @@
package com.android.server.wifi;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.eq;
@@ -73,15 +72,14 @@ public class SsidSetStoreDataTest {
/**
* Helper function for serializing configuration data to a XML block.
*
- * @param shared Flag indicating serializing shared or user configurations
* @return byte[] of the XML data
* @throws Exception
*/
- private byte[] serializeData(boolean shared) throws Exception {
+ private byte[] serializeData() throws Exception {
final XmlSerializer out = new FastXmlSerializer();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
out.setOutput(outputStream, StandardCharsets.UTF_8.name());
- mSsidSetStoreData.serializeData(out, shared);
+ mSsidSetStoreData.serializeData(out);
out.flush();
return outputStream.toByteArray();
}
@@ -90,36 +88,13 @@ public class SsidSetStoreDataTest {
* Helper function for parsing configuration data from a XML block.
*
* @param data XML data to parse from
- * @param shared Flag indicating parsing of shared or user configurations
* @throws Exception
*/
- private void deserializeData(byte[] data, boolean shared) throws Exception {
+ private void deserializeData(byte[] data) throws Exception {
final XmlPullParser in = Xml.newPullParser();
final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
in.setInput(inputStream, StandardCharsets.UTF_8.name());
- mSsidSetStoreData.deserializeData(in, in.getDepth(), shared);
- }
-
- /**
- * Verify that a XmlPullParserException will be thrown when attempting to serialize data
- * to the share store.
- *
- * @throws Exception
- */
- @Test(expected = XmlPullParserException.class)
- public void serializeShareData() throws Exception {
- serializeData(true /* shared */);
- }
-
- /**
- * Verify that a XmlPullParserException will be thrown when attempting to deserialize
- * data from the share store.
- *
- * @throws Exception
- */
- @Test(expected = XmlPullParserException.class)
- public void deserializeShareData() throws Exception {
- deserializeData(new byte[0], true /* shared */);
+ mSsidSetStoreData.deserializeData(in, in.getDepth());
}
/**
@@ -131,7 +106,7 @@ public class SsidSetStoreDataTest {
@Test
public void serializeEmptyConfigs() throws Exception {
when(mDataSource.getSsids()).thenReturn(new HashSet<String>());
- assertEquals(0, serializeData(false /* shared */).length);
+ assertEquals(0, serializeData().length);
}
/**
@@ -142,18 +117,20 @@ public class SsidSetStoreDataTest {
*/
@Test
public void deserializeEmptyStoreData() throws Exception {
- deserializeData(new byte[0], false /* shared */);
+ deserializeData(new byte[0]);
verify(mDataSource, never()).setSsids(any(Set.class));
}
/**
- * Verify that {@link SsidSetStoreData} does not support share data.
+ * Verify that SsidSetStoreData is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_USER_GENERAL}.
*
* @throws Exception
*/
@Test
- public void supportShareData() throws Exception {
- assertFalse(mSsidSetStoreData.supportShareData());
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_USER_GENERAL,
+ mSsidSetStoreData.getStoreFileId());
}
/**
@@ -167,7 +144,7 @@ public class SsidSetStoreDataTest {
ssidSet.add(TEST_SSID1);
ssidSet.add(TEST_SSID2);
when(mDataSource.getSsids()).thenReturn(ssidSet);
- byte[] actualData = serializeData(false /* shared */);
+ byte[] actualData = serializeData();
assertTrue(Arrays.equals(TEST_SSID_SET_XML_BYTES, actualData));
}
@@ -181,7 +158,7 @@ public class SsidSetStoreDataTest {
Set<String> ssidSet = new HashSet<>();
ssidSet.add(TEST_SSID1);
ssidSet.add(TEST_SSID2);
- deserializeData(TEST_SSID_SET_XML_BYTES, false /* shared */);
+ deserializeData(TEST_SSID_SET_XML_BYTES);
verify(mDataSource).setSsids(eq(ssidSet));
}
@@ -199,6 +176,6 @@ public class SsidSetStoreDataTest {
+ "<string>" + TEST_SSID2 + "</string>\n"
+ "<Unknown>" + "badInput" + "</Unknown>" // Unknown tag.
+ "</set>\n";
- deserializeData(ssidSet.getBytes(StandardCharsets.UTF_8), false /* shared */);
+ deserializeData(ssidSet.getBytes(StandardCharsets.UTF_8));
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupConfigStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupConfigStoreDataTest.java
index 33f1b42fe..cfb0e1c80 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupConfigStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupConfigStoreDataTest.java
@@ -16,6 +16,7 @@
package com.android.server.wifi;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.eq;
@@ -34,7 +35,6 @@ import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import java.io.ByteArrayInputStream;
@@ -67,14 +67,13 @@ public class WakeupConfigStoreDataTest {
/**
* Helper function for serializing configuration data to a XML block.
*
- * @param shared Flag indicating serializing shared or user configurations
* @return byte[] of the XML data
*/
- private byte[] serializeData(boolean shared) throws Exception {
+ private byte[] serializeData() throws Exception {
final XmlSerializer out = new FastXmlSerializer();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
out.setOutput(outputStream, StandardCharsets.UTF_8.name());
- mWakeupConfigData.serializeData(out, shared);
+ mWakeupConfigData.serializeData(out);
out.flush();
return outputStream.toByteArray();
}
@@ -83,31 +82,12 @@ public class WakeupConfigStoreDataTest {
* Helper function for parsing configuration data from a XML block.
*
* @param data XML data to parse from
- * @param shared Flag indicating parsing of shared or user configurations
*/
- private void deserializeData(byte[] data, boolean shared) throws Exception {
+ private void deserializeData(byte[] data) throws Exception {
final XmlPullParser in = Xml.newPullParser();
final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
in.setInput(inputStream, StandardCharsets.UTF_8.name());
- mWakeupConfigData.deserializeData(in, in.getDepth(), shared);
- }
-
- /**
- * Verify that a XmlPullParserException will be thrown when attempting to serialize data
- * to the share store.
- */
- @Test(expected = XmlPullParserException.class)
- public void serializeShareDataThrowsException() throws Exception {
- serializeData(true /* shared */);
- }
-
- /**
- * Verify that a XmlPullParserException will be thrown when attempting to deserialize
- * data from the share store.
- */
- @Test(expected = XmlPullParserException.class)
- public void deserializeShareDataThrowsException() throws Exception {
- deserializeData(new byte[0], true /* shared */);
+ mWakeupConfigData.deserializeData(in, in.getDepth());
}
/**
@@ -125,8 +105,8 @@ public class WakeupConfigStoreDataTest {
when(mNotificationsDataSource.getData()).thenReturn(notificationsShown);
when(mNetworkDataSource.getData()).thenReturn(networks);
- byte[] bytes = serializeData(false /* shared */);
- deserializeData(bytes, false /* shared */);
+ byte[] bytes = serializeData();
+ deserializeData(bytes);
verify(mActiveDataSource).setData(eq(isActive));
verify(mIsOnboardedDataSource).setData(eq(isOnboarded));
@@ -161,8 +141,8 @@ public class WakeupConfigStoreDataTest {
when(mNotificationsDataSource.getData()).thenReturn(notificationsShown);
when(mNetworkDataSource.getData()).thenReturn(networks);
- byte[] bytes = serializeData(false /* shared */);
- deserializeData(bytes, false /* shared */);
+ byte[] bytes = serializeData();
+ deserializeData(bytes);
verify(mActiveDataSource).setData(eq(isActive));
verify(mIsOnboardedDataSource).setData(eq(isOnboarded));
@@ -175,7 +155,7 @@ public class WakeupConfigStoreDataTest {
*/
@Test
public void resetDataWipesDataSources() {
- mWakeupConfigData.resetData(false /* shared */);
+ mWakeupConfigData.resetData();
verify(mActiveDataSource).setData(false);
verify(mIsOnboardedDataSource).setData(false);
@@ -196,16 +176,19 @@ public class WakeupConfigStoreDataTest {
*/
@Test
public void hasBeenReadIsTrueWhenUserStoreIsLoaded() throws Exception {
- mWakeupConfigData.deserializeData(null /* in */, 0 /* outerTagDepth */, false /* shared */);
+ mWakeupConfigData.deserializeData(null /* in */, 0 /* outerTagDepth */);
assertTrue(mWakeupConfigData.hasBeenRead());
}
/**
- * Verify that hasBeenRead returns false if only the shared store has been read.
+ * Verify that WakeUpConfigStoreData is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_USER_GENERAL}.
+ *
+ * @throws Exception
*/
@Test
- public void hasBeenReadIsFalseWhenSharedStoreIsLoaded() throws Exception {
- mWakeupConfigData.deserializeData(null /* in */, 0 /* outerTagDepth */, true /* shared */);
- assertFalse(mWakeupConfigData.hasBeenRead());
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_USER_GENERAL,
+ mWakeupConfigData.getStoreFileId());
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
index 3734ba786..4d8f03481 100644
--- a/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WakeupControllerTest.java
@@ -142,7 +142,7 @@ public class WakeupControllerTest {
private void readUserStore() {
try {
- mWakeupConfigStoreData.deserializeData(null, 0, false);
+ mWakeupConfigStoreData.deserializeData(null, 0);
} catch (XmlPullParserException | IOException e) {
// unreachable
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
index 6fd39a4a5..40f9f459d 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigManagerTest.java
@@ -109,7 +109,8 @@ public class WifiConfigManagerTest {
@Mock private DevicePolicyManagerInternal mDevicePolicyManagerInternal;
@Mock private WifiPermissionsUtil mWifiPermissionsUtil;
@Mock private WifiPermissionsWrapper mWifiPermissionsWrapper;
- @Mock private NetworkListStoreData mNetworkListStoreData;
+ @Mock private NetworkListSharedStoreData mNetworkListSharedStoreData;
+ @Mock private NetworkListUserStoreData mNetworkListUserStoreData;
@Mock private DeletedEphemeralSsidsStoreData mDeletedEphemeralSsidsStoreData;
@Mock private WifiConfigManager.OnSavedNetworkUpdateListener mWcmListener;
@@ -129,7 +130,8 @@ public class WifiConfigManagerTest {
// Set up the inorder for verifications. This is needed to verify that the broadcasts,
// store writes for network updates followed by network additions are in the expected order.
mContextConfigStoreMockOrder = inOrder(mContext, mWifiConfigStore);
- mNetworkListStoreDataMockOrder = inOrder(mNetworkListStoreData);
+ mNetworkListStoreDataMockOrder =
+ inOrder(mNetworkListSharedStoreData, mNetworkListUserStoreData);
// Set up the package name stuff & permission override.
when(mContext.getPackageManager()).thenReturn(mPackageManager);
@@ -2177,7 +2179,7 @@ public class WifiConfigManagerTest {
// Now switch the user to user 2 and ensure that shared network's IDs have not changed.
when(mUserManager.isUserUnlockingOrUnlocked(user2)).thenReturn(true);
mWifiConfigManager.handleUserSwitch(user2);
- verify(mWifiConfigStore).switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ verify(mWifiConfigStore).switchUserStoresAndRead(any(List.class));
// Again fetch the network ID's assigned to the shared networks and ensure they have not
// changed.
@@ -2254,7 +2256,7 @@ public class WifiConfigManagerTest {
// Now switch the user to user 2 and ensure that user 1's private network has been removed.
when(mUserManager.isUserUnlockingOrUnlocked(user2)).thenReturn(true);
Set<Integer> removedNetworks = mWifiConfigManager.handleUserSwitch(user2);
- verify(mWifiConfigStore).switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ verify(mWifiConfigStore).switchUserStoresAndRead(any(List.class));
assertTrue((removedNetworks.size() == 1) && (removedNetworks.contains(user1NetworkId)));
// Set the expected networks to be |sharedNetwork| and |user2Network|.
@@ -2316,7 +2318,7 @@ public class WifiConfigManagerTest {
// Now switch the user to user 2 and ensure that no private network has been removed.
when(mUserManager.isUserUnlockingOrUnlocked(user2)).thenReturn(true);
Set<Integer> removedNetworks = mWifiConfigManager.handleUserSwitch(user2);
- verify(mWifiConfigStore).switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ verify(mWifiConfigStore).switchUserStoresAndRead(any(List.class));
assertTrue(removedNetworks.isEmpty());
}
@@ -2367,7 +2369,7 @@ public class WifiConfigManagerTest {
};
setupStoreDataForUserRead(userNetworks, new HashSet<String>());
mWifiConfigManager.handleUserUnlock(user1);
- verify(mWifiConfigStore).switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ verify(mWifiConfigStore).switchUserStoresAndRead(any(List.class));
// Capture the written data for the user 1 and ensure that it corresponds to what was
// setup.
Pair<List<WifiConfiguration>, List<WifiConfiguration>> writtenNetworkList =
@@ -2446,7 +2448,7 @@ public class WifiConfigManagerTest {
// the configured networks (migrated to PasspointManager).
setupStoreDataForUserRead(new ArrayList<WifiConfiguration>(), new HashSet<String>());
mWifiConfigManager.handleUserUnlock(user1);
- verify(mWifiConfigStore).switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ verify(mWifiConfigStore).switchUserStoresAndRead(any(List.class));
Pair<List<WifiConfiguration>, List<WifiConfiguration>> writtenNetworkList =
captureWriteNetworksListStoreData();
assertTrue(writtenNetworkList.first.isEmpty());
@@ -2474,7 +2476,7 @@ public class WifiConfigManagerTest {
mWifiConfigManager.handleUserSwitch(user2);
// Ensure that the read was invoked.
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
}
/**
@@ -2497,18 +2499,18 @@ public class WifiConfigManagerTest {
// Ensure that the read was not invoked.
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
// Now try unlocking some other user (user1), this should be ignored.
mWifiConfigManager.handleUserUnlock(user1);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
setupStoreDataForUserRead(new ArrayList<WifiConfiguration>(), new HashSet<String>());
// Unlock the user2 and ensure that we read the data now.
mWifiConfigManager.handleUserUnlock(user2);
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
}
/**
@@ -2528,12 +2530,12 @@ public class WifiConfigManagerTest {
when(mUserManager.isUserUnlockingOrUnlocked(user2)).thenReturn(false);
mWifiConfigManager.handleUserStop(user2);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
// Now try stopping the foreground user1, this should trigger a write to store.
mWifiConfigManager.handleUserStop(user1);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
mContextConfigStoreMockOrder.verify(mWifiConfigStore).write(anyBoolean());
}
@@ -2593,14 +2595,14 @@ public class WifiConfigManagerTest {
mContextConfigStoreMockOrder.verify(mWifiConfigStore).read();
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).write(anyBoolean());
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
setupStoreDataForUserRead(new ArrayList<WifiConfiguration>(), new HashSet<String>());
// Unlock the user1 (default user) for the first time and ensure that we read the data.
mWifiConfigManager.handleUserUnlock(user1);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).read();
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
mContextConfigStoreMockOrder.verify(mWifiConfigStore).write(anyBoolean());
}
@@ -2619,13 +2621,13 @@ public class WifiConfigManagerTest {
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).read();
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).write(anyBoolean());
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
setupStoreDataForUserRead(new ArrayList<WifiConfiguration>(), new HashSet<String>());
// Read from store now.
assertTrue(mWifiConfigManager.loadFromStore());
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .setUserStore(any(WifiConfigStore.StoreFile.class));
+ .setUserStores(any(List.class));
mContextConfigStoreMockOrder.verify(mWifiConfigStore).read();
}
@@ -2646,7 +2648,7 @@ public class WifiConfigManagerTest {
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).read();
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).write(anyBoolean());
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
// Now load from the store.
assertTrue(mWifiConfigManager.loadFromStore());
@@ -2656,7 +2658,7 @@ public class WifiConfigManagerTest {
setupStoreDataForUserRead(new ArrayList<>(), new HashSet<>());
mWifiConfigManager.handleUserUnlock(user2);
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
}
/**
@@ -2678,12 +2680,12 @@ public class WifiConfigManagerTest {
mWifiConfigManager.handleUserSwitch(user2);
// Ensure that the read was invoked.
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
// Unlock the user2 again and ensure that we don't read the data now.
mWifiConfigManager.handleUserUnlock(user2);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
}
/**
@@ -2699,7 +2701,7 @@ public class WifiConfigManagerTest {
when(mUserManager.isUserUnlockingOrUnlocked(user2)).thenReturn(false);
mWifiConfigManager.handleUserSwitch(user2);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).write(anyBoolean());
}
@@ -2715,7 +2717,7 @@ public class WifiConfigManagerTest {
// write the store files.
mWifiConfigManager.handleUserUnlock(user1);
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never())
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
mContextConfigStoreMockOrder.verify(mWifiConfigStore, never()).write(anyBoolean());
}
@@ -2863,7 +2865,7 @@ public class WifiConfigManagerTest {
mWifiConfigManager.handleUserSwitch(user2);
// Ensure that the read was invoked.
mContextConfigStoreMockOrder.verify(mWifiConfigStore)
- .switchUserStoreAndRead(any(WifiConfigStore.StoreFile.class));
+ .switchUserStoresAndRead(any(List.class));
}
/**
@@ -3753,8 +3755,8 @@ public class WifiConfigManagerTest {
new WifiConfigManager(
mContext, mClock, mUserManager, mTelephonyManager,
mWifiKeyStore, mWifiConfigStore, mWifiConfigStoreLegacy,
- mWifiPermissionsUtil, mWifiPermissionsWrapper, mNetworkListStoreData,
- mDeletedEphemeralSsidsStoreData);
+ mWifiPermissionsUtil, mWifiPermissionsWrapper, mNetworkListSharedStoreData,
+ mNetworkListUserStoreData, mDeletedEphemeralSsidsStoreData);
mWifiConfigManager.enableVerboseLogging(1);
}
@@ -3889,10 +3891,10 @@ public class WifiConfigManagerTest {
ArgumentCaptor.forClass(ArrayList.class);
ArgumentCaptor<ArrayList> userConfigsCaptor =
ArgumentCaptor.forClass(ArrayList.class);
- mNetworkListStoreDataMockOrder.verify(mNetworkListStoreData)
- .setSharedConfigurations(sharedConfigsCaptor.capture());
- mNetworkListStoreDataMockOrder.verify(mNetworkListStoreData)
- .setUserConfigurations(userConfigsCaptor.capture());
+ mNetworkListStoreDataMockOrder.verify(mNetworkListSharedStoreData)
+ .setConfigurations(sharedConfigsCaptor.capture());
+ mNetworkListStoreDataMockOrder.verify(mNetworkListUserStoreData)
+ .setConfigurations(userConfigsCaptor.capture());
mContextConfigStoreMockOrder.verify(mWifiConfigStore).write(anyBoolean());
return Pair.create(sharedConfigsCaptor.getValue(), userConfigsCaptor.getValue());
} catch (Exception e) {
@@ -3937,19 +3939,19 @@ public class WifiConfigManagerTest {
*/
private void setupStoreDataForRead(List<WifiConfiguration> sharedConfigurations,
List<WifiConfiguration> userConfigurations, Set<String> deletedEphemeralSsids) {
- when(mNetworkListStoreData.getSharedConfigurations())
+ when(mNetworkListSharedStoreData.getConfigurations())
.thenReturn(sharedConfigurations);
- when(mNetworkListStoreData.getUserConfigurations()).thenReturn(userConfigurations);
+ when(mNetworkListUserStoreData.getConfigurations()).thenReturn(userConfigurations);
when(mDeletedEphemeralSsidsStoreData.getSsidList()).thenReturn(deletedEphemeralSsids);
}
/**
* Setup expectations for WifiNetworksListStoreData and DeletedEphemeralSsidsStoreData
- * after WifiConfigStore#switchUserStoreAndRead.
+ * after WifiConfigStore#switchUserStoresAndRead.
*/
private void setupStoreDataForUserRead(List<WifiConfiguration> userConfigurations,
Set<String> deletedEphemeralSsids) {
- when(mNetworkListStoreData.getUserConfigurations()).thenReturn(userConfigurations);
+ when(mNetworkListUserStoreData.getConfigurations()).thenReturn(userConfigurations);
when(mDeletedEphemeralSsidsStoreData.getSsidList()).thenReturn(deletedEphemeralSsids);
}
@@ -4076,7 +4078,8 @@ public class WifiConfigManagerTest {
*/
private NetworkUpdateResult addNetworkToWifiConfigManager(WifiConfiguration configuration,
int uid) {
- clearInvocations(mContext, mWifiConfigStore, mNetworkListStoreData);
+ clearInvocations(mContext, mWifiConfigStore, mNetworkListSharedStoreData,
+ mNetworkListUserStoreData);
triggerStoreReadIfNeeded();
when(mClock.getWallClockMillis()).thenReturn(TEST_WALLCLOCK_CREATION_TIME_MILLIS);
NetworkUpdateResult result =
@@ -4148,7 +4151,8 @@ public class WifiConfigManagerTest {
* to modify the configuration before we compare the added network with the retrieved network.
*/
private NetworkUpdateResult updateNetworkToWifiConfigManager(WifiConfiguration configuration) {
- clearInvocations(mContext, mWifiConfigStore, mNetworkListStoreData);
+ clearInvocations(mContext, mWifiConfigStore, mNetworkListSharedStoreData,
+ mNetworkListUserStoreData);
when(mClock.getWallClockMillis()).thenReturn(TEST_WALLCLOCK_UPDATE_TIME_MILLIS);
NetworkUpdateResult result =
mWifiConfigManager.addOrUpdateNetwork(configuration, TEST_UPDATE_UID);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreTest.java
index 1741acc4b..0240a67ab 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConfigStoreTest.java
@@ -27,6 +27,8 @@ import android.net.wifi.WifiConfiguration;
import android.os.test.TestLooper;
import android.support.test.filters.SmallTest;
+import com.android.internal.util.ArrayUtils;
+import com.android.server.wifi.WifiConfigStore.StoreData;
import com.android.server.wifi.WifiConfigStore.StoreFile;
import com.android.server.wifi.util.XmlUtil;
@@ -53,13 +55,6 @@ import java.util.Set;
*/
@SmallTest
public class WifiConfigStoreTest {
- // Store file content without any data.
- private static final String EMPTY_FILE_CONTENT =
- "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
- + "<WifiConfigStoreData>\n"
- + "<int name=\"Version\" value=\"1\" />\n"
- + "</WifiConfigStoreData>\n";
-
private static final String TEST_USER_DATA = "UserData";
private static final String TEST_SHARE_DATA = "ShareData";
private static final String TEST_CREATOR_NAME = "CreatorName";
@@ -150,7 +145,10 @@ public class WifiConfigStoreTest {
@Mock private Clock mClock;
private MockStoreFile mSharedStore;
private MockStoreFile mUserStore;
- private MockStoreData mStoreData;
+ private MockStoreFile mUserNetworkSuggestionsStore;
+ private List<StoreFile> mUserStores = new ArrayList<StoreFile>();
+ private MockStoreData mSharedStoreData;
+ private MockStoreData mUserStoreData;
/**
* Test instance of WifiConfigStore.
@@ -168,9 +166,15 @@ public class WifiConfigStoreTest {
.thenReturn(mAlarmManager.getAlarmManager());
when(mContext.getPackageManager()).thenReturn(mPackageManager);
when(mPackageManager.getNameForUid(anyInt())).thenReturn(TEST_CREATOR_NAME);
- mUserStore = new MockStoreFile();
- mSharedStore = new MockStoreFile();
- mStoreData = new MockStoreData();
+ mSharedStore = new MockStoreFile(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ mUserStore = new MockStoreFile(WifiConfigStore.STORE_FILE_USER_GENERAL);
+ mUserNetworkSuggestionsStore =
+ new MockStoreFile(WifiConfigStore.STORE_FILE_USER_NETWORK_SUGGESTIONS);
+ mUserStores.add(mUserStore);
+ mUserStores.add(mUserNetworkSuggestionsStore);
+
+ mSharedStoreData = new MockStoreData(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ mUserStoreData = new MockStoreData(WifiConfigStore.STORE_FILE_USER_GENERAL);
}
/**
@@ -194,24 +198,20 @@ public class WifiConfigStoreTest {
}
/**
- * Verify the contents of the config file with empty data. The data content should be the
- * same as {@link #EMPTY_FILE_CONTENT}.
+ * Verify that no write occurs if there is {@link StoreData} registered for any
+ * {@link StoreFile}.
*
* @throws Exception
*/
@Test
- public void testWriteWithEmptyData() throws Exception {
+ public void testWriteWithNoStoreData() throws Exception {
// Perform force write to both share and user store file.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.setUserStores(mUserStores);
mWifiConfigStore.write(true);
- assertFalse(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
- assertTrue(mSharedStore.isStoreWritten());
- assertTrue(mUserStore.isStoreWritten());
- assertTrue(Arrays.equals(EMPTY_FILE_CONTENT.getBytes(StandardCharsets.UTF_8),
- mSharedStore.getStoreBytes()));
- assertTrue(Arrays.equals(EMPTY_FILE_CONTENT.getBytes(StandardCharsets.UTF_8),
- mUserStore.getStoreBytes()));
+ assertFalse(mSharedStore.isStoreWritten());
+ assertFalse(mUserStore.isStoreWritten());
+ assertFalse(mUserNetworkSuggestionsStore.isStoreWritten());
}
/**
@@ -221,12 +221,17 @@ public class WifiConfigStoreTest {
*/
@Test
public void testForceWrite() throws Exception {
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ // Register data container.
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
+
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
mWifiConfigStore.write(true);
assertFalse(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
assertTrue(mSharedStore.isStoreWritten());
assertTrue(mUserStore.isStoreWritten());
+ assertFalse(mUserNetworkSuggestionsStore.isStoreWritten());
}
/**
@@ -235,18 +240,24 @@ public class WifiConfigStoreTest {
*/
@Test
public void testBufferedWrite() throws Exception {
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ // Register data container.
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
+
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
mWifiConfigStore.write(false);
assertTrue(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
assertFalse(mSharedStore.isStoreWritten());
assertFalse(mUserStore.isStoreWritten());
+ assertFalse(mUserNetworkSuggestionsStore.isStoreWritten());
// Now send the alarm and ensure that the writes happen.
mAlarmManager.dispatch(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG);
mLooper.dispatchAll();
assertTrue(mSharedStore.isStoreWritten());
assertTrue(mUserStore.isStoreWritten());
+ assertFalse(mUserNetworkSuggestionsStore.isStoreWritten());
}
/**
@@ -257,12 +268,14 @@ public class WifiConfigStoreTest {
@Test
public void testForceWriteAfterBufferedWrite() throws Exception {
// Register a test data container with bogus data.
- mWifiConfigStore.registerStoreData(mStoreData);
- mStoreData.setShareData("abcds");
- mStoreData.setUserData("asdfa");
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
+
+ mSharedStoreData.setData("abcds");
+ mUserStoreData.setData("asdfa");
// Perform buffered write for both user and share store file.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
mWifiConfigStore.write(false);
assertTrue(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
@@ -271,8 +284,8 @@ public class WifiConfigStoreTest {
// Update the container with new set of data. The send a force write and ensure that the
// writes have been performed and alarms have been stopped and updated data are written.
- mStoreData.setUserData(TEST_USER_DATA);
- mStoreData.setShareData(TEST_SHARE_DATA);
+ mUserStoreData.setData(TEST_USER_DATA);
+ mSharedStoreData.setData(TEST_SHARE_DATA);
mWifiConfigStore.write(true);
assertFalse(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
@@ -281,35 +294,74 @@ public class WifiConfigStoreTest {
// Verify correct data are loaded to the data container after a read.
mWifiConfigStore.read();
- assertEquals(TEST_USER_DATA, mStoreData.getUserData());
- assertEquals(TEST_SHARE_DATA, mStoreData.getShareData());
+ assertEquals(TEST_USER_DATA, mUserStoreData.getData());
+ assertEquals(TEST_SHARE_DATA, mSharedStoreData.getData());
}
/**
+ * Tests the force write with no new data after a buffered write.
+ * Expected behaviour: The force write should flush the previous buffered write and stop the
+ * buffer write alarms.
+ */
+ @Test
+ public void testForceWriteWithNoNewDataAfterBufferedWrite() throws Exception {
+ // Register a test data container with bogus data.
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
+
+ mSharedStoreData.setData("abcds");
+ mUserStoreData.setData("asdfa");
+
+ // Perform buffered write for both user and share store file.
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
+ mWifiConfigStore.write(false);
+
+ assertTrue(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
+ assertFalse(mSharedStore.isStoreWritten());
+ assertFalse(mUserStore.isStoreWritten());
+
+ // Containers have no new data.
+ mUserStoreData.setHasAnyNewData(false);
+ mSharedStoreData.setHasAnyNewData(false);
+ mWifiConfigStore.write(true);
+
+ assertFalse(mAlarmManager.isPending(WifiConfigStore.BUFFERED_WRITE_ALARM_TAG));
+ assertTrue(mSharedStore.isStoreWritten());
+ assertTrue(mUserStore.isStoreWritten());
+
+ // Verify correct data are loaded to the data container after a read.
+ mWifiConfigStore.read();
+ assertEquals("abcds", mSharedStoreData.getData());
+ assertEquals("asdfa", mUserStoreData.getData());
+ }
+
+
+ /**
* Tests the read API behaviour after a write to the store files.
* Expected behaviour: The read should return the same data that was last written.
*/
@Test
public void testReadAfterWrite() throws Exception {
// Register data container.
- mWifiConfigStore.registerStoreData(mStoreData);
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
// Read both share and user config store.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
// Verify no data is read.
- assertNull(mStoreData.getUserData());
- assertNull(mStoreData.getShareData());
+ assertNull(mUserStoreData.getData());
+ assertNull(mSharedStoreData.getData());
// Write share and user data.
- mStoreData.setUserData(TEST_USER_DATA);
- mStoreData.setShareData(TEST_SHARE_DATA);
+ mUserStoreData.setData(TEST_USER_DATA);
+ mSharedStoreData.setData(TEST_SHARE_DATA);
mWifiConfigStore.write(true);
// Read and verify the data content in the data container.
mWifiConfigStore.read();
- assertEquals(TEST_USER_DATA, mStoreData.getUserData());
- assertEquals(TEST_SHARE_DATA, mStoreData.getShareData());
+ assertEquals(TEST_USER_DATA, mUserStoreData.getData());
+ assertEquals(TEST_SHARE_DATA, mSharedStoreData.getData());
}
/**
@@ -320,19 +372,25 @@ public class WifiConfigStoreTest {
*/
@Test
public void testReadWithNoSharedStoreFileAndUserStoreNotVisible() throws Exception {
- WifiConfigStore.StoreData storeData = mock(WifiConfigStore.StoreData.class);
+ StoreData sharedStoreData = mock(StoreData.class);
+ when(sharedStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ StoreData userStoreData = mock(StoreData.class);
+ when(userStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
// Reading the mock store without a write should simulate the file not found case because
// |readRawData| would return null.
- mWifiConfigStore.registerStoreData(storeData);
+ mWifiConfigStore.registerStoreData(sharedStoreData);
+ mWifiConfigStore.registerStoreData(userStoreData);
assertFalse(mWifiConfigStore.areStoresPresent());
mWifiConfigStore.read();
// Ensure that we got the call to deserialize empty shared data, but no user data.
- verify(storeData).resetData(eq(true));
- verify(storeData).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData, never()).resetData(eq(false));
- verify(storeData, never()).deserializeData(eq(null), anyInt(), eq(false));
+ verify(sharedStoreData).resetData();
+ verify(sharedStoreData).deserializeData(eq(null), anyInt());
+ verify(userStoreData, never()).resetData();
+ verify(userStoreData, never()).deserializeData(any(), anyInt());
}
/**
@@ -342,21 +400,27 @@ public class WifiConfigStoreTest {
*/
@Test
public void testReadWithNoStoreFiles() throws Exception {
- WifiConfigStore.StoreData storeData = mock(WifiConfigStore.StoreData.class);
+ StoreData sharedStoreData = mock(StoreData.class);
+ when(sharedStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ StoreData userStoreData = mock(StoreData.class);
+ when(userStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
// Reading the mock store without a write should simulate the file not found case because
// |readRawData| would return null.
- mWifiConfigStore.registerStoreData(storeData);
+ mWifiConfigStore.registerStoreData(sharedStoreData);
+ mWifiConfigStore.registerStoreData(userStoreData);
// Read both share and user config store.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.setUserStores(mUserStores);
assertFalse(mWifiConfigStore.areStoresPresent());
mWifiConfigStore.read();
// Ensure that we got the call to deserialize empty shared & user data.
- verify(storeData).resetData(eq(true));
- verify(storeData).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData, times(2)).resetData(eq(false));
- verify(storeData, times(2)).deserializeData(eq(null), anyInt(), eq(false));
+ verify(userStoreData).resetData();
+ verify(userStoreData).deserializeData(eq(null), anyInt());
+ verify(sharedStoreData).resetData();
+ verify(sharedStoreData).deserializeData(eq(null), anyInt());
}
/**
@@ -367,14 +431,14 @@ public class WifiConfigStoreTest {
@Test
public void testReadAfterWriteWithNoUserStore() throws Exception {
// Setup data container.
- mWifiConfigStore.registerStoreData(mStoreData);
- mStoreData.setShareData(TEST_SHARE_DATA);
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mSharedStoreData.setData(TEST_SHARE_DATA);
// Perform write for the share store file.
mWifiConfigStore.write(true);
mWifiConfigStore.read();
// Verify data content for both user and share data.
- assertEquals(TEST_SHARE_DATA, mStoreData.getShareData());
+ assertEquals(TEST_SHARE_DATA, mSharedStoreData.getData());
}
/**
@@ -386,21 +450,22 @@ public class WifiConfigStoreTest {
@Test
public void testReadWillResetStoreData() throws Exception {
// Register and setup store data.
- mWifiConfigStore.registerStoreData(mStoreData);
+ mWifiConfigStore.registerStoreData(mSharedStoreData);
+ mWifiConfigStore.registerStoreData(mUserStoreData);
// Perform force write with empty data content to both user and share store file.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
mWifiConfigStore.write(true);
// Setup data container with some value.
- mStoreData.setUserData(TEST_USER_DATA);
- mStoreData.setShareData(TEST_SHARE_DATA);
+ mUserStoreData.setData(TEST_USER_DATA);
+ mSharedStoreData.setData(TEST_SHARE_DATA);
// Perform read of both user and share store file and verify data in the data container
// is in sync (empty) with what is in the file.
mWifiConfigStore.read();
- assertNull(mStoreData.getShareData());
- assertNull(mStoreData.getUserData());
+ assertNull(mSharedStoreData.getData());
+ assertNull(mUserStoreData.getData());
}
/**
@@ -413,7 +478,7 @@ public class WifiConfigStoreTest {
@Test
public void testReadWifiConfigStoreData() throws Exception {
// Setup network list.
- NetworkListStoreData networkList = new NetworkListStoreData(mContext);
+ NetworkListStoreData networkList = new NetworkListUserStoreData(mContext);
mWifiConfigStore.registerStoreData(networkList);
WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
openNetwork.creatorName = TEST_CREATOR_NAME;
@@ -440,9 +505,9 @@ public class WifiConfigStoreTest {
byte[] xmlBytes = xmlString.getBytes(StandardCharsets.UTF_8);
mUserStore.storeRawDataToWrite(xmlBytes);
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
WifiConfigurationTestUtil.assertConfigurationsEqualForConfigStore(
- userConfigs, networkList.getUserConfigurations());
+ userConfigs, networkList.getConfigurations());
assertEquals(ssidList, deletedEphemeralSsids.getSsidList());
}
@@ -455,10 +520,10 @@ public class WifiConfigStoreTest {
@Test
public void testWriteWifiConfigStoreData() throws Exception {
// Setup user store.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
// Setup network list store data.
- NetworkListStoreData networkList = new NetworkListStoreData(mContext);
+ NetworkListStoreData networkList = new NetworkListUserStoreData(mContext);
mWifiConfigStore.registerStoreData(networkList);
WifiConfiguration openNetwork = WifiConfigurationTestUtil.createOpenNetwork();
openNetwork.creatorName = TEST_CREATOR_NAME;
@@ -467,7 +532,7 @@ public class WifiConfigStoreTest {
openNetwork.setRandomizedMacAddress(TEST_RANDOMIZED_MAC);
List<WifiConfiguration> userConfigs = new ArrayList<>();
userConfigs.add(openNetwork);
- networkList.setUserConfigurations(userConfigs);
+ networkList.setConfigurations(userConfigs);
// Setup deleted ephemeral SSID list store data.
DeletedEphemeralSsidsStoreData deletedEphemeralSsids =
@@ -503,14 +568,12 @@ public class WifiConfigStoreTest {
public void testReadWifiConfigStoreDataIndicateClientsThatThereIsNoDataForThem()
throws Exception {
// Set both the user store & shared store files.
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
String storeData1Name = "test1";
String storeData2Name = "test2";
- WifiConfigStore.StoreData storeData1 = mock(WifiConfigStore.StoreData.class);
- WifiConfigStore.StoreData storeData2 = mock(WifiConfigStore.StoreData.class);
- when(storeData1.getName()).thenReturn(storeData1Name);
- when(storeData2.getName()).thenReturn(storeData2Name);
+ StoreData storeData1 = mock(StoreData.class);
+ StoreData storeData2 = mock(StoreData.class);
assertTrue(mWifiConfigStore.registerStoreData(storeData1));
assertTrue(mWifiConfigStore.registerStoreData(storeData2));
@@ -524,58 +587,122 @@ public class WifiConfigStoreTest {
storeData1Name, storeData2Name);
// Scenario 1: StoreData1 in shared store file.
+ when(storeData1.getName()).thenReturn(storeData1Name);
+ when(storeData2.getName()).thenReturn(storeData2Name);
+ when(storeData1.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ when(storeData2.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
mSharedStore.storeRawDataToWrite(fileContentsXmlStringWithOnlyStoreData1.getBytes());
mUserStore.storeRawDataToWrite(null);
mWifiConfigStore.read();
- verify(storeData1).deserializeData(notNull(), anyInt(), eq(true));
- verify(storeData1, never()).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData1).deserializeData(eq(null), anyInt(), eq(false));
- verify(storeData2).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData2).deserializeData(eq(null), anyInt(), eq(false));
+ verify(storeData1).deserializeData(notNull(), anyInt());
+ verify(storeData1, never()).deserializeData(eq(null), anyInt());
+ verify(storeData2).deserializeData(eq(null), anyInt());
reset(storeData1, storeData2);
// Scenario 2: StoreData2 in user store file.
+ when(storeData1.getName()).thenReturn(storeData1Name);
+ when(storeData2.getName()).thenReturn(storeData2Name);
+ when(storeData1.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
+ when(storeData2.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
mSharedStore.storeRawDataToWrite(null);
mUserStore.storeRawDataToWrite(fileContentsXmlStringWithOnlyStoreData2.getBytes());
mWifiConfigStore.read();
- verify(storeData1).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData1).deserializeData(eq(null), anyInt(), eq(false));
- verify(storeData2).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData2).deserializeData(notNull(), anyInt(), eq(false));
- verify(storeData2, never()).deserializeData(eq(null), anyInt(), eq(false));
+ verify(storeData1).deserializeData(eq(null), anyInt());
+ verify(storeData2).deserializeData(notNull(), anyInt());
+ verify(storeData2, never()).deserializeData(eq(null), anyInt());
reset(storeData1, storeData2);
// Scenario 3: StoreData1 in shared store file & StoreData2 in user store file.
+ when(storeData1.getName()).thenReturn(storeData1Name);
+ when(storeData2.getName()).thenReturn(storeData2Name);
+ when(storeData1.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ when(storeData2.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
mSharedStore.storeRawDataToWrite(fileContentsXmlStringWithOnlyStoreData1.getBytes());
mUserStore.storeRawDataToWrite(fileContentsXmlStringWithOnlyStoreData2.getBytes());
mWifiConfigStore.read();
- verify(storeData1).deserializeData(notNull(), anyInt(), eq(true));
- verify(storeData1, never()).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData1).deserializeData(eq(null), anyInt(), eq(false));
- verify(storeData2).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData2).deserializeData(notNull(), anyInt(), eq(false));
- verify(storeData2, never()).deserializeData(eq(null), anyInt(), eq(false));
+ verify(storeData1).deserializeData(notNull(), anyInt());
+ verify(storeData1, never()).deserializeData(eq(null), anyInt());
+ verify(storeData2).deserializeData(notNull(), anyInt());
+ verify(storeData2, never()).deserializeData(eq(null), anyInt());
reset(storeData1, storeData2);
// Scenario 4: StoreData1 & StoreData2 in shared store file.
+ when(storeData1.getName()).thenReturn(storeData1Name);
+ when(storeData2.getName()).thenReturn(storeData2Name);
+ when(storeData1.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ when(storeData2.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
mSharedStore.storeRawDataToWrite(
fileContentsXmlStringWithStoreData1AndStoreData2.getBytes());
mUserStore.storeRawDataToWrite(null);
mWifiConfigStore.read();
- verify(storeData1).deserializeData(notNull(), anyInt(), eq(true));
- verify(storeData1, never()).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData1).deserializeData(eq(null), anyInt(), eq(false));
- verify(storeData2).deserializeData(notNull(), anyInt(), eq(true));
- verify(storeData2, never()).deserializeData(eq(null), anyInt(), eq(true));
- verify(storeData2).deserializeData(eq(null), anyInt(), eq(false));
+ verify(storeData1).deserializeData(notNull(), anyInt());
+ verify(storeData1, never()).deserializeData(eq(null), anyInt());
+ verify(storeData2).deserializeData(notNull(), anyInt());
+ verify(storeData2, never()).deserializeData(eq(null), anyInt());
reset(storeData1, storeData2);
}
/**
+ * Tests the write API behavior when all the store data's registered for a given store file
+ * has no new data to write.
+ * Expected behaviour: The write should not trigger a new file write for that specific store
+ * file.
+ */
+ @Test
+ public void testWriteWithNoNewData() throws Exception {
+ StoreData sharedStoreData = mock(StoreData.class);
+ when(sharedStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_SHARED_GENERAL);
+ when(sharedStoreData.hasNewDataToSerialize()).thenReturn(true);
+ when(sharedStoreData.getName()).thenReturn("sharedStoreData");
+
+ StoreData userStoreData = mock(StoreData.class);
+ when(userStoreData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_GENERAL);
+ when(userStoreData.hasNewDataToSerialize()).thenReturn(true);
+ when(userStoreData.getName()).thenReturn("userStoreData");
+
+ StoreData userStoreNetworkSuggestionsData =
+ mock(StoreData.class);
+ when(userStoreNetworkSuggestionsData.getStoreFileId())
+ .thenReturn(WifiConfigStore.STORE_FILE_USER_NETWORK_SUGGESTIONS);
+ when(userStoreNetworkSuggestionsData.hasNewDataToSerialize()).thenReturn(false);
+ when(userStoreNetworkSuggestionsData.getName())
+ .thenReturn("userStoreNetworkSuggestionsData");
+
+ assertTrue(mWifiConfigStore.registerStoreData(sharedStoreData));
+ assertTrue(mWifiConfigStore.registerStoreData(userStoreData));
+ assertTrue(mWifiConfigStore.registerStoreData(userStoreNetworkSuggestionsData));
+
+ // Write both share and user config store.
+ mWifiConfigStore.setUserStores(mUserStores);
+
+ // Now trigger a write.
+ mWifiConfigStore.write(true);
+
+ verify(sharedStoreData).hasNewDataToSerialize();
+ verify(userStoreData).hasNewDataToSerialize();
+ verify(userStoreNetworkSuggestionsData).hasNewDataToSerialize();
+
+ // Verify that we serialized data from the first 2 data source, but not from the last one.
+ verify(sharedStoreData).serializeData(any());
+ verify(userStoreData).serializeData(any());
+ verify(userStoreNetworkSuggestionsData, never()).serializeData(any());
+ }
+
+ /**
* Verify that a XmlPullParserException will be thrown when reading an user store file
* containing unknown data.
*
@@ -591,7 +718,7 @@ public class WifiConfigStoreTest {
+ "</UnknownTag>\n"
+ "</WifiConfigStoreData>\n";
mUserStore.storeRawDataToWrite(storeFileData.getBytes(StandardCharsets.UTF_8));
- mWifiConfigStore.switchUserStoreAndRead(mUserStore);
+ mWifiConfigStore.switchUserStoresAndRead(mUserStores);
}
/**
@@ -621,8 +748,8 @@ public class WifiConfigStoreTest {
private byte[] mStoreBytes;
private boolean mStoreWritten;
- public MockStoreFile() {
- super(new File("MockStoreFile"));
+ MockStoreFile(@WifiConfigStore.StoreFileId int fileId) {
+ super(new File("MockStoreFile"), fileId);
}
@Override
@@ -643,7 +770,9 @@ public class WifiConfigStoreTest {
@Override
public void writeBufferedRawData() {
- mStoreWritten = true;
+ if (!ArrayUtils.isEmpty(mStoreBytes)) {
+ mStoreWritten = true;
+ }
}
public byte[] getStoreBytes() {
@@ -658,71 +787,63 @@ public class WifiConfigStoreTest {
/**
* Mock data container for providing test data for the store file.
*/
- private class MockStoreData implements WifiConfigStore.StoreData {
+ private class MockStoreData implements StoreData {
private static final String XML_TAG_TEST_HEADER = "TestHeader";
private static final String XML_TAG_TEST_DATA = "TestData";
- private String mShareData;
- private String mUserData;
+ private @WifiConfigStore.StoreFileId int mFileId;
+ private String mData;
+ private boolean mHasAnyNewData = true;
- MockStoreData() {}
+ MockStoreData(@WifiConfigStore.StoreFileId int fileId) {
+ mFileId = fileId;
+ }
@Override
- public void serializeData(XmlSerializer out, boolean shared)
+ public void serializeData(XmlSerializer out)
throws XmlPullParserException, IOException {
- if (shared) {
- XmlUtil.writeNextValue(out, XML_TAG_TEST_DATA, mShareData);
- } else {
- XmlUtil.writeNextValue(out, XML_TAG_TEST_DATA, mUserData);
- }
+ XmlUtil.writeNextValue(out, XML_TAG_TEST_DATA, mData);
}
@Override
- public void deserializeData(XmlPullParser in, int outerTagDepth, boolean shared)
+ public void deserializeData(XmlPullParser in, int outerTagDepth)
throws XmlPullParserException, IOException {
if (in == null) {
return;
}
- if (shared) {
- mShareData = (String) XmlUtil.readNextValueWithName(in, XML_TAG_TEST_DATA);
- } else {
- mUserData = (String) XmlUtil.readNextValueWithName(in, XML_TAG_TEST_DATA);
- }
+ mData = (String) XmlUtil.readNextValueWithName(in, XML_TAG_TEST_DATA);
}
@Override
- public void resetData(boolean shared) {
- if (shared) {
- mShareData = null;
- } else {
- mUserData = null;
- }
+ public void resetData() {
+ mData = null;
}
@Override
- public String getName() {
- return XML_TAG_TEST_HEADER;
+ public boolean hasNewDataToSerialize() {
+ return mHasAnyNewData;
}
@Override
- public boolean supportShareData() {
- return true;
+ public String getName() {
+ return XML_TAG_TEST_HEADER;
}
- public String getShareData() {
- return mShareData;
+ @Override
+ public @WifiConfigStore.StoreFileId int getStoreFileId() {
+ return mFileId;
}
- public void setShareData(String shareData) {
- mShareData = shareData;
+ public String getData() {
+ return mData;
}
- public String getUserData() {
- return mUserData;
+ public void setData(String data) {
+ mData = data;
}
- public void setUserData(String userData) {
- mUserData = userData;
+ public void setHasAnyNewData(boolean hasAnyNewData) {
+ mHasAnyNewData = hasAnyNewData;
}
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigSharedStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigSharedStoreDataTest.java
new file mode 100644
index 000000000..6c2ab7bd5
--- /dev/null
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigSharedStoreDataTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wifi.hotspot2;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import android.support.test.filters.SmallTest;
+import android.util.Xml;
+
+import com.android.internal.util.FastXmlSerializer;
+import com.android.server.wifi.WifiConfigStore;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlSerializer;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.nio.charset.StandardCharsets;
+
+/**
+ * Unit tests for {@link com.android.server.wifi.hotspot2.PasspointConfigSharedStoreData}.
+ */
+@SmallTest
+public class PasspointConfigSharedStoreDataTest {
+ @Mock PasspointConfigSharedStoreData.DataSource mDataSource;
+ PasspointConfigSharedStoreData mConfigStoreData;
+
+ /** Sets up test. */
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ mConfigStoreData = new PasspointConfigSharedStoreData(mDataSource);
+ }
+
+ /**
+ * Helper function for serializing store data to a XML block.
+ *
+ * @return byte[]
+ * @throws Exception
+ */
+ private byte[] serializeData() throws Exception {
+ final XmlSerializer out = new FastXmlSerializer();
+ final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ out.setOutput(outputStream, StandardCharsets.UTF_8.name());
+ mConfigStoreData.serializeData(out);
+ out.flush();
+ return outputStream.toByteArray();
+ }
+
+ /**
+ * Helper function for deserializing store data from a XML block.
+ *
+ * @param data The XML block data bytes
+ * @throws Exception
+ */
+ private void deserializeData(byte[] data) throws Exception {
+ final XmlPullParser in = Xml.newPullParser();
+ final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
+ in.setInput(inputStream, StandardCharsets.UTF_8.name());
+ mConfigStoreData.deserializeData(in, in.getDepth());
+ }
+
+ /**
+ * Verify that the serialization and deserialization of share store data works as expected.
+ * The data used for serialization matches the result of the deserialization.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void serializeAndDeserializeShareStoreData() throws Exception {
+ // Setup expected data.
+ long providerIndex = 412;
+
+ // Serialize data for share store.
+ when(mDataSource.getProviderIndex()).thenReturn(providerIndex);
+ byte[] data = serializeData();
+
+ // Deserialize data for share store and verify the content.
+ deserializeData(data);
+ verify(mDataSource).setProviderIndex(providerIndex);
+ }
+
+ /**
+ * Verify that deserialization of an empty share store data doesn't cause any exception
+ * and the corresponding data source should not be updated.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void deserializeEmptyShareStoreData() throws Exception {
+ deserializeData(new byte[0]);
+ verify(mDataSource, never()).setProviderIndex(anyLong());
+ }
+
+ /**
+ * Verify that PasspointConfigUserStoreData is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_SHARED_GENERAL}.
+ *
+ * @throws Exception
+ */
+ @Test
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_SHARED_GENERAL,
+ mConfigStoreData.getStoreFileId());
+ }
+}
diff --git a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigUserStoreDataTest.java
index 35f80a1f2..7ab29c972 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigStoreDataTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointConfigUserStoreDataTest.java
@@ -29,6 +29,7 @@ import android.util.Xml;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.wifi.SIMAccessor;
+import com.android.server.wifi.WifiConfigStore;
import com.android.server.wifi.WifiKeyStore;
import org.junit.Before;
@@ -51,10 +52,10 @@ import java.util.List;
import java.util.Map;
/**
- * Unit tests for {@link com.android.server.wifi.hotspot2.PasspointConfigStoreData}.
+ * Unit tests for {@link com.android.server.wifi.hotspot2.PasspointConfigUserStoreData}.
*/
@SmallTest
-public class PasspointConfigStoreDataTest {
+public class PasspointConfigUserStoreDataTest {
private static final String TEST_CA_CERTIFICATE_ALIAS = "CaCert";
private static final String TEST_CLIENT_CERTIFICATE_ALIAS = "ClientCert";
private static final String TEST_CLIENT_PRIVATE_KEY_ALIAS = "ClientPrivateKey";
@@ -65,14 +66,14 @@ public class PasspointConfigStoreDataTest {
@Mock WifiKeyStore mKeyStore;
@Mock SIMAccessor mSimAccessor;
- @Mock PasspointConfigStoreData.DataSource mDataSource;
- PasspointConfigStoreData mConfigStoreData;
+ @Mock PasspointConfigUserStoreData.DataSource mDataSource;
+ PasspointConfigUserStoreData mConfigStoreData;
/** Sets up test. */
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
- mConfigStoreData = new PasspointConfigStoreData(mKeyStore, mSimAccessor, mDataSource);
+ mConfigStoreData = new PasspointConfigUserStoreData(mKeyStore, mSimAccessor, mDataSource);
}
/**
@@ -200,15 +201,14 @@ public class PasspointConfigStoreDataTest {
/**
* Helper function for serializing store data to a XML block.
*
- * @param share Flag indicating share or user data
* @return byte[]
* @throws Exception
*/
- private byte[] serializeData(boolean share) throws Exception {
+ private byte[] serializeData() throws Exception {
final XmlSerializer out = new FastXmlSerializer();
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
out.setOutput(outputStream, StandardCharsets.UTF_8.name());
- mConfigStoreData.serializeData(out, share);
+ mConfigStoreData.serializeData(out);
out.flush();
return outputStream.toByteArray();
}
@@ -217,14 +217,13 @@ public class PasspointConfigStoreDataTest {
* Helper function for deserializing store data from a XML block.
*
* @param data The XML block data bytes
- * @param share Flag indicating share or user data
* @throws Exception
*/
- private void deserializeData(byte[] data, boolean share) throws Exception {
+ private void deserializeData(byte[] data) throws Exception {
final XmlPullParser in = Xml.newPullParser();
final ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
in.setInput(inputStream, StandardCharsets.UTF_8.name());
- mConfigStoreData.deserializeData(in, in.getDepth(), share);
+ mConfigStoreData.deserializeData(in, in.getDepth());
}
/**
@@ -244,36 +243,16 @@ public class PasspointConfigStoreDataTest {
// Serialize data for user store.
when(mDataSource.getProviders()).thenReturn(providerList);
- byte[] data = serializeData(false);
+ byte[] data = serializeData();
// Deserialize data for user store and verify the content.
ArgumentCaptor<ArrayList> providersCaptor = ArgumentCaptor.forClass(ArrayList.class);
- deserializeData(data, false);
+ deserializeData(data);
verify(mDataSource).setProviders(providersCaptor.capture());
assertEquals(providerList, providersCaptor.getValue());
}
/**
- * Verify that the serialization and deserialization of share store data works as expected.
- * The data used for serialization matches the result of the deserialization.
- *
- * @throws Exception
- */
- @Test
- public void serializeAndDeserializeShareStoreData() throws Exception {
- // Setup expected data.
- long providerIndex = 412;
-
- // Serialize data for share store.
- when(mDataSource.getProviderIndex()).thenReturn(providerIndex);
- byte[] data = serializeData(true);
-
- // Deserialize data for share store and verify the content.
- deserializeData(data, true);
- verify(mDataSource).setProviderIndex(providerIndex);
- }
-
- /**
* Verify that deserialization of an empty user store data doesn't cause any exception and
* the corresponding data source should not be updated.
*
@@ -281,19 +260,19 @@ public class PasspointConfigStoreDataTest {
*/
@Test
public void deserializeEmptyUserStoreData() throws Exception {
- deserializeData(new byte[0], false);
+ deserializeData(new byte[0]);
verify(mDataSource, never()).setProviders(any(ArrayList.class));
}
/**
- * Verify that deserialization of an empty share store data doesn't cause any exception
- * and the corresponding data source should not be updated.
+ * Verify that PasspointConfigUserStoreData is written to
+ * {@link WifiConfigStore#STORE_FILE_NAME_USER_GENERAL}.
*
* @throws Exception
*/
@Test
- public void deserializeEmptyShareStoreData() throws Exception {
- deserializeData(new byte[0], true);
- verify(mDataSource, never()).setProviderIndex(anyLong());
+ public void getUserStoreFileId() throws Exception {
+ assertEquals(WifiConfigStore.STORE_FILE_USER_GENERAL,
+ mConfigStoreData.getStoreFileId());
}
}
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 8d60bbbe9..415332964 100644
--- a/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/hotspot2/PasspointManagerTest.java
@@ -136,7 +136,8 @@ public class PasspointManagerTest {
@Mock CertificateVerifier mCertVerifier;
@Mock WifiConfigManager mWifiConfigManager;
@Mock WifiConfigStore mWifiConfigStore;
- @Mock PasspointConfigStoreData.DataSource mDataSource;
+ @Mock PasspointConfigSharedStoreData.DataSource mSharedDataSource;
+ @Mock PasspointConfigUserStoreData.DataSource mUserDataSource;
@Mock WifiMetrics mWifiMetrics;
@Mock OsuNetworkConnection mOsuNetworkConnection;
@Mock OsuServerConnection mOsuServerConnection;
@@ -170,12 +171,16 @@ public class PasspointManagerTest {
ArgumentCaptor.forClass(PasspointEventHandler.Callbacks.class);
verify(mObjectFactory).makePasspointEventHandler(any(WifiNative.class),
callbacks.capture());
- ArgumentCaptor<PasspointConfigStoreData.DataSource> dataSource =
- ArgumentCaptor.forClass(PasspointConfigStoreData.DataSource.class);
- verify(mObjectFactory).makePasspointConfigStoreData(
- any(WifiKeyStore.class), any(SIMAccessor.class), dataSource.capture());
+ ArgumentCaptor<PasspointConfigSharedStoreData.DataSource> sharedDataSource =
+ ArgumentCaptor.forClass(PasspointConfigSharedStoreData.DataSource.class);
+ verify(mObjectFactory).makePasspointConfigSharedStoreData(sharedDataSource.capture());
+ ArgumentCaptor<PasspointConfigUserStoreData.DataSource> userDataSource =
+ ArgumentCaptor.forClass(PasspointConfigUserStoreData.DataSource.class);
+ verify(mObjectFactory).makePasspointConfigUserStoreData(
+ any(WifiKeyStore.class), any(SIMAccessor.class), userDataSource.capture());
mCallbacks = callbacks.getValue();
- mDataSource = dataSource.getValue();
+ mSharedDataSource = sharedDataSource.getValue();
+ mUserDataSource = userDataSource.getValue();
mLooper = new TestLooper();
}
@@ -491,11 +496,11 @@ public class PasspointManagerTest {
reset(mWifiConfigManager);
// Verify content in the data source.
- List<PasspointProvider> providers = mDataSource.getProviders();
+ List<PasspointProvider> providers = mUserDataSource.getProviders();
assertEquals(1, providers.size());
assertEquals(config, providers.get(0).getConfig());
// Provider index start with 0, should be 1 after adding a provider.
- assertEquals(1, mDataSource.getProviderIndex());
+ assertEquals(1, mSharedDataSource.getProviderIndex());
// Remove the provider.
assertTrue(mManager.removeProvider(TEST_FQDN));
@@ -506,9 +511,9 @@ public class PasspointManagerTest {
assertTrue(mManager.getProviderConfigs().isEmpty());
// Verify content in the data source.
- assertTrue(mDataSource.getProviders().isEmpty());
+ assertTrue(mUserDataSource.getProviders().isEmpty());
// Removing a provider should not change the provider index.
- assertEquals(1, mDataSource.getProviderIndex());
+ assertEquals(1, mSharedDataSource.getProviderIndex());
}
/**
@@ -531,11 +536,11 @@ public class PasspointManagerTest {
reset(mWifiConfigManager);
// Verify content in the data source.
- List<PasspointProvider> providers = mDataSource.getProviders();
+ List<PasspointProvider> providers = mUserDataSource.getProviders();
assertEquals(1, providers.size());
assertEquals(config, providers.get(0).getConfig());
// Provider index start with 0, should be 1 after adding a provider.
- assertEquals(1, mDataSource.getProviderIndex());
+ assertEquals(1, mSharedDataSource.getProviderIndex());
// Remove the provider.
assertTrue(mManager.removeProvider(TEST_FQDN));
@@ -546,9 +551,9 @@ public class PasspointManagerTest {
assertTrue(mManager.getProviderConfigs().isEmpty());
// Verify content in the data source.
- assertTrue(mDataSource.getProviders().isEmpty());
+ assertTrue(mUserDataSource.getProviders().isEmpty());
// Removing a provider should not change the provider index.
- assertEquals(1, mDataSource.getProviderIndex());
+ assertEquals(1, mSharedDataSource.getProviderIndex());
}
/**
@@ -574,10 +579,10 @@ public class PasspointManagerTest {
reset(mWifiConfigManager);
// Verify data source content.
- List<PasspointProvider> origProviders = mDataSource.getProviders();
+ List<PasspointProvider> origProviders = mUserDataSource.getProviders();
assertEquals(1, origProviders.size());
assertEquals(origConfig, origProviders.get(0).getConfig());
- assertEquals(1, mDataSource.getProviderIndex());
+ assertEquals(1, mSharedDataSource.getProviderIndex());
// Add another provider with the same base domain as the existing provider.
// This should replace the existing provider with the new configuration.
@@ -592,10 +597,10 @@ public class PasspointManagerTest {
verify(mWifiMetrics).incrementNumPasspointProviderInstallSuccess();
// Verify data source content.
- List<PasspointProvider> newProviders = mDataSource.getProviders();
+ List<PasspointProvider> newProviders = mUserDataSource.getProviders();
assertEquals(1, newProviders.size());
assertEquals(newConfig, newProviders.get(0).getConfig());
- assertEquals(2, mDataSource.getProviderIndex());
+ assertEquals(2, mSharedDataSource.getProviderIndex());
}
/**
@@ -1084,7 +1089,7 @@ public class PasspointManagerTest {
PasspointProvider provider = createMockProvider(config);
List<PasspointProvider> providers = new ArrayList<>();
providers.add(provider);
- mDataSource.setProviders(providers);
+ mUserDataSource.setProviders(providers);
// Verify the providers maintained by PasspointManager.
assertEquals(1, mManager.getProviderConfigs().size());
@@ -1100,8 +1105,8 @@ public class PasspointManagerTest {
@Test
public void verifyProviderIndexAfterDataSourceUpdate() throws Exception {
long providerIndex = 9;
- mDataSource.setProviderIndex(providerIndex);
- assertEquals(providerIndex, mDataSource.getProviderIndex());
+ mSharedDataSource.setProviderIndex(providerIndex);
+ assertEquals(providerIndex, mSharedDataSource.getProviderIndex());
// Add a provider.
PasspointConfiguration config = createTestConfigWithUserCredential(TEST_FQDN);