1 /* 2 * Copyright (C) 2025 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.telephony.satellite; 18 19 import static android.telephony.TelephonyManager.UNKNOWN_CARRIER_ID; 20 21 import static com.android.internal.telephony.satellite.SatelliteConstants.CONFIG_DATA_SOURCE_CONFIG_UPDATER; 22 import static com.android.internal.telephony.satellite.SatelliteConstants.CONFIG_DATA_SOURCE_ENTITLEMENT; 23 24 import static org.junit.Assert.assertEquals; 25 import static org.mockito.ArgumentMatchers.any; 26 import static org.mockito.ArgumentMatchers.anyBoolean; 27 import static org.mockito.Mockito.clearInvocations; 28 import static org.mockito.Mockito.doReturn; 29 import static org.mockito.Mockito.times; 30 import static org.mockito.Mockito.verify; 31 32 import android.testing.AndroidTestingRunner; 33 import android.testing.TestableLooper; 34 35 import com.android.internal.telephony.TelephonyTest; 36 import com.android.internal.telephony.metrics.SatelliteStats; 37 import com.android.internal.telephony.satellite.metrics.CarrierRoamingSatelliteControllerStats; 38 import com.android.internal.telephony.subscription.SubscriptionManagerService; 39 import com.android.telephony.Rlog; 40 41 import org.junit.After; 42 import org.junit.Before; 43 import org.junit.Test; 44 import org.junit.runner.RunWith; 45 import org.mockito.ArgumentMatchers; 46 import org.mockito.Mock; 47 import org.mockito.MockitoAnnotations; 48 49 @RunWith(AndroidTestingRunner.class) 50 @TestableLooper.RunWithLooper 51 public class CarrierRoamingSatelliteControllerStatsTest extends TelephonyTest { 52 private static final String TAG = "CarrierRoamingSatelliteControllerStatsTest"; 53 private static final int TEST_SUB_ID_0 = 0; 54 private static final int TEST_SUB_ID_1 = 1; 55 private static final int TEST_CARRIER_ID_0 = 1000; 56 private static final int TEST_CARRIER_ID_1 = 1111; 57 private static final long SESSION_TIME = 100L; 58 private static final long SESSION_GAP_1 = 1000000L; 59 private static final long SESSION_GAP_2 = 2000000L; 60 private static final long SESSION_GAP_3 = 4000000L; 61 62 private TestCarrierRoamingSatelliteControllerStats mTestCarrierRoamingSatelliteControllerStats; 63 @Mock 64 private SatelliteStats mMockSatelliteStats; 65 @Mock 66 private SubscriptionManagerService mMockSubscriptionManagerService; 67 @Mock 68 private SatelliteController mMockSatellitecontroller; 69 70 @Before setUp()71 public void setUp() throws Exception { 72 super.setUp(getClass().getSimpleName()); 73 MockitoAnnotations.initMocks(this); 74 logd(TAG + " Setup!"); 75 BackupAndRestoreCarrierRoamContParam.backUpStaticParams(); 76 replaceInstance(SatelliteStats.class, "sInstance", null, mMockSatelliteStats); 77 mTestCarrierRoamingSatelliteControllerStats = 78 new TestCarrierRoamingSatelliteControllerStats(); 79 replaceInstance(SubscriptionManagerService.class, "sInstance", null, 80 mMockSubscriptionManagerService); 81 replaceInstance(SatelliteController.class, "sInstance", null, mMockSatellitecontroller); 82 } 83 84 @After tearDown()85 public void tearDown() throws Exception { 86 Rlog.d(TAG, "tearDown()"); 87 BackupAndRestoreCarrierRoamContParam.restoreStaticParams(); 88 super.tearDown(); 89 } 90 91 @Test testReportConfigDataSource()92 public void testReportConfigDataSource() { 93 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 94 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 95 doReturn(new int[]{TEST_SUB_ID_0}).when( 96 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 97 doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 98 99 initializeStaticParams(); 100 expected.initializeParams(); 101 expected.setConfigDataSource(CONFIG_DATA_SOURCE_ENTITLEMENT); 102 expected.setCarrierId(TEST_CARRIER_ID_0); 103 expected.setIsMultiSim(false); 104 expected.setIsNbIotNtn(false); 105 clearInvocations(mMockSatelliteStats); 106 mTestCarrierRoamingSatelliteControllerStats.reportConfigDataSource(TEST_SUB_ID_0, 107 CONFIG_DATA_SOURCE_ENTITLEMENT); 108 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 109 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 110 111 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 112 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 113 doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 114 115 initializeStaticParams(); 116 expected.initializeParams(); 117 expected.setConfigDataSource(CONFIG_DATA_SOURCE_CONFIG_UPDATER); 118 expected.setCarrierId(TEST_CARRIER_ID_1); 119 expected.setIsMultiSim(true); 120 expected.setIsNbIotNtn(true); 121 clearInvocations(mMockSatelliteStats); 122 mTestCarrierRoamingSatelliteControllerStats.reportConfigDataSource(TEST_SUB_ID_1, 123 CONFIG_DATA_SOURCE_CONFIG_UPDATER); 124 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 125 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 126 } 127 128 @Test testReportCountOfEntitlementStatusQueryRequest()129 public void testReportCountOfEntitlementStatusQueryRequest() { 130 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 131 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 132 doReturn(new int[]{TEST_SUB_ID_0}).when( 133 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 134 doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 135 136 initializeStaticParams(); 137 expected.initializeParams(); 138 expected.setCountOfEntitlementStatusQueryRequest(1); 139 expected.setCarrierId(TEST_CARRIER_ID_0); 140 expected.setIsMultiSim(false); 141 expected.setIsNbIotNtn(false); 142 clearInvocations(mMockSatelliteStats); 143 mTestCarrierRoamingSatelliteControllerStats.reportCountOfEntitlementStatusQueryRequest( 144 TEST_SUB_ID_0); 145 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 146 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 147 148 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 149 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 150 doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 151 152 initializeStaticParams(); 153 expected.initializeParams(); 154 expected.setCountOfEntitlementStatusQueryRequest(1); 155 expected.setCarrierId(TEST_CARRIER_ID_1); 156 expected.setIsMultiSim(true); 157 expected.setIsNbIotNtn(true); 158 clearInvocations(mMockSatelliteStats); 159 mTestCarrierRoamingSatelliteControllerStats.reportCountOfEntitlementStatusQueryRequest( 160 TEST_SUB_ID_1); 161 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 162 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 163 } 164 165 @Test testReportCountOfSatelliteConfigUpdateRequest()166 public void testReportCountOfSatelliteConfigUpdateRequest() { 167 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 168 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 169 doReturn(new int[]{TEST_SUB_ID_0}).when( 170 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 171 172 initializeStaticParams(); 173 expected.initializeParams(); 174 expected.setCountOfSatelliteConfigUpdateRequest(1); 175 expected.setCarrierId(UNKNOWN_CARRIER_ID); 176 expected.setIsMultiSim(false); 177 178 clearInvocations(mMockSatelliteStats); 179 mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteConfigUpdateRequest(); 180 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 181 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 182 183 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 184 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 185 186 initializeStaticParams(); 187 expected.initializeParams(); 188 expected.setCountOfSatelliteConfigUpdateRequest(1); 189 expected.setCarrierId(UNKNOWN_CARRIER_ID); 190 expected.setIsMultiSim(true); 191 192 clearInvocations(mMockSatelliteStats); 193 mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteConfigUpdateRequest(); 194 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 195 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 196 } 197 198 @Test testReportCountOfSatelliteNotificationDisplayed()199 public void testReportCountOfSatelliteNotificationDisplayed() { 200 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 201 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 202 doReturn(new int[]{TEST_SUB_ID_0}).when( 203 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 204 doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 205 206 initializeStaticParams(); 207 expected.initializeParams(); 208 expected.setCountOfSatelliteNotificationDisplayed(1); 209 expected.setCarrierId(TEST_CARRIER_ID_0); 210 expected.setIsMultiSim(false); 211 expected.setIsNbIotNtn(false); 212 213 clearInvocations(mMockSatelliteStats); 214 mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteNotificationDisplayed( 215 TEST_SUB_ID_0); 216 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 217 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 218 219 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 220 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 221 doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 222 223 initializeStaticParams(); 224 expected.initializeParams(); 225 expected.setCountOfSatelliteNotificationDisplayed(1); 226 expected.setCarrierId(TEST_CARRIER_ID_1); 227 expected.setIsMultiSim(true); 228 expected.setIsNbIotNtn(true); 229 clearInvocations(mMockSatelliteStats); 230 mTestCarrierRoamingSatelliteControllerStats.reportCountOfSatelliteNotificationDisplayed( 231 TEST_SUB_ID_1); 232 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 233 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 234 } 235 236 @Test testReportCarrierId()237 public void testReportCarrierId() { 238 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 239 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 240 doReturn(new int[]{TEST_SUB_ID_0}).when( 241 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 242 243 initializeStaticParams(); 244 expected.initializeParams(); 245 expected.setCarrierId(TEST_CARRIER_ID_0); 246 expected.setIsMultiSim(false); 247 248 clearInvocations(mMockSatelliteStats); 249 mTestCarrierRoamingSatelliteControllerStats.reportCarrierId(TEST_CARRIER_ID_0); 250 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 251 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 252 253 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 254 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 255 256 initializeStaticParams(); 257 expected.initializeParams(); 258 expected.setCarrierId(TEST_CARRIER_ID_1); 259 expected.setIsMultiSim(true); 260 clearInvocations(mMockSatelliteStats); 261 mTestCarrierRoamingSatelliteControllerStats.reportCarrierId(TEST_CARRIER_ID_1); 262 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 263 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 264 } 265 266 @Test testReportIsDeviceEntitled()267 public void testReportIsDeviceEntitled() { 268 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 269 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 270 doReturn(new int[]{TEST_SUB_ID_0}).when( 271 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 272 doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 273 274 initializeStaticParams(); 275 expected.initializeParams(); 276 expected.setIsDeviceEntitled(true); 277 expected.setCarrierId(TEST_CARRIER_ID_0); 278 expected.setIsMultiSim(false); 279 expected.setIsNbIotNtn(false); 280 281 clearInvocations(mMockSatelliteStats); 282 mTestCarrierRoamingSatelliteControllerStats.reportIsDeviceEntitled(TEST_SUB_ID_0, true); 283 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 284 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 285 286 doReturn(new int[]{TEST_SUB_ID_0, TEST_SUB_ID_1}).when( 287 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 288 doReturn(true).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 289 290 initializeStaticParams(); 291 expected.initializeParams(); 292 expected.setIsDeviceEntitled(false); 293 expected.setCarrierId(TEST_CARRIER_ID_1); 294 expected.setIsMultiSim(true); 295 expected.setIsNbIotNtn(true); 296 clearInvocations(mMockSatelliteStats); 297 mTestCarrierRoamingSatelliteControllerStats.reportIsDeviceEntitled(TEST_SUB_ID_1, false); 298 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 299 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 300 } 301 302 @Test testSatelliteSessionGaps()303 public void testSatelliteSessionGaps() { 304 final ExpectedCarrierRoamingSatelliteControllerStatsParam expected = 305 new ExpectedCarrierRoamingSatelliteControllerStatsParam(); 306 doReturn(new int[]{TEST_SUB_ID_0}).when( 307 mMockSubscriptionManagerService).getActiveSubIdList(anyBoolean()); 308 doReturn(false).when(mMockSatellitecontroller).isInCarrierRoamingNbIotNtn(any()); 309 310 initializeStaticParams(); 311 expected.initializeParams(); 312 expected.setCarrierId(TEST_CARRIER_ID_0); 313 expected.setIsMultiSim(false); 314 expected.setIsNbIotNtn(false); 315 clearInvocations(mMockSatelliteStats); 316 // first satellite session starts 317 mTestCarrierRoamingSatelliteControllerStats.setCurrentTime(0L); 318 // session counter is increased when session starts 319 expected.setCountOfSatelliteSessions(1); 320 mTestCarrierRoamingSatelliteControllerStats.onSessionStart(TEST_SUB_ID_0); 321 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 322 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 323 324 clearInvocations(mMockSatelliteStats); 325 // first satellite session ends 326 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_TIME); 327 mTestCarrierRoamingSatelliteControllerStats.onSessionEnd(TEST_SUB_ID_0); 328 329 // session gaps would be 0 330 expected.setSatelliteSessionGapMinSec(0); 331 expected.setSatelliteSessionGapAvgSec(0); 332 expected.setSatelliteSessionGapMaxSec(0); 333 // session counter is not reported when session ends 334 expected.setCountOfSatelliteSessions(0); 335 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 336 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 337 338 clearInvocations(mMockSatelliteStats); 339 // second session starts, gap between 1st and 2nd session is 1000sec 340 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_GAP_1); 341 expected.setCountOfSatelliteSessions(1); 342 mTestCarrierRoamingSatelliteControllerStats.onSessionStart(TEST_SUB_ID_0); 343 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 344 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 345 346 clearInvocations(mMockSatelliteStats); 347 // second session end 348 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_TIME); 349 mTestCarrierRoamingSatelliteControllerStats.onSessionEnd(TEST_SUB_ID_0); 350 351 // session gap min / avg / max would be 1000 each 352 expected.setSatelliteSessionGapMinSec(1000); 353 expected.setSatelliteSessionGapAvgSec(1000); 354 expected.setSatelliteSessionGapMaxSec(1000); 355 expected.setCountOfSatelliteSessions(0); 356 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 357 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 358 359 clearInvocations(mMockSatelliteStats); 360 // 3rd session starts, gap between 2nd and 3rd session is 2000 361 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_GAP_2); 362 expected.setCountOfSatelliteSessions(1); 363 mTestCarrierRoamingSatelliteControllerStats.onSessionStart(TEST_SUB_ID_0); 364 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 365 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 366 367 clearInvocations(mMockSatelliteStats); 368 // 3rd session end 369 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_TIME); 370 mTestCarrierRoamingSatelliteControllerStats.onSessionEnd(TEST_SUB_ID_0); 371 372 // session gap min would be 1000 373 expected.setSatelliteSessionGapMinSec(1000); 374 // session gap avg would be 1500 375 int avgGapSec = (int) ((SESSION_GAP_1 + SESSION_GAP_2) / (2 * 1000)); 376 expected.setSatelliteSessionGapAvgSec(avgGapSec); 377 // session gap max would be 2000 378 expected.setSatelliteSessionGapMaxSec(2000); 379 expected.setCountOfSatelliteSessions(0); 380 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 381 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 382 383 clearInvocations(mMockSatelliteStats); 384 // 4th session starts, gap between 3rd and 4th session is 4000 385 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_GAP_3); 386 expected.setCountOfSatelliteSessions(1); 387 mTestCarrierRoamingSatelliteControllerStats.onSessionStart(TEST_SUB_ID_0); 388 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 389 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 390 391 clearInvocations(mMockSatelliteStats); 392 // 4th session end 393 mTestCarrierRoamingSatelliteControllerStats.increaseCurrentTime(SESSION_TIME); 394 mTestCarrierRoamingSatelliteControllerStats.onSessionEnd(TEST_SUB_ID_0); 395 396 // session gap min would be 1000 397 expected.setSatelliteSessionGapMinSec(1000); 398 // session gap avg would be 2333 399 avgGapSec = (int) ((SESSION_GAP_1 + SESSION_GAP_2 + SESSION_GAP_3) / (3 * 1000)); 400 expected.setSatelliteSessionGapAvgSec(avgGapSec); 401 // session gap max would be 4000 402 expected.setSatelliteSessionGapMaxSec(4000); 403 expected.setCountOfSatelliteSessions(0); 404 verify(mMockSatelliteStats, times(1)).onCarrierRoamingSatelliteControllerStatsMetrics( 405 ArgumentMatchers.argThat(argument -> verifyAssets(expected, argument))); 406 } 407 408 private static class BackupAndRestoreCarrierRoamContParam { 409 private static int sSatelliteSessionGapMinSec; 410 private static int sSatelliteSessionGapAvgSec; 411 private static int sSatelliteSessionGapMaxSec; 412 private static int sCarrierId; 413 private static boolean sIsDeviceEntitled; 414 private static boolean sIsMultiSim; 415 private static boolean sIsNbIotNtn; 416 backUpStaticParams()417 public static void backUpStaticParams() { 418 SatelliteStats.CarrierRoamingSatelliteControllerStatsParams param = 419 new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder() 420 .build(); 421 sSatelliteSessionGapMinSec = param.getSatelliteSessionGapMinSec(); 422 sSatelliteSessionGapAvgSec = param.getSatelliteSessionGapAvgSec(); 423 sSatelliteSessionGapMaxSec = param.getSatelliteSessionGapMaxSec(); 424 sCarrierId = param.getCarrierId(); 425 sIsDeviceEntitled = param.isDeviceEntitled(); 426 sIsMultiSim = param.isMultiSim(); 427 sIsNbIotNtn = param.isNbIotNtn(); 428 } 429 restoreStaticParams()430 public static void restoreStaticParams() { 431 SatelliteStats.getInstance().onCarrierRoamingSatelliteControllerStatsMetrics( 432 new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder() 433 .setSatelliteSessionGapMinSec(sSatelliteSessionGapMinSec) 434 .setSatelliteSessionGapAvgSec(sSatelliteSessionGapAvgSec) 435 .setSatelliteSessionGapMaxSec(sSatelliteSessionGapMaxSec) 436 .setCarrierId(sCarrierId) 437 .setIsDeviceEntitled(sIsDeviceEntitled) 438 .setIsMultiSim(sIsMultiSim) 439 .setIsNbIotNtn(sIsNbIotNtn) 440 .build()); 441 } 442 } 443 initializeStaticParams()444 private void initializeStaticParams() { 445 SatelliteStats.getInstance().onCarrierRoamingSatelliteControllerStatsMetrics( 446 new SatelliteStats.CarrierRoamingSatelliteControllerStatsParams.Builder() 447 .setSatelliteSessionGapMinSec(0) 448 .setSatelliteSessionGapAvgSec(0) 449 .setSatelliteSessionGapMaxSec(0) 450 .setCarrierId(UNKNOWN_CARRIER_ID) 451 .setIsDeviceEntitled(false) 452 .setIsMultiSim(false) 453 .setIsNbIotNtn(false) 454 .build()); 455 } 456 verifyAssets(ExpectedCarrierRoamingSatelliteControllerStatsParam expected, SatelliteStats.CarrierRoamingSatelliteControllerStatsParams actual)457 private boolean verifyAssets(ExpectedCarrierRoamingSatelliteControllerStatsParam expected, 458 SatelliteStats.CarrierRoamingSatelliteControllerStatsParams actual) { 459 assertEquals(expected.getConfigDataSource(), actual.getConfigDataSource()); 460 assertEquals(expected.getCountOfEntitlementStatusQueryRequest(), 461 actual.getCountOfEntitlementStatusQueryRequest()); 462 assertEquals(expected.getCountOfSatelliteConfigUpdateRequest(), 463 actual.getCountOfSatelliteConfigUpdateRequest()); 464 assertEquals(expected.getCountOfSatelliteNotificationDisplayed(), 465 actual.getCountOfSatelliteNotificationDisplayed()); 466 assertEquals(expected.getSatelliteSessionGapMinSec(), 467 actual.getSatelliteSessionGapMinSec()); 468 assertEquals(expected.getSatelliteSessionGapAvgSec(), 469 actual.getSatelliteSessionGapAvgSec()); 470 assertEquals(expected.getSatelliteSessionGapMaxSec(), 471 actual.getSatelliteSessionGapMaxSec()); 472 assertEquals(expected.getCarrierId(), actual.getCarrierId()); 473 assertEquals(expected.isDeviceEntitled(), actual.isDeviceEntitled()); 474 assertEquals(expected.isMultiSim(), actual.isMultiSim()); 475 assertEquals(expected.getCountOfSatelliteSessions(), actual.getCountOfSatelliteSessions()); 476 assertEquals(expected.isNbIotNtn(), actual.isNbIotNtn()); 477 return true; 478 } 479 480 private static class ExpectedCarrierRoamingSatelliteControllerStatsParam { 481 private int mConfigDataSource; 482 private int mCountOfEntitlementStatusQueryRequest; 483 private int mCountOfSatelliteConfigUpdateRequest; 484 private int mCountOfSatelliteNotificationDisplayed; 485 private int mSatelliteSessionGapMinSec; 486 private int mSatelliteSessionGapAvgSec; 487 private int mSatelliteSessionGapMaxSec; 488 private int mCarrierId; 489 private boolean mIsDeviceEntitled; 490 private boolean mIsMultiSim; 491 private int mCountOfSatelliteSessions; 492 private boolean mIsNbIotNtn; 493 getConfigDataSource()494 public int getConfigDataSource() { 495 return mConfigDataSource; 496 } 497 getCountOfEntitlementStatusQueryRequest()498 public int getCountOfEntitlementStatusQueryRequest() { 499 return mCountOfEntitlementStatusQueryRequest; 500 } 501 getCountOfSatelliteConfigUpdateRequest()502 public int getCountOfSatelliteConfigUpdateRequest() { 503 return mCountOfSatelliteConfigUpdateRequest; 504 } 505 getCountOfSatelliteNotificationDisplayed()506 public int getCountOfSatelliteNotificationDisplayed() { 507 return mCountOfSatelliteNotificationDisplayed; 508 } 509 getSatelliteSessionGapMinSec()510 public int getSatelliteSessionGapMinSec() { 511 return mSatelliteSessionGapMinSec; 512 } 513 getSatelliteSessionGapAvgSec()514 public int getSatelliteSessionGapAvgSec() { 515 return mSatelliteSessionGapAvgSec; 516 } 517 getSatelliteSessionGapMaxSec()518 public int getSatelliteSessionGapMaxSec() { 519 return mSatelliteSessionGapMaxSec; 520 } 521 getCarrierId()522 public int getCarrierId() { 523 return mCarrierId; 524 } 525 isDeviceEntitled()526 public boolean isDeviceEntitled() { 527 return mIsDeviceEntitled; 528 } 529 isMultiSim()530 public boolean isMultiSim() { 531 return mIsMultiSim; 532 } 533 getCountOfSatelliteSessions()534 public int getCountOfSatelliteSessions() { 535 return mCountOfSatelliteSessions; 536 } 537 isNbIotNtn()538 public boolean isNbIotNtn() { 539 return mIsNbIotNtn; 540 } 541 setConfigDataSource(int configDataSource)542 public void setConfigDataSource(int configDataSource) { 543 mConfigDataSource = configDataSource; 544 } 545 setCountOfEntitlementStatusQueryRequest( int countOfEntitlementStatusQueryRequest)546 public void setCountOfEntitlementStatusQueryRequest( 547 int countOfEntitlementStatusQueryRequest) { 548 mCountOfEntitlementStatusQueryRequest = countOfEntitlementStatusQueryRequest; 549 } 550 setCountOfSatelliteConfigUpdateRequest( int countOfSatelliteConfigUpdateRequest)551 public void setCountOfSatelliteConfigUpdateRequest( 552 int countOfSatelliteConfigUpdateRequest) { 553 mCountOfSatelliteConfigUpdateRequest = countOfSatelliteConfigUpdateRequest; 554 } 555 setCountOfSatelliteNotificationDisplayed( int countOfSatelliteNotificationDisplayed)556 public void setCountOfSatelliteNotificationDisplayed( 557 int countOfSatelliteNotificationDisplayed) { 558 mCountOfSatelliteNotificationDisplayed = countOfSatelliteNotificationDisplayed; 559 } 560 setSatelliteSessionGapMinSec(int satelliteSessionGapMinSec)561 public void setSatelliteSessionGapMinSec(int satelliteSessionGapMinSec) { 562 mSatelliteSessionGapMinSec = satelliteSessionGapMinSec; 563 } 564 setSatelliteSessionGapAvgSec(int satelliteSessionGapAvgSec)565 public void setSatelliteSessionGapAvgSec(int satelliteSessionGapAvgSec) { 566 mSatelliteSessionGapAvgSec = satelliteSessionGapAvgSec; 567 } 568 setSatelliteSessionGapMaxSec(int satelliteSessionGapMaxSec)569 public void setSatelliteSessionGapMaxSec(int satelliteSessionGapMaxSec) { 570 mSatelliteSessionGapMaxSec = satelliteSessionGapMaxSec; 571 } 572 setCarrierId(int carrierId)573 public void setCarrierId(int carrierId) { 574 mCarrierId = carrierId; 575 } 576 setIsDeviceEntitled(boolean isDeviceEntitled)577 public void setIsDeviceEntitled(boolean isDeviceEntitled) { 578 mIsDeviceEntitled = isDeviceEntitled; 579 } 580 setIsMultiSim(boolean isMultiSim)581 public void setIsMultiSim(boolean isMultiSim) { 582 mIsMultiSim = isMultiSim; 583 } 584 setCountOfSatelliteSessions(int countOfSatelliteSessions)585 public void setCountOfSatelliteSessions(int countOfSatelliteSessions) { 586 mCountOfSatelliteSessions = countOfSatelliteSessions; 587 } 588 setIsNbIotNtn(boolean isNbIotNtn)589 public void setIsNbIotNtn(boolean isNbIotNtn) { 590 mIsNbIotNtn = isNbIotNtn; 591 } 592 initializeParams()593 public void initializeParams() { 594 mConfigDataSource = SatelliteConstants.CONFIG_DATA_SOURCE_UNKNOWN; 595 mCountOfEntitlementStatusQueryRequest = 0; 596 mCountOfSatelliteConfigUpdateRequest = 0; 597 mCountOfSatelliteNotificationDisplayed = 0; 598 mSatelliteSessionGapMinSec = 0; 599 mSatelliteSessionGapAvgSec = 0; 600 mSatelliteSessionGapMaxSec = 0; 601 mCarrierId = UNKNOWN_CARRIER_ID; 602 mIsDeviceEntitled = false; 603 mIsMultiSim = false; 604 mCountOfSatelliteSessions = 0; 605 mIsNbIotNtn = false; 606 } 607 } 608 609 static class TestCarrierRoamingSatelliteControllerStats extends 610 CarrierRoamingSatelliteControllerStats { 611 private long mCurrentTime; TestCarrierRoamingSatelliteControllerStats()612 TestCarrierRoamingSatelliteControllerStats() { 613 super(); 614 logd("constructing TestCarrierRoamingSatelliteControllerStats"); 615 } 616 617 @Override getCarrierIdFromSubscription(int subId)618 public int getCarrierIdFromSubscription(int subId) { 619 logd("getCarrierIdFromSubscription()"); 620 if (subId == TEST_SUB_ID_0) { 621 return TEST_CARRIER_ID_0; 622 } else if (subId == TEST_SUB_ID_1) { 623 return TEST_CARRIER_ID_1; 624 } else { 625 return UNKNOWN_CARRIER_ID; 626 } 627 } 628 629 @Override getElapsedRealtime()630 public long getElapsedRealtime() { 631 return mCurrentTime; 632 } 633 setCurrentTime(long currentTime)634 public void setCurrentTime(long currentTime) { 635 mCurrentTime = currentTime; 636 } 637 increaseCurrentTime(long incTime)638 public void increaseCurrentTime(long incTime) { 639 mCurrentTime += incTime; 640 } 641 } 642 } 643