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
diff --git a/tv/tuner/aidl/vts/functional/Android.bp b/tv/tuner/aidl/vts/functional/Android.bp
index 513007b..09e63fc 100644
--- a/tv/tuner/aidl/vts/functional/Android.bp
+++ b/tv/tuner/aidl/vts/functional/Android.bp
@@ -37,6 +37,7 @@
"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 b0f614e..b7b0185 100644
--- a/tv/tuner/aidl/vts/functional/FrontendTests.cpp
+++ b/tv/tuner/aidl/vts/functional/FrontendTests.cpp
@@ -475,6 +475,10 @@
<< "FrontendConfig does not match the frontend info of the given id.";
mIsSoftwareFe = config.isSoftwareFe;
+ std::unique_ptr<IpStreamer> ipThread = std::make_unique<IpStreamer>();
+ 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 @@
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 1746c8e..9c2ffc0 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 3664b6c..1b507e1 100644
--- a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp
+++ b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTargetTest.cpp
@@ -683,6 +683,10 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
if (!scan.hasFrontendConnection) {
return;
}
+ // Blind scan is not applicable for IPTV frontend
+ if (frontendMap[live.frontendId].type == FrontendType::IPTV) {
+ return;
+ }
vector<ScanHardwareConnections> scan_configs = generateScanConfigurations();
for (auto& configuration : scan_configs) {
scan = configuration;
@@ -1218,6 +1250,10 @@
if (!scan.hasFrontendConnection) {
return;
}
+ // Blind scan is not application for IPTV frontend
+ if (frontendMap[live.frontendId].type == FrontendType::IPTV) {
+ return;
+ }
vector<ScanHardwareConnections> scan_configs = generateScanConfigurations();
for (auto& configuration : scan_configs) {
scan = configuration;
@@ -1242,6 +1278,10 @@
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 @@
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 @@
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 @@
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 @@
if (!descrambling.support) {
return;
}
+ // Do not execute tests for IPTV Frontend
+ if (frontendMap[live.frontendId].type == FrontendType::IPTV) {
+ return;
+ }
vector<DescramblingHardwareConnections> descrambling_configs =
generateDescramblingConfigurations();
if (descrambling_configs.empty()) {
@@ -1394,6 +1450,10 @@
if (!descrambling.support) {
return;
}
+ // Do not execute tests for IPTV Frontend
+ if (frontendMap[live.frontendId].type == FrontendType::IPTV) {
+ return;
+ }
vector<DescramblingHardwareConnections> descrambling_configs =
generateDescramblingConfigurations();
if (descrambling_configs.empty()) {