Refactor Tuner VTS dvr and descrambler test implementation
Note that we are not testing them right now
Test entry will be implemented or uncomment in next Tuner develop phase
Test: cuttlefish + vendor device
Bug: 135708935
Change-Id: Iea72bd54c85105f74133c67433bd51f8fd07f28d
(cherry picked from commit fc7cc15ebb604022c935ccedde9613dcb1c7070a)
diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp
index e8c8010..f693e7c 100644
--- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp
+++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp
@@ -154,7 +154,7 @@
};
// const uint16_t FMQ_SIZE_4K = 0x1000;
-// const uint32_t FMQ_SIZE_1M = 0x100000;
+const uint32_t FMQ_SIZE_1M = 0x100000;
const uint32_t FMQ_SIZE_16M = 0x1000000;
const uint8_t FRONTEND_EVENT_CALLBACK_WAIT_COUNT = 4;
@@ -698,9 +698,9 @@
mRecordThreadRunning = false;
android::Mutex::Autolock autoLock(mRecordThreadLock);
}
-/******************************** End DvrCallback **********************************/
+/********************************** End DvrCallback ************************************/
-/******************************** Start Test Implementation**********************************/
+/***************************** Start Test Implementation ******************************/
class TunerHidlTest : public testing::TestWithParam<std::string> {
public:
virtual void SetUp() override {
@@ -734,7 +734,7 @@
sp<FilterCallback> mFilterCallback;
sp<DvrCallback> mDvrCallback;
MQDesc mFilterMQDescriptor;
- MQDesc mPlaybackMQDescriptor;
+ MQDesc mDvrMQDescriptor;
MQDesc mRecordMQDescriptor;
vector<uint32_t> mUsedFilterIds;
hidl_vec<FrontendId> mFeIds;
@@ -759,6 +759,10 @@
AssertionResult setDemuxFrontendDataSource(uint32_t frontendId);
AssertionResult closeDemux();
+ AssertionResult openDvrInDemux(DvrType type);
+ AssertionResult configDvr(DvrSettings setting);
+ AssertionResult getDvrMQDescriptor();
+
AssertionResult openFilterInDemux(DemuxFilterType type);
AssertionResult getNewlyOpenedFilterId(uint32_t& filterId);
AssertionResult configFilter(DemuxFilterSettings setting, uint32_t filterId);
@@ -767,26 +771,20 @@
AssertionResult stopFilter(uint32_t filterId);
AssertionResult closeFilter(uint32_t filterId);
+ AssertionResult createDescrambler();
+ AssertionResult closeDescrambler();
+
+ AssertionResult playbackDataFlowTest(vector<FilterConfig> filterConf, PlaybackConf playbackConf,
+ vector<string> goldenOutputFiles);
+ AssertionResult recordDataFlowTest(vector<FilterConfig> filterConf,
+ RecordSettings recordSetting,
+ vector<string> goldenOutputFiles);
AssertionResult broadcastDataFlowTest(vector<string> goldenOutputFiles);
- ::testing::AssertionResult getPlaybackMQDescriptor();
- ::testing::AssertionResult addPlaybackToDemux(PlaybackSettings setting);
- ::testing::AssertionResult getRecordMQDescriptor();
- ::testing::AssertionResult addRecordToDemux(RecordSettings setting);
- ::testing::AssertionResult createDescrambler();
- ::testing::AssertionResult closeDescrambler();
-
- ::testing::AssertionResult playbackDataFlowTest(vector<FilterConfig> filterConf,
- PlaybackConf playbackConf,
- vector<string> goldenOutputFiles);
- ::testing::AssertionResult recordDataFlowTest(vector<FilterConfig> filterConf,
- RecordSettings recordSetting,
- vector<string> goldenOutputFiles);
-
FilterEventType getFilterEventType(DemuxFilterType type);
};
-/*============================Start Frontend APIs Tests Implementation============================*/
+/*========================== Start Frontend APIs Tests Implementation ==========================*/
AssertionResult TunerHidlTest::getFrontendIds() {
Result status;
mService->getFrontendIds([&](Result result, const hidl_vec<FrontendId>& frontendIds) {
@@ -865,9 +863,9 @@
mFrontendCallback = nullptr;
return AssertionResult(status == Result::SUCCESS);
}
-/*============================End Frontend APIs Tests Implementation============================*/
+/*=========================== End Frontend APIs Tests Implementation ===========================*/
-/*============================Start Demux APIs Tests Implementation============================*/
+/*============================ Start Demux APIs Tests Implementation ============================*/
AssertionResult TunerHidlTest::openDemux() {
Result status;
mService->openDemux([&](Result result, uint32_t demuxId, const sp<IDemux>& demux) {
@@ -912,9 +910,9 @@
return AssertionResult(status == Result::SUCCESS);
}
-/*============================End Demux APIs Tests Implementation============================*/
+/*============================ End Demux APIs Tests Implementation ============================*/
-/*============================Start Filter APIs Tests Implementation============================*/
+/*=========================== Start Filter APIs Tests Implementation ===========================*/
AssertionResult TunerHidlTest::getNewlyOpenedFilterId(uint32_t& filterId) {
Result status;
EXPECT_TRUE(mDemux) << "Test with openDemux first.";
@@ -989,131 +987,79 @@
}
return AssertionResult(status == Result::SUCCESS);
}
-/*============================End Filter APIs Tests Implementation============================*/
+/*=========================== End Filter APIs Tests Implementation ===========================*/
-/*::testing::AssertionResult TunerHidlTest::createDescrambler() {
+/*======================== Start Descrambler APIs Tests Implementation ========================*/
+AssertionResult TunerHidlTest::createDescrambler() {
Result status;
-
+ EXPECT_TRUE(mDemux) << "Test with openDemux first.";
mService->openDescrambler([&](Result result, const sp<IDescrambler>& descrambler) {
mDescrambler = descrambler;
status = result;
});
if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
- }
-
- if (!mDemux && createDemux() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ return failure();
}
status = mDescrambler->setDemuxSource(mDemuxId);
if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
// Test if demux source can be set more than once.
status = mDescrambler->setDemuxSource(mDemuxId);
- return ::testing::AssertionResult(status == Result::INVALID_STATE);
+ return AssertionResult(status == Result::INVALID_STATE);
}
-::testing::AssertionResult TunerHidlTest::closeDescrambler() {
+AssertionResult TunerHidlTest::closeDescrambler() {
Result status;
- if (!mDescrambler && createDescrambler() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ if (!mDescrambler && createDescrambler() == failure()) {
+ return failure();
}
status = mDescrambler->close();
mDescrambler = nullptr;
- return ::testing::AssertionResult(status == Result::SUCCESS);
+ return AssertionResult(status == Result::SUCCESS);
}
+/*========================= End Descrambler APIs Tests Implementation =========================*/
-::testing::AssertionResult TunerHidlTest::addPlaybackToDemux(PlaybackSettings setting) {
+/*============================ Start Dvr APIs Tests Implementation ============================*/
+AssertionResult TunerHidlTest::openDvrInDemux(DvrType type) {
Result status;
-
- if (!mDemux && createDemux() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
- }
+ EXPECT_TRUE(mDemux) << "Test with openDemux first.";
// Create dvr callback
mDvrCallback = new DvrCallback();
- // Add playback input to the local demux
- mDemux->openDvr(DvrType::PLAYBACK, FMQ_SIZE_1M, mDvrCallback,
- [&](Result result, const sp<IDvr>& dvr) {
- mDvr = dvr;
- status = result;
- });
-
- if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
- }
-
- DvrSettings dvrSetting;
- dvrSetting.playback(setting);
- status = mDvr->configure(dvrSetting);
-
- return ::testing::AssertionResult(status == Result::SUCCESS);
-}
-
-::testing::AssertionResult TunerHidlTest::getPlaybackMQDescriptor() {
- Result status;
-
- if ((!mDemux && createDemux() == ::testing::AssertionFailure()) || !mDvr) {
- return ::testing::AssertionFailure();
- }
-
- mDvr->getQueueDesc([&](Result result, const MQDesc& dvrMQDesc) {
- mPlaybackMQDescriptor = dvrMQDesc;
+ mDemux->openDvr(type, FMQ_SIZE_1M, mDvrCallback, [&](Result result, const sp<IDvr>& dvr) {
+ mDvr = dvr;
status = result;
});
- return ::testing::AssertionResult(status == Result::SUCCESS);
+ return AssertionResult(status == Result::SUCCESS);
}
-::testing::AssertionResult TunerHidlTest::addRecordToDemux(RecordSettings setting) {
- Result status;
+AssertionResult TunerHidlTest::configDvr(DvrSettings setting) {
+ Result status = mDvr->configure(setting);
- if (!mDemux && createDemux() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
- }
-
- // Create dvr callback
- mDvrCallback = new DvrCallback();
-
- // Add playback input to the local demux
- mDemux->openDvr(DvrType::RECORD, FMQ_SIZE_1M, mDvrCallback,
- [&](Result result, const sp<IDvr>& dvr) {
- mDvr = dvr;
- status = result;
- });
-
- if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
- }
-
- DvrSettings dvrSetting;
- dvrSetting.record(setting);
- status = mDvr->configure(dvrSetting);
-
- return ::testing::AssertionResult(status == Result::SUCCESS);
+ return AssertionResult(status == Result::SUCCESS);
}
-::testing::AssertionResult TunerHidlTest::getRecordMQDescriptor() {
+AssertionResult TunerHidlTest::getDvrMQDescriptor() {
Result status;
-
- if ((!mDemux && createDemux() == ::testing::AssertionFailure()) || !mDvr) {
- return ::testing::AssertionFailure();
- }
+ EXPECT_TRUE(mDemux) << "Test with openDemux first.";
+ EXPECT_TRUE(mDvr) << "Test with openDvr first.";
mDvr->getQueueDesc([&](Result result, const MQDesc& dvrMQDesc) {
- mRecordMQDescriptor = dvrMQDesc;
+ mDvrMQDescriptor = dvrMQDesc;
status = result;
});
- return ::testing::AssertionResult(status == Result::SUCCESS);
-}*/
+ return AssertionResult(status == Result::SUCCESS);
+}
+/*============================ End Dvr APIs Tests Implementation ============================*/
-/*============================Start Data Flow Tests Implementation============================*/
+/*========================== Start Data Flow Tests Implementation ==========================*/
AssertionResult TunerHidlTest::broadcastDataFlowTest(vector<string> /*goldenOutputFiles*/) {
EXPECT_TRUE(mFrontend) << "Test with openFilterInDemux first.";
EXPECT_TRUE(mDemux) << "Test with openDemux first.";
@@ -1130,7 +1076,7 @@
/*
* TODO: re-enable the tests after finalizing the test refactoring.
*/
-/*::testing::AssertionResult TunerHidlTest::playbackDataFlowTest(
+/*AssertionResult TunerHidlTest::playbackDataFlowTest(
vector<FilterConf> filterConf, PlaybackConf playbackConf,
vector<string> \/\*goldenOutputFiles\*\/) {
Result status;
@@ -1138,10 +1084,10 @@
// Filter Configuration Module
for (int i = 0; i < filterConf.size(); i++) {
if (addFilterToDemux(filterConf[i].type, filterConf[i].setting) ==
- ::testing::AssertionFailure() ||
+ failure() ||
// TODO use a map to save the FMQs/EvenFlags and pass to callback
- getFilterMQDescriptor() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ getFilterMQDescriptor() == failure()) {
+ return failure();
}
filterIdsSize = mUsedFilterIds.size();
mUsedFilterIds.resize(filterIdsSize + 1);
@@ -1152,25 +1098,25 @@
// mDemuxCallback->updateGoldenOutputMap(goldenOutputFiles[i]);
status = mFilter->start();
if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
}
// Playback Input Module
PlaybackSettings playbackSetting = playbackConf.setting;
- if (addPlaybackToDemux(playbackSetting) == ::testing::AssertionFailure() ||
- getPlaybackMQDescriptor() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ if (addPlaybackToDemux(playbackSetting) == failure() ||
+ getPlaybackMQDescriptor() == failure()) {
+ return failure();
}
for (int i = 0; i <= filterIdsSize; i++) {
if (mDvr->attachFilter(mFilters[mUsedFilterIds[i]]) != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
}
mDvrCallback->startPlaybackInputThread(playbackConf, mPlaybackMQDescriptor);
status = mDvr->start();
if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
// Data Verify Module
@@ -1183,11 +1129,11 @@
// Clean Up Module
for (int i = 0; i <= filterIdsSize; i++) {
if (mFilters[mUsedFilterIds[i]]->stop() != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
}
if (mDvr->stop() != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
mUsedFilterIds.clear();
mFilterCallbacks.clear();
@@ -1195,10 +1141,11 @@
return closeDemux();
}
-::testing::AssertionResult TunerHidlTest::recordDataFlowTest(vector<FilterConf> filterConf,
- RecordSettings recordSetting,
- vector<string>
-\/\*goldenOutputFiles\*\/) { Result status; hidl_vec<FrontendId> feIds;
+AssertionResult TunerHidlTest::recordDataFlowTest(vector<FilterConf> filterConf,
+ RecordSettings recordSetting,
+ vector<string> goldenOutputFiles) {
+ Result status;
+ hidl_vec<FrontendId> feIds;
mService->getFrontendIds([&](Result result, const hidl_vec<FrontendId>& frontendIds) {
status = result;
@@ -1207,7 +1154,7 @@
if (feIds.size() == 0) {
ALOGW("[ WARN ] Frontend isn't available");
- return ::testing::AssertionFailure();
+ return failure();
}
FrontendDvbtSettings dvbt{
@@ -1220,10 +1167,10 @@
// Filter Configuration Module
for (int i = 0; i < filterConf.size(); i++) {
if (addFilterToDemux(filterConf[i].type, filterConf[i].setting) ==
- ::testing::AssertionFailure() ||
+ failure() ||
// TODO use a map to save the FMQs/EvenFlags and pass to callback
- getFilterMQDescriptor() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ getFilterMQDescriptor() == failure()) {
+ return failure();
}
filterIdsSize = mUsedFilterIds.size();
mUsedFilterIds.resize(filterIdsSize + 1);
@@ -1232,24 +1179,24 @@
}
// Record Config Module
- if (addRecordToDemux(recordSetting) == ::testing::AssertionFailure() ||
- getRecordMQDescriptor() == ::testing::AssertionFailure()) {
- return ::testing::AssertionFailure();
+ if (addRecordToDemux(recordSetting) == failure() ||
+ getRecordMQDescriptor() == failure()) {
+ return failure();
}
for (int i = 0; i <= filterIdsSize; i++) {
if (mDvr->attachFilter(mFilters[mUsedFilterIds[i]]) != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
}
mDvrCallback->startRecordOutputThread(recordSetting, mRecordMQDescriptor);
status = mDvr->start();
if (status != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
- if (createDemuxWithFrontend(feIds[0], settings) != ::testing::AssertionSuccess()) {
- return ::testing::AssertionFailure();
+ if (setDemuxFrontendDataSource(feIds[0]) != success()) {
+ return failure();
}
// Data Verify Module
@@ -1258,20 +1205,20 @@
// Clean Up Module
for (int i = 0; i <= filterIdsSize; i++) {
if (mFilters[mUsedFilterIds[i]]->stop() != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
}
if (mFrontend->stopTune() != Result::SUCCESS) {
- return ::testing::AssertionFailure();
+ return failure();
}
mUsedFilterIds.clear();
mFilterCallbacks.clear();
mFilters.clear();
return closeDemux();
}*/
-/*============================End Data Flow Tests Implementation============================*/
+/*========================= End Data Flow Tests Implementation =========================*/
-/*============================Start Helper Functions============================*/
+/*=============================== Start Helper Functions ===============================*/
FilterEventType TunerHidlTest::getFilterEventType(DemuxFilterType type) {
FilterEventType eventType = FilterEventType::UNDEFINED;
switch (type.mainType) {
@@ -1318,11 +1265,11 @@
}
return eventType;
}
-/*============================End Helper Functions============================*/
-/******************************** End Test Implementation**********************************/
+/*============================== End Helper Functions ==============================*/
+/***************************** End Test Implementation *****************************/
-/******************************** Start Test Entry**********************************/
-/*============================Start Frontend Tests============================*/
+/******************************** Start Test Entry **********************************/
+/*============================== Start Frontend Tests ==============================*/
TEST_P(TunerHidlTest, getFrontendIds) {
description("Get Frontend ids and verify frontends exist");
ASSERT_TRUE(getFrontendIds());
@@ -1380,9 +1327,9 @@
break;
}
}
-/*============================End Frontend Tests============================*/
+/*=============================== End Frontend Tests ===============================*/
-/*============================Start Demux/Filter Tests============================*/
+/*============================ Start Demux/Filter Tests ============================*/
TEST_P(TunerHidlTest, OpenDemuxWithFrontendDataSource) {
description("Open Demux with a Frontend as its data source.");
ASSERT_TRUE(getFrontendIds());
@@ -1454,8 +1401,12 @@
break;
}
}
-/*============================End Demux/Filter Tests============================*/
+/*============================ End Demux/Filter Tests ============================*/
+/*============================ Start Descrambler Tests ============================*/
+/*
+ * TODO: re-enable the tests after finalizing the test refactoring.
+ */
/*TEST_P(TunerHidlTest, CreateDescrambler) {
description("Create Descrambler");
ASSERT_TRUE(createDescrambler());
@@ -1465,8 +1416,9 @@
description("Close Descrambler");
ASSERT_TRUE(closeDescrambler());
}*/
+/*============================== End Descrambler Tests ==============================*/
-/*============================Start Data Flow Tests============================*/
+/*============================== Start Data Flow Tests ==============================*/
TEST_P(TunerHidlTest, BroadcastDataFlowWithAudioFilterTest) {
description("Open Demux with a Frontend as its data source.");
ASSERT_TRUE(getFrontendIds());
@@ -1583,7 +1535,8 @@
ASSERT_TRUE(recordDataFlowTest(filterConf, recordSetting, goldenOutputFiles));
}*/
-/******************************** End Test Entry**********************************/
+/*============================== End Data Flow Tests ==============================*/
+/******************************** End Test Entry **********************************/
} // namespace
INSTANTIATE_TEST_SUITE_P(