summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Chow <ktchow@google.com>2023-03-02 09:52:40 +0000
committerJeremy Chow <ktchow@google.com>2023-03-02 09:56:21 +0000
commitc0f8a360001237dcea442aeb663a327516914daa (patch)
tree2275487d4ce22559feb7f125f5a2dec855b077b4
parent950dbee9fa549e20a2301f7b9894b668fdf89b74 (diff)
downloadTelephony-c0f8a360001237dcea442aeb663a327516914daa.tar.gz
[QNS] Fix thresholdBreached() to meet CP design
Bug: 271378124 Test: atest QualifiedNetworksServiceTest Change-Id: If5952a2ee34ce30bf70f4758fccd37d0d429311a
-rw-r--r--services/QualifiedNetworksService/src/com/android/telephony/qns/QnsCallStatusTracker.java7
-rw-r--r--services/QualifiedNetworksService/tests/src/com/android/telephony/qns/QnsCallStatusTrackerTest.java49
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));
+ }
}