From 7a19139503a3204c3ddc1a3a0254d1932d027ef8 Mon Sep 17 00:00:00 2001 From: sadiqsada Date: Tue, 7 Nov 2023 16:09:09 -0800 Subject: [PATCH] Update VTS cases for IPTV tuning IPTV tuning relies on a socket streaming TS data. This CL uses the interface defined in IpStreamer to test whether TS data is availble on a socket, and decides to send LOCKED event based on the result. Bug: 288170590 Test: atest VtsHalTvTunerTargetTest Change-Id: I79c933458f01f18d35e85c53f67f3c1d3d21dbce --- tv/tuner/aidl/vts/functional/Android.bp | 1 + .../aidl/vts/functional/FrontendTests.cpp | 7 +++ tv/tuner/aidl/vts/functional/FrontendTests.h | 1 + .../functional/VtsHalTvTunerTargetTest.cpp | 60 +++++++++++++++++++ 4 files changed, 69 insertions(+) diff --git a/tv/tuner/aidl/vts/functional/Android.bp b/tv/tuner/aidl/vts/functional/Android.bp index 513007b4a8..09e63fc56b 100644 --- a/tv/tuner/aidl/vts/functional/Android.bp +++ b/tv/tuner/aidl/vts/functional/Android.bp @@ -37,6 +37,7 @@ cc_test { "FrontendTests.cpp", "LnbTests.cpp", "VtsHalTvTunerTargetTest.cpp", + "utils/IpStreamer.cpp", ], generated_headers: [ "tuner_testing_dynamic_configuration_V1_0_enums", diff --git a/tv/tuner/aidl/vts/functional/FrontendTests.cpp b/tv/tuner/aidl/vts/functional/FrontendTests.cpp index b0f614ed9b..b7b01859b2 100644 --- a/tv/tuner/aidl/vts/functional/FrontendTests.cpp +++ b/tv/tuner/aidl/vts/functional/FrontendTests.cpp @@ -475,6 +475,10 @@ AssertionResult FrontendTests::tuneFrontend(FrontendConfig config, bool testWith << "FrontendConfig does not match the frontend info of the given id."; mIsSoftwareFe = config.isSoftwareFe; + std::unique_ptr ipThread = std::make_unique(); + if (config.type == FrontendType::IPTV) { + ipThread->startIpStream(); + } if (mIsSoftwareFe && testWithDemux) { if (getDvrTests()->openDvrInDemux(mDvrConfig.type, mDvrConfig.bufferSize) != success()) { ALOGW("[vts] Software frontend dvr configure openDvr failed."); @@ -494,6 +498,9 @@ AssertionResult FrontendTests::tuneFrontend(FrontendConfig config, bool testWith getDvrTests()->startDvrPlayback(); } mFrontendCallback->tuneTestOnLock(mFrontend, config.settings); + if (config.type == FrontendType::IPTV) { + ipThread->stopIpStream(); + } return AssertionResult(true); } diff --git a/tv/tuner/aidl/vts/functional/FrontendTests.h b/tv/tuner/aidl/vts/functional/FrontendTests.h index 1746c8efcc..9c2ffc07d4 100644 --- a/tv/tuner/aidl/vts/functional/FrontendTests.h +++ b/tv/tuner/aidl/vts/functional/FrontendTests.h @@ -27,6 +27,7 @@ #include "DvrTests.h" #include "VtsHalTvTunerTestConfigurations.h" +#include "utils/IpStreamer.h" #define WAIT_TIMEOUT 3000000000 #define INVALID_ID -1 diff --git a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp index 3664b6cfdf..1b507e1f88 100644 --- a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp +++ b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp @@ -683,6 +683,10 @@ TEST_P(TunerDemuxAidlTest, openDemux) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { live = configuration; @@ -779,6 +783,10 @@ TEST_P(TunerFilterAidlTest, StartFilterInDemux) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } // TODO use parameterized tests auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { @@ -793,6 +801,10 @@ TEST_P(TunerFilterAidlTest, ConfigIpFilterInDemuxWithCid) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { live = configuration; @@ -808,6 +820,10 @@ TEST_P(TunerFilterAidlTest, ReconfigFilterToReceiveStartId) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } // TODO use parameterized tests auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { @@ -1111,6 +1127,10 @@ TEST_P(TunerRecordAidlTest, RecordDataFlowWithTsRecordFilterTest) { if (!record.support) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto record_configs = generateRecordConfigurations(); for (auto& configuration : record_configs) { record = configuration; @@ -1125,6 +1145,10 @@ TEST_P(TunerRecordAidlTest, AttachFiltersToRecordTest) { if (!record.support) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto record_configs = generateRecordConfigurations(); for (auto& configuration : record_configs) { record = configuration; @@ -1157,6 +1181,10 @@ TEST_P(TunerRecordAidlTest, SetStatusCheckIntervalHintToRecordTest) { if (!record.support) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto record_configs = generateRecordConfigurations(); for (auto& configuration : record_configs) { record = configuration; @@ -1194,6 +1222,10 @@ TEST_P(TunerFrontendAidlTest, BlindScanFrontend) { if (!scan.hasFrontendConnection) { return; } + // Blind scan is not applicable for IPTV frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } vector scan_configs = generateScanConfigurations(); for (auto& configuration : scan_configs) { scan = configuration; @@ -1218,6 +1250,10 @@ TEST_P(TunerFrontendAidlTest, BlindScanFrontendWithEndFrequency) { if (!scan.hasFrontendConnection) { return; } + // Blind scan is not application for IPTV frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } vector scan_configs = generateScanConfigurations(); for (auto& configuration : scan_configs) { scan = configuration; @@ -1242,6 +1278,10 @@ TEST_P(TunerFrontendAidlTest, LinkToCiCam) { TEST_P(TunerFrontendAidlTest, getHardwareInfo) { description("Test Frontend get hardware info"); + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } if (!live.hasFrontendConnection) { return; } @@ -1289,6 +1329,10 @@ TEST_P(TunerBroadcastAidlTest, BroadcastDataFlowAudioFilterTest) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { live = configuration; @@ -1316,6 +1360,10 @@ TEST_P(TunerBroadcastAidlTest, IonBufferTest) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { live = configuration; @@ -1345,6 +1393,10 @@ TEST_P(TunerBroadcastAidlTest, MediaFilterWithSharedMemoryHandle) { if (!live.hasFrontendConnection) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } auto live_configs = generateLiveConfigurations(); for (auto& configuration : live_configs) { live = configuration; @@ -1358,6 +1410,10 @@ TEST_P(TunerDescramblerAidlTest, CreateDescrambler) { if (!descrambling.support) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } vector descrambling_configs = generateDescramblingConfigurations(); if (descrambling_configs.empty()) { @@ -1394,6 +1450,10 @@ TEST_P(TunerDescramblerAidlTest, ScrambledBroadcastDataFlowMediaFiltersTest) { if (!descrambling.support) { return; } + // Do not execute tests for IPTV Frontend + if (frontendMap[live.frontendId].type == FrontendType::IPTV) { + return; + } vector descrambling_configs = generateDescramblingConfigurations(); if (descrambling_configs.empty()) {