diff options
author | Jeremy Chow <ktchow@google.com> | 2023-03-02 09:52:40 +0000 |
---|---|---|
committer | Jeremy Chow <ktchow@google.com> | 2023-03-02 09:56:21 +0000 |
commit | c0f8a360001237dcea442aeb663a327516914daa (patch) | |
tree | 2275487d4ce22559feb7f125f5a2dec855b077b4 | |
parent | 950dbee9fa549e20a2301f7b9894b668fdf89b74 (diff) | |
download | Telephony-c0f8a360001237dcea442aeb663a327516914daa.tar.gz |
[QNS] Fix thresholdBreached() to meet CP design
Bug: 271378124
Test: atest QualifiedNetworksServiceTest
Change-Id: If5952a2ee34ce30bf70f4758fccd37d0d429311a
2 files changed, 53 insertions, 3 deletions
diff --git a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java index 5932059..c8b5a1e 100644 --- a/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java +++ b/services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java @@ -699,19 +699,20 @@ public class QnsCallStatusTracker { } } + @VisibleForTesting int thresholdBreached(MediaQualityStatus status) { int breachedReason = 0; QnsCarrierConfigManager.RtpMetricsConfig rtpConfig = mConfigManager.getRTPMetricsData(); if (status.getRtpPacketLossRate() > 0 - && status.getRtpPacketLossRate() > rtpConfig.mPktLossRate) { + && status.getRtpPacketLossRate() >= rtpConfig.mPktLossRate) { breachedReason |= 1 << QnsConstants.RTP_LOW_QUALITY_REASON_PACKET_LOSS; } if (status.getRtpJitterMillis() > 0 - && status.getRtpJitterMillis() > rtpConfig.mJitter) { + && status.getRtpJitterMillis() >= rtpConfig.mJitter) { breachedReason |= 1 << QnsConstants.RTP_LOW_QUALITY_REASON_JITTER; } if (status.getRtpInactivityMillis() > 0 - && status.getRtpInactivityMillis() > rtpConfig.mNoRtpInterval) { + && status.getRtpInactivityMillis() >= rtpConfig.mNoRtpInterval) { breachedReason |= 1 << QnsConstants.RTP_LOW_QUALITY_REASON_NO_RTP; } return breachedReason; diff --git a/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/QnsCallStatusTrackerTest.java b/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/QnsCallStatusTrackerTest.java index 0139106..72ff8b3 100644 --- a/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/QnsCallStatusTrackerTest.java +++ b/services/QualifiedNetworksService/tests/src/com/android/telephony/qns/QnsCallStatusTrackerTest.java @@ -1285,4 +1285,53 @@ public class QnsCallStatusTrackerTest extends QnsTest { mCallTracker.updateCallState(mTestCallStateList); assertTrue(mCallTracker.isCallIdle()); } + + @Test + public void testThresholdBreached() { + QnsCarrierConfigManager.RtpMetricsConfig config = + new QnsCarrierConfigManager.RtpMetricsConfig(120, 30, 12000, 10000); + when(mMockQnsConfigManager.getRTPMetricsData()).thenReturn(config); + + MediaQualityStatus status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 30 /*packetLossRate*/, 0 /*jitter*/, 0 /*inactivityTime*/); + assertEquals(1 << QnsConstants.RTP_LOW_QUALITY_REASON_PACKET_LOSS, + mCallTracker.getActiveCallTracker().thresholdBreached(status)); + status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 29 /*packetLossRate*/, 0 /*jitter*/, 0 /*inactivityTime*/); + assertEquals(0, mCallTracker.getActiveCallTracker().thresholdBreached(status)); + + status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 0 /*packetLossRate*/, 120 /*jitter*/, 0 /*inactivityTime*/); + assertEquals(1 << QnsConstants.RTP_LOW_QUALITY_REASON_JITTER, + mCallTracker.getActiveCallTracker().thresholdBreached(status)); + status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 0 /*packetLossRate*/, 119 /*jitter*/, 0 /*inactivityTime*/); + assertEquals(0, mCallTracker.getActiveCallTracker().thresholdBreached(status)); + + status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 0 /*packetLossRate*/, 0 /*jitter*/, 10000 /*inactivityTime*/); + assertEquals(1 << QnsConstants.RTP_LOW_QUALITY_REASON_NO_RTP, + mCallTracker.getActiveCallTracker().thresholdBreached(status)); + status = + new MediaQualityStatus( + "1", MediaQualityStatus.MEDIA_SESSION_TYPE_AUDIO, + AccessNetworkConstants.TRANSPORT_TYPE_WWAN, + 9 /*packetLossRate*/, 0 /*jitter*/, 9999 /*inactivityTime*/); + assertEquals(0, mCallTracker.getActiveCallTracker().thresholdBreached(status)); + } } |