summaryrefslogtreecommitdiff
path: root/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp')
-rw-r--r--tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp101
1 files changed, 67 insertions, 34 deletions
diff --git a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp
index a94b6654..bedb63bb 100644
--- a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp
+++ b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/MediaQualityAnalyzerTest.cpp
@@ -19,7 +19,6 @@
#include <AudioConfig.h>
#include <ImsMediaAudioUtil.h>
#include <MediaQualityAnalyzer.h>
-#include <ImsMediaCondition.h>
#include <MockBaseSessionCallback.h>
#include <ImsMediaTimer.h>
@@ -100,13 +99,7 @@ public:
}
}
- virtual void onEvent(int32_t type, uint64_t param1, uint64_t param2)
- {
- (void)type;
- (void)param1;
- (void)param2;
- }
-
+ virtual void onEvent(int32_t /* type */, uint64_t /* param1 */, uint64_t /* param2 */) {}
CallQuality getCallQuality() { return mCallQuality; }
MediaQualityStatus getMediaQualityStatus() { return mStatus; }
@@ -115,6 +108,48 @@ private:
MediaQualityStatus mStatus;
};
+class FakeMediaQualityAnalyzer : public MediaQualityAnalyzer
+{
+public:
+ FakeMediaQualityAnalyzer() :
+ MediaQualityAnalyzer()
+ {
+ counter = 0;
+ }
+ virtual ~FakeMediaQualityAnalyzer() {}
+
+ virtual void start()
+ {
+ mCallQuality.setCodecType(convertAudioCodecType(
+ mCodecType, ImsMediaAudioUtil::FindMaxEvsBandwidthFromRange(mCodecAttribute)));
+ }
+
+ virtual void stop()
+ {
+ notifyCallQuality();
+ reset();
+ }
+
+ void testProcessCycle(const int32_t numCycle)
+ {
+ for (int i = 0; i < numCycle; i++)
+ {
+ while (!mListevent.empty())
+ {
+ processEvent(mListevent.front(), mListParamA.front(), mListParamB.front());
+ mListevent.pop_front();
+ mListParamA.pop_front();
+ mListParamB.pop_front();
+ }
+
+ processData(++counter);
+ }
+ }
+
+private:
+ int32_t counter;
+};
+
class MediaQualityAnalyzerTest : public ::testing::Test
{
public:
@@ -122,21 +157,20 @@ public:
virtual ~MediaQualityAnalyzerTest() {}
protected:
- MediaQualityAnalyzer* mAnalyzer;
+ FakeMediaQualityAnalyzer* mAnalyzer;
AudioConfig mConfig;
RtcpConfig mRtcpConfig;
AmrParams mAmrParam;
EvsParams mEvsParam;
FakeMediaQualityCallback mFakeCallback;
MockBaseSessionCallback mCallback;
- ImsMediaCondition mCondition;
virtual void SetUp() override
{
mCallback.SetDelegate(&mFakeCallback);
mCallback.DelegateToFake();
- mAnalyzer = new MediaQualityAnalyzer();
+ mAnalyzer = new FakeMediaQualityAnalyzer();
mRtcpConfig.setCanonicalName(kCanonicalName);
mRtcpConfig.setTransmitPort(kTransmitPort);
mRtcpConfig.setIntervalSec(kIntervalSec);
@@ -172,7 +206,6 @@ protected:
mAnalyzer->setCallback(&mCallback);
mAnalyzer->setConfig(&mConfig);
- mCondition.reset();
}
virtual void TearDown() override
@@ -243,7 +276,8 @@ TEST_F(MediaQualityAnalyzerTest, TestCollectTxPackets)
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtpTx, reinterpret_cast<uint64_t>(packet));
}
- mCondition.wait_timeout(1100); // 1.1 sec
+ mAnalyzer->testProcessCycle(1);
+
EXPECT_EQ(mAnalyzer->getTxPacketSize(), numPackets);
EXPECT_EQ(mAnalyzer->getRxPacketSize(), 0);
EXPECT_EQ(mAnalyzer->getLostPacketSize(), 0);
@@ -265,7 +299,7 @@ TEST_F(MediaQualityAnalyzerTest, TestRtpInactivityNotRunning)
threshold.setRtpInactivityTimerMillis(std::vector<int32_t>{0});
mAnalyzer->setMediaQualityThreshold(threshold);
mAnalyzer->start();
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
mAnalyzer->stop();
}
@@ -277,13 +311,13 @@ TEST_F(MediaQualityAnalyzerTest, TestRtpInactivityRunning)
threshold.setRtpInactivityTimerMillis(kRtpInactivityTimerMillis);
mAnalyzer->setMediaQualityThreshold(threshold);
mAnalyzer->start();
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
// Check MediaQualityStatus value
MediaQualityStatus quality1 = mFakeCallback.getMediaQualityStatus();
EXPECT_EQ(quality1.getRtpInactivityTimeMillis(), 2000);
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
// Check MediaQualityStatus value
MediaQualityStatus quality2 = mFakeCallback.getMediaQualityStatus();
@@ -293,7 +327,7 @@ TEST_F(MediaQualityAnalyzerTest, TestRtpInactivityRunning)
packet->seqNum = 0;
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtpRx, reinterpret_cast<uint64_t>(packet));
- mCondition.wait_timeout(3100); // 3.1 sec
+ mAnalyzer->testProcessCycle(3);
MediaQualityStatus quality3 = mFakeCallback.getMediaQualityStatus();
EXPECT_EQ(quality3.getRtpInactivityTimeMillis(), 2000);
@@ -308,21 +342,20 @@ TEST_F(MediaQualityAnalyzerTest, TestRtcpInactivity)
threshold.setRtcpInactivityTimerMillis(kRtcpInactivityTimerMillis);
mAnalyzer->setMediaQualityThreshold(threshold);
mAnalyzer->start();
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
// Check MediaQualityStatus value
MediaQualityStatus quality1 = mFakeCallback.getMediaQualityStatus();
EXPECT_EQ(quality1.getRtcpInactivityTimeMillis(), 2000);
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
// Check MediaQualityStatus value
MediaQualityStatus quality2 = mFakeCallback.getMediaQualityStatus();
EXPECT_EQ(quality2.getRtcpInactivityTimeMillis(), 2000);
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtcp);
-
- mCondition.wait_timeout(3100); // 3.1 sec
+ mAnalyzer->testProcessCycle(3);
MediaQualityStatus quality3 = mFakeCallback.getMediaQualityStatus();
EXPECT_EQ(quality3.getRtcpInactivityTimeMillis(), 2000);
@@ -333,7 +366,7 @@ TEST_F(MediaQualityAnalyzerTest, TestCallQualityInactivity)
{
EXPECT_CALL(mCallback, onEvent(kAudioCallQualityChangedInd, _, _)).Times(2);
mAnalyzer->start();
- mCondition.wait_timeout(4100); // 4.1 sec
+ mAnalyzer->testProcessCycle(4);
mAnalyzer->stop();
// Check CallQuality value
@@ -369,7 +402,7 @@ TEST_F(MediaQualityAnalyzerTest, TestCallQualityLevelChanged)
SessionCallbackParameter* param = new SessionCallbackParameter(kReportPacketLossGap, 5, 1);
mAnalyzer->SendEvent(kCollectOptionalInfo, reinterpret_cast<uint64_t>(param), 0);
- mCondition.wait_timeout(5100); // 5.1 sec
+ mAnalyzer->testProcessCycle(5);
EXPECT_EQ(mAnalyzer->getTxPacketSize(), 0);
EXPECT_EQ(mAnalyzer->getRxPacketSize(), numPackets - 1);
@@ -409,7 +442,7 @@ TEST_F(MediaQualityAnalyzerTest, TestJitterInd)
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtpRx, reinterpret_cast<uint64_t>(packet));
}
- mCondition.wait_timeout(1100); // 1.1 sec
+ mAnalyzer->testProcessCycle(1);
EXPECT_EQ(mAnalyzer->getTxPacketSize(), 0);
EXPECT_EQ(mAnalyzer->getRxPacketSize(), numPackets);
@@ -452,7 +485,8 @@ TEST_F(MediaQualityAnalyzerTest, TestSsrcChange)
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtpRx, reinterpret_cast<uint64_t>(packet));
}
- mCondition.wait_timeout(1100); // 1.1 sec
+ mAnalyzer->testProcessCycle(1);
+
EXPECT_EQ(mAnalyzer->getTxPacketSize(), 0);
EXPECT_EQ(mAnalyzer->getRxPacketSize(), numPackets);
EXPECT_EQ(mAnalyzer->getLostPacketSize(), 0);
@@ -481,7 +515,7 @@ TEST_F(MediaQualityAnalyzerTest, TestPacketLossInd)
{
RtpPacket* packet = new RtpPacket();
- if (i == 5) // make 10% loss rate
+ if (i == 5 || i == 6) // make 20% loss rate
{
continue;
}
@@ -492,14 +526,14 @@ TEST_F(MediaQualityAnalyzerTest, TestPacketLossInd)
mAnalyzer->SendEvent(kCollectPacketInfo, kStreamRtpRx, reinterpret_cast<uint64_t>(packet));
}
- SessionCallbackParameter* param = new SessionCallbackParameter(kReportPacketLossGap, 5, 1);
+ SessionCallbackParameter* param = new SessionCallbackParameter(kReportPacketLossGap, 5, 2);
mAnalyzer->SendEvent(kCollectOptionalInfo, reinterpret_cast<uint64_t>(param), 0);
- mCondition.wait_timeout(1100); // 1.1 sec
+ mAnalyzer->testProcessCycle(1);
EXPECT_EQ(mAnalyzer->getTxPacketSize(), 0);
- EXPECT_EQ(mAnalyzer->getRxPacketSize(), numPackets - 1);
- EXPECT_EQ(mAnalyzer->getLostPacketSize(), 1);
+ EXPECT_EQ(mAnalyzer->getRxPacketSize(), numPackets - 2);
+ EXPECT_EQ(mAnalyzer->getLostPacketSize(), 2);
mAnalyzer->stop();
@@ -507,10 +541,10 @@ TEST_F(MediaQualityAnalyzerTest, TestPacketLossInd)
EXPECT_EQ(mAnalyzer->getRxPacketSize(), 0);
EXPECT_EQ(mAnalyzer->getLostPacketSize(), 0);
- EXPECT_EQ(mFakeCallback.getCallQuality().getNumRtpPacketsNotReceived(), 1);
+ EXPECT_EQ(mFakeCallback.getCallQuality().getNumRtpPacketsNotReceived(), 2);
MediaQualityStatus status = mFakeCallback.getMediaQualityStatus();
- EXPECT_EQ(status.getRtpPacketLossRate(), 10);
+ EXPECT_EQ(status.getRtpPacketLossRate(), 20);
}
TEST_F(MediaQualityAnalyzerTest, TestNotifyMediaQualityStatus)
@@ -521,7 +555,6 @@ TEST_F(MediaQualityAnalyzerTest, TestNotifyMediaQualityStatus)
threshold.setNotifyCurrentStatus(true);
mAnalyzer->setMediaQualityThreshold(threshold);
mAnalyzer->start();
-
- mCondition.wait_timeout(2100); // 2.1 sec
+ mAnalyzer->testProcessCycle(2);
mAnalyzer->stop();
} \ No newline at end of file