diff --git a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java index 232114e27f..68fa38da0f 100644 --- a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java +++ b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java @@ -278,18 +278,23 @@ public class ConnectivityDiagnosticsManagerTest { assertTrue("Didn't receive broadcast for ACTION_CARRIER_CONFIG_CHANGED for subId=" + subId, carrierConfigReceiver.waitForCarrierConfigChanged()); - assertTrue("Don't have Carrier Privileges after adding cert for this package", - mTelephonyManager.createForSubscriptionId(subId).hasCarrierPrivileges()); // Wait for CarrierPrivilegesTracker to receive the ACTION_CARRIER_CONFIG_CHANGED // broadcast. CPT then needs to update the corresponding DataConnection, which then // updates ConnectivityService. Unfortunately, this update to the NetworkCapabilities in // CS does not trigger NetworkCallback#onCapabilitiesChanged as changing the // administratorUids is not a publicly visible change. In lieu of a better signal to - // detministically wait for, use Thread#sleep here. + // deterministically wait for, use Thread#sleep here. // TODO(b/157949581): replace this Thread#sleep with a deterministic signal Thread.sleep(DELAY_FOR_ADMIN_UIDS_MILLIS); + // TODO(b/217559768): Receiving carrier config change and immediately checking carrier + // privileges is racy, as the CP status is updated after receiving the same signal. Move + // the CP check after sleep to temporarily reduce the flakiness. This will soon be fixed + // by switching to CarrierPrivilegesListener. + assertTrue("Don't have Carrier Privileges after adding cert for this package", + mTelephonyManager.createForSubscriptionId(subId).hasCarrierPrivileges()); + final TestConnectivityDiagnosticsCallback connDiagsCallback = createAndRegisterConnectivityDiagnosticsCallback(CELLULAR_NETWORK_REQUEST);