summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Nudelman <jacknudelman@google.com>2021-09-02 20:20:49 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-09-02 20:20:49 +0000
commit4307b3ee3e15a174fb8e6072dd9296f6922a394d (patch)
treee7aa59a21b28cb131bcca1498a66bdbf8027e22f
parent7f632f3a065e77f1390d44aa11ddefc7a75c1625 (diff)
parent2f04ff6abf10caa513e74bd95dea6f897a5fd025 (diff)
downloadAlternativeNetworkAccess-android12L-dev.tar.gz
Enhance ONS to support 5G scanning. am: 2f04ff6abfandroid12L-dev
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/AlternativeNetworkAccess/+/15740042 Change-Id: I4c459dc46ab5d20e94d829aade6dc594926c6788
-rw-r--r--src/com/android/ons/ONSNetworkScanCtlr.java143
-rw-r--r--tests/src/com/android/ons/ONSNetworkScanCtlrTest.java268
2 files changed, 296 insertions, 115 deletions
diff --git a/src/com/android/ons/ONSNetworkScanCtlr.java b/src/com/android/ons/ONSNetworkScanCtlr.java
index 181a56c..57864c9 100644
--- a/src/com/android/ons/ONSNetworkScanCtlr.java
+++ b/src/com/android/ons/ONSNetworkScanCtlr.java
@@ -26,6 +26,8 @@ import android.telephony.AvailableNetworkInfo;
import android.telephony.CarrierConfigManager;
import android.telephony.CellInfo;
import android.telephony.CellInfoLte;
+import android.telephony.CellInfoNr;
+import android.telephony.CellSignalStrengthNr;
import android.telephony.NetworkScan;
import android.telephony.NetworkScanRequest;
import android.telephony.RadioAccessSpecifier;
@@ -37,6 +39,8 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.telephony.Rlog;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.stream.Collectors;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -59,6 +63,23 @@ public class ONSNetworkScanCtlr {
private static final int MSG_SCAN_COMPLETE = 2;
private static final int MSG_SCAN_ERROR = 3;
+ private Boolean mIs4gScanEnabled = null;
+
+ @VisibleForTesting
+ static final RadioAccessSpecifier DEFAULT_5G_RAS = new RadioAccessSpecifier(
+ AccessNetworkConstants.AccessNetworkType.NGRAN,
+ new int[] {
+ AccessNetworkConstants.NgranBands.BAND_48,
+ AccessNetworkConstants.NgranBands.BAND_71},
+ null);
+ @VisibleForTesting
+ static final RadioAccessSpecifier DEFAULT_4G_RAS = new RadioAccessSpecifier(
+ AccessNetworkConstants.AccessNetworkType.NGRAN,
+ new int[] {
+ AccessNetworkConstants.EutranBand.BAND_48,
+ AccessNetworkConstants.EutranBand.BAND_71},
+ null);
+
/* scan object to keep track of current scan request */
private NetworkScan mCurrentScan;
private boolean mIsScanActive;
@@ -67,6 +88,7 @@ public class ONSNetworkScanCtlr {
private TelephonyManager mTelephonyManager;
private CarrierConfigManager configManager;
private int mRsrpEntryThreshold;
+ private int mSsRsrpEntryThreshold;
@VisibleForTesting
protected NetworkAvailableCallBack mNetworkAvailableCallBack;
HandlerThread mThread;
@@ -119,12 +141,16 @@ public class ONSNetworkScanCtlr {
void onError(int error);
}
- private int getIntCarrierConfig(String key) {
- PersistableBundle b = null;
+ private PersistableBundle getConfigBundle() {
if (configManager != null) {
// If an invalid subId is used, this bundle will contain default values.
- b = configManager.getConfig();
+ return configManager.getConfig();
}
+ return null;
+ }
+
+ private int getIntCarrierConfig(String key) {
+ PersistableBundle b = getConfigBundle();
if (b != null) {
return b.getInt(key);
} else {
@@ -133,6 +159,16 @@ public class ONSNetworkScanCtlr {
}
}
+ private boolean getBooleanCarrierConfig(String key) {
+ PersistableBundle b = getConfigBundle();
+ if (b != null) {
+ return b.getBoolean(key);
+ } else {
+ // Return static default defined in CarrierConfigManager.
+ return CarrierConfigManager.getDefaultConfig().getBoolean(key);
+ }
+ }
+
/**
* analyze scan results
* @param results contains all available cells matching the scan request at current location.
@@ -143,10 +179,20 @@ public class ONSNetworkScanCtlr {
return;
}
List<CellInfo> filteredResults = new ArrayList<CellInfo>();
+ mIs4gScanEnabled = getIs4gScanEnabled();
synchronized (mLock) {
for (CellInfo cellInfo : results) {
if (mMccMncs.contains(getMccMnc(cellInfo))) {
- if (cellInfo instanceof CellInfoLte) {
+ if (cellInfo instanceof CellInfoNr) {
+ CellInfoNr nrCellInfo = (CellInfoNr) cellInfo;
+ int ssRsrp = ((CellSignalStrengthNr) nrCellInfo.getCellSignalStrength())
+ .getSsRsrp();
+ logDebug("cell info ssRsrp: " + ssRsrp);
+ if (ssRsrp >= mSsRsrpEntryThreshold) {
+ filteredResults.add(cellInfo);
+ }
+ }
+ if (mIs4gScanEnabled && cellInfo instanceof CellInfoLte) {
int rsrp = ((CellInfoLte) cellInfo).getCellSignalStrength().getRsrp();
logDebug("cell info rsrp: " + rsrp);
if (rsrp >= mRsrpEntryThreshold) {
@@ -229,27 +275,87 @@ public class ONSNetworkScanCtlr {
return null;
}
- private NetworkScanRequest createNetworkScanRequest(ArrayList<AvailableNetworkInfo> availableNetworks,
- int periodicity) {
- RadioAccessSpecifier[] ras = new RadioAccessSpecifier[1];
+ private boolean getIs4gScanEnabled() {
+ // TODO: make this a null check
+ if (mIs4gScanEnabled != null) {
+ return mIs4gScanEnabled;
+ }
+ return getBooleanCarrierConfig(
+ CarrierConfigManager.KEY_ENABLE_4G_OPPORTUNISTIC_NETWORK_SCAN_BOOL);
+ }
+
+ @VisibleForTesting
+ void setIs4gScanEnabled(boolean enabled) {
+ mIs4gScanEnabled = enabled;
+ }
+
+ @VisibleForTesting
+ NetworkScanRequest createNetworkScanRequest(ArrayList<AvailableNetworkInfo> availableNetworks,
+ int periodicity) {
+ RadioAccessSpecifier[] ras;
ArrayList<String> mccMncs = new ArrayList<String>();
- Set<Integer> bandSet = new ArraySet<>();
+ Set<Integer> bandSet5G = new ArraySet<>();
+ Set<Integer> bandSet4G = new ArraySet<>();
+
+ mIs4gScanEnabled = getIs4gScanEnabled();
- /* by default add band 48 */
- bandSet.add(AccessNetworkConstants.EutranBand.BAND_48);
/* retrieve mcc mncs and bands for available networks */
for (AvailableNetworkInfo availableNetwork : availableNetworks) {
mccMncs.addAll(availableNetwork.getMccMncs());
- bandSet.addAll(availableNetwork.getBands());
+ List<RadioAccessSpecifier> radioAccessSpecifiers =
+ availableNetwork.getRadioAccessSpecifiers();
+ if (radioAccessSpecifiers.isEmpty()) {
+ if (mIs4gScanEnabled) {
+ bandSet4G.addAll(availableNetwork.getBands());
+ }
+ bandSet5G.addAll(availableNetwork.getBands());
+ } else {
+ for (RadioAccessSpecifier radioAccessSpecifier : radioAccessSpecifiers) {
+ int radioAccessNetworkType = radioAccessSpecifier.getRadioAccessNetwork();
+ if (mIs4gScanEnabled &&
+ radioAccessNetworkType ==
+ AccessNetworkConstants.AccessNetworkType.EUTRAN) {
+ bandSet4G.addAll(Arrays.stream(radioAccessSpecifier.getBands())
+ .boxed().collect(Collectors.toList()));
+ } else if (radioAccessNetworkType ==
+ AccessNetworkConstants.AccessNetworkType.NGRAN) {
+ bandSet5G.addAll(Arrays.stream(radioAccessSpecifier.getBands())
+ .boxed().collect(Collectors.toList()));
+ }
+ }
+ }
+ }
+
+ int rasSize = 1;
+ if (mIs4gScanEnabled && bandSet4G.isEmpty() == bandSet5G.isEmpty()) {
+ rasSize = 2;
+ }
+ ras = new RadioAccessSpecifier[rasSize];
+
+ if (bandSet4G.isEmpty() && bandSet5G.isEmpty()) {
+ // Set the default RadioAccessSpecifiers if none were set and no bands were set.
+ ras[0] = DEFAULT_5G_RAS;
+ if (mIs4gScanEnabled) {
+ ras[1] = DEFAULT_4G_RAS;
+ }
+ } else {
+ if (mIs4gScanEnabled && !bandSet4G.isEmpty()) {
+ ras[0] = new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.EUTRAN,
+ bandSet4G.stream().mapToInt(band->band).toArray(), null);
+ }
+ if (!bandSet5G.isEmpty()) {
+ ras[rasSize - 1] = new RadioAccessSpecifier(
+ AccessNetworkConstants.AccessNetworkType.NGRAN,
+ bandSet5G.stream().mapToInt(band->band).toArray(), null);
+ } else if (!mIs4gScanEnabled) {
+ // Reached if only 4G was specified but 4G scan is disabled.
+ ras[0] = DEFAULT_5G_RAS;
+ }
}
- int[] bands = bandSet.stream().mapToInt(band->band).toArray();
- /* create network scan request */
- ras[0] = new RadioAccessSpecifier(AccessNetworkConstants.AccessNetworkType.EUTRAN, bands,
- null);
NetworkScanRequest networkScanRequest = new NetworkScanRequest(
- NetworkScanRequest.SCAN_TYPE_PERIODIC, ras, periodicity, MAX_SEARCH_TIME, false,
- NetworkScanRequest.MAX_INCREMENTAL_PERIODICITY_SEC, mccMncs);
+ NetworkScanRequest.SCAN_TYPE_PERIODIC, ras, periodicity, MAX_SEARCH_TIME, false,
+ NetworkScanRequest.MAX_INCREMENTAL_PERIODICITY_SEC, mccMncs);
synchronized (mLock) {
mMccMncs = mccMncs;
}
@@ -284,6 +390,9 @@ public class ONSNetworkScanCtlr {
getIntCarrierConfig(
CarrierConfigManager.KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_RSRP_INT);
+ mSsRsrpEntryThreshold = getIntCarrierConfig(
+ CarrierConfigManager.KEY_OPPORTUNISTIC_NETWORK_EXIT_THRESHOLD_SS_RSRP_INT);
+
/* start new scan */
networkScan = mTelephonyManager.requestNetworkScan(networkScanRequest,
mNetworkScanCallback);
diff --git a/tests/src/com/android/ons/ONSNetworkScanCtlrTest.java b/tests/src/com/android/ons/ONSNetworkScanCtlrTest.java
index ba20467..67f31c2 100644
--- a/tests/src/com/android/ons/ONSNetworkScanCtlrTest.java
+++ b/tests/src/com/android/ons/ONSNetworkScanCtlrTest.java
@@ -20,13 +20,21 @@ import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.*;
import android.os.Looper;
+import android.os.PersistableBundle;
+import android.telephony.AccessNetworkConstants;
import android.telephony.AvailableNetworkInfo;
+import android.telephony.CarrierConfigManager;
import android.telephony.CellIdentityLte;
import android.telephony.CellInfo;
import android.telephony.CellInfoLte;
import android.telephony.NetworkScan;
+import android.telephony.NetworkScanRequest;
+import android.telephony.RadioAccessSpecifier;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
import org.junit.After;
import org.junit.Before;
@@ -35,6 +43,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.sql.Array;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;
@@ -46,6 +55,19 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
private boolean mCallbackInvoked;
private Looper mLooper;
+ private static final int SEARCH_PERIODICITY = 60;
+ private static final SubscriptionInfo TEST_SUBSCRIPTION_INFO = new SubscriptionInfo(
+ 1, "", 1, null, null, 0, 0, null, 0, null, "310", "210", null,
+ false, null, null);
+ private static final RadioAccessSpecifier TEST_5G_RAS = new RadioAccessSpecifier(
+ AccessNetworkConstants.AccessNetworkType.NGRAN,
+ new int[] {AccessNetworkConstants.NgranBands.BAND_71},
+ null);
+ private static final RadioAccessSpecifier TEST_4G_RAS = new RadioAccessSpecifier(
+ AccessNetworkConstants.AccessNetworkType.EUTRAN,
+ new int[] {AccessNetworkConstants.EutranBand.BAND_48},
+ null);
+
@Before
public void setUp() throws Exception {
super.setUp("ONSTest");
@@ -76,35 +98,8 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
CellInfoLte cellInfoLte = new CellInfoLte();
cellInfoLte.setCellIdentity(cellIdentityLte);
expectedResults.add((CellInfo)cellInfoLte);
- mReady = false;
- // initializing ONSNetworkScanCtlr
- new Thread(new Runnable() {
- @Override
- public void run() {
- Looper.prepare();
- mONSNetworkScanCtlr = new ONSNetworkScanCtlr(mContext, mMockTelephonyManager,
- new ONSNetworkScanCtlr.NetworkAvailableCallBack() {
- @Override
- public void onNetworkAvailability(List<CellInfo> results) {
- mResults = results;
- setReady(true);
- }
-
- public void onError(int error) {
- setReady(true);
- }
- });
-
- mLooper = Looper.myLooper();
- setReady(true);
- Looper.loop();
- }
- }).start();
-
- // Wait till initialization is complete.
- waitUntilReady();
- mReady = false;
+ initONSNetworkScanCtrl();
// Testing startFastNetworkScan, onNetworkAvailability should be called with expectedResults
mONSNetworkScanCtlr.startFastNetworkScan(availableNetworkInfos);
@@ -126,38 +121,9 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
new ArrayList<Integer>());
ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>();
availableNetworkInfos.add(availableNetworkInfo);
- mReady = false;
mError = NetworkScan.SUCCESS;
- // initializing ONSNetworkScanCtlr
- new Thread(new Runnable() {
- @Override
- public void run() {
- Looper.prepare();
- mONSNetworkScanCtlr = new ONSNetworkScanCtlr(mContext, mMockTelephonyManager,
- new ONSNetworkScanCtlr.NetworkAvailableCallBack() {
- @Override
- public void onNetworkAvailability(List<CellInfo> results) {
- setReady(true);
- }
-
- @Override
- public void onError(int error) {
- mError = error;
- setReady(true);
- }
- });
-
- mLooper = Looper.myLooper();
- setReady(true);
- Looper.loop();
-
- }
- }).start();
-
- // Wait till initialization is complete.
- waitUntilReady();
- mReady = false;
+ initONSNetworkScanCtrl();
// Testing startFastNetworkScan, onError should be called with ERROR_INVALID_SCAN
mONSNetworkScanCtlr.startFastNetworkScan(availableNetworkInfos);
@@ -180,36 +146,8 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
new ArrayList<Integer>());
ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>();
availableNetworkInfos.add(availableNetworkInfo);
- mReady = false;
-
- // initializing ONSNetworkScanCtlr
- new Thread(new Runnable() {
- @Override
- public void run() {
- Looper.prepare();
- mONSNetworkScanCtlr = new ONSNetworkScanCtlr(mContext, mMockTelephonyManager,
- new ONSNetworkScanCtlr.NetworkAvailableCallBack() {
- @Override
- public void onNetworkAvailability(List<CellInfo> results) {
- mResults = results;
- setReady(true);
- }
- public void onError(int error) {
- setReady(true);
- }
- });
-
- mLooper = Looper.myLooper();
- setReady(true);
- Looper.loop();
-
- }
- }).start();
-
- // Wait till initialization is complete.
- waitUntilReady();
- mReady = false;
+ initONSNetworkScanCtrl();
// Testing startSlowNetworkScan, onNetworkAvailability should be called with expectedResults
mONSNetworkScanCtlr.startFastNetworkScan(availableNetworkInfos);
@@ -229,9 +167,149 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
mccMncs.add("310210");
AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo(1, 1, mccMncs,
new ArrayList<Integer>());
- ArrayList<AvailableNetworkInfo> availableNetworkInfos = new ArrayList<AvailableNetworkInfo>();
+ ArrayList<AvailableNetworkInfo> availableNetworkInfos =
+ new ArrayList<AvailableNetworkInfo>();
availableNetworkInfos.add(availableNetworkInfo);
mCallbackInvoked = false;
+
+ initONSNetworkScanCtrl();
+
+ // Testing stopNetworkScan, should not get any callback invocation after stopNetworkScan.
+ mONSNetworkScanCtlr.startFastNetworkScan(availableNetworkInfos);
+ mONSNetworkScanCtlr.stopNetworkScan();
+ mONSNetworkScanCtlr.mNetworkScanCallback.onResults(expectedResults);
+ waitUntilReady(100);
+ assertFalse(mCallbackInvoked);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withNoSpecifiedRasOrBands_4gScanEnabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(true);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(new ArrayList<>());
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 2);
+ assertEquals(radioAccessSpecifiers[0], ONSNetworkScanCtlr.DEFAULT_5G_RAS);
+ assertEquals(radioAccessSpecifiers[1], ONSNetworkScanCtlr.DEFAULT_4G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withNoSpecifiedRasOrBands_4gScanDisabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(false);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(new ArrayList<>());
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 1);
+ assertEquals(radioAccessSpecifiers[0], ONSNetworkScanCtlr.DEFAULT_5G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withSpecified5gRAS_4gScanEnabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(true);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(
+ new ArrayList<>(Arrays.asList(TEST_5G_RAS)));
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 1);
+ assertEquals(radioAccessSpecifiers[0], TEST_5G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withSpecified4gRAS_4gScanEnabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(true);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(
+ new ArrayList<>(Arrays.asList(TEST_4G_RAS)));
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 1);
+ assertEquals(radioAccessSpecifiers[0], TEST_4G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withSpecified4gRAS_4gScanDisabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(false);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(
+ new ArrayList<>(Arrays.asList(TEST_4G_RAS)));
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 1);
+ assertEquals(radioAccessSpecifiers[0], ONSNetworkScanCtlr.DEFAULT_5G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withSpecified4gAnd5gRAS_4gScanEnabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(true);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(
+ new ArrayList<>(Arrays.asList(TEST_5G_RAS, TEST_4G_RAS)));
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 2);
+ assertEquals(radioAccessSpecifiers[0], TEST_4G_RAS);
+ assertEquals(radioAccessSpecifiers[1], TEST_5G_RAS);
+ }
+
+ @Test
+ public void testCreateNetworkScanRequest_withSpecified4gAnd5gRAS_4gScanDisabled() {
+ initONSNetworkScanCtrl();
+ mONSNetworkScanCtlr.setIs4gScanEnabled(false);
+
+ NetworkScanRequest networkScanRequest = createNetworkScanRequest(
+ new ArrayList<>(Arrays.asList(TEST_5G_RAS, TEST_4G_RAS)));
+ RadioAccessSpecifier[] radioAccessSpecifiers = networkScanRequest.getSpecifiers();
+
+ assertEquals(networkScanRequest.getSearchPeriodicity(), SEARCH_PERIODICITY);
+ assertEquals(networkScanRequest.getPlmns().size(), 1);
+ assertEquals(networkScanRequest.getPlmns().get(0), "310210");
+ assertEquals(radioAccessSpecifiers.length, 1);
+ assertEquals(radioAccessSpecifiers[0], TEST_5G_RAS);
+ }
+
+ private NetworkScanRequest createNetworkScanRequest(ArrayList<RadioAccessSpecifier> ras) {
+ AvailableNetworkInfo availableNetworkInfo = new AvailableNetworkInfo.Builder()
+ .setSubId(TEST_SUBSCRIPTION_INFO.getSubscriptionId())
+ .setPriority(AvailableNetworkInfo.PRIORITY_LOW)
+ .setMccMncs(new ArrayList<>(Arrays.asList("310210")))
+ .setRadioAccessSpecifiers(ras)
+ .build();
+ ArrayList<AvailableNetworkInfo> availableNetworkInfos =
+ new ArrayList<AvailableNetworkInfo>();
+ availableNetworkInfos.add(availableNetworkInfo);
+
+ return mONSNetworkScanCtlr.createNetworkScanRequest(availableNetworkInfos,
+ SEARCH_PERIODICITY);
+ }
+
+ private void initONSNetworkScanCtrl() {
mReady = false;
// initializing ONSNetworkScanCtlr
@@ -240,15 +318,16 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
public void run() {
Looper.prepare();
mONSNetworkScanCtlr = new ONSNetworkScanCtlr(mContext, mMockTelephonyManager,
- new ONSNetworkScanCtlr.NetworkAvailableCallBack() {
+ new ONSNetworkScanCtlr.NetworkAvailableCallBack() {
@Override
public void onNetworkAvailability(List<CellInfo> results) {
- mCallbackInvoked = true;
+ mResults = results;
setReady(true);
}
public void onError(int error) {
- mCallbackInvoked = true;
+ mError = error;
+ setReady(true);
}
});
@@ -261,12 +340,5 @@ public class ONSNetworkScanCtlrTest extends ONSBaseTest {
// Wait till initialization is complete.
waitUntilReady();
mReady = false;
-
- // Testing stopNetworkScan, should not get any callback invocation after stopNetworkScan.
- mONSNetworkScanCtlr.startFastNetworkScan(availableNetworkInfos);
- mONSNetworkScanCtlr.stopNetworkScan();
- mONSNetworkScanCtlr.mNetworkScanCallback.onResults(expectedResults);
- waitUntilReady(100);
- assertFalse(mCallbackInvoked);
}
}