/* * Copyright 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include #include "DemuxTests.h" #include "DescramblerTests.h" #include "DvrTests.h" #include "FrontendTests.h" #include "LnbTests.h" using android::sp; namespace { bool initConfiguration() { TunerTestingConfigAidlReader1_0::setConfigFilePath(configFilePath); if (!TunerTestingConfigAidlReader1_0::checkConfigFileExists()) { return false; } initFrontendConfig(); initFilterConfig(); initDvrConfig(); connectHardwaresToTestCases(); if (!validateConnections()) { ALOGW("[vts] failed to validate connections."); return false; } return true; } static AssertionResult success() { return ::testing::AssertionSuccess(); } AssertionResult filterDataOutputTestBase(FilterTests& tests) { // Data Verify Module std::map>::iterator it; std::map> filterCallbacks = tests.getFilterCallbacks(); for (it = filterCallbacks.begin(); it != filterCallbacks.end(); it++) { it->second->testFilterDataOutput(); } return success(); } class TunerLnbAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); ASSERT_TRUE(initConfiguration()); mLnbTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } std::shared_ptr mService; LnbTests mLnbTests; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerLnbAidlTest); class TunerDemuxAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); ASSERT_TRUE(initConfiguration()); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mFilterTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } std::shared_ptr mService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerDemuxAidlTest); class TunerFilterAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); initConfiguration(); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mFilterTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } void configSingleFilterInDemuxTest(FilterConfig filterConf, FrontendConfig frontendConf); void reconfigSingleFilterInDemuxTest(FilterConfig filterConf, FilterConfig filterReconf, FrontendConfig frontendConf); void testTimeFilter(TimeFilterConfig filterConf); void testDelayHint(const FilterConfig& filterConf); DemuxFilterType getLinkageFilterType(int bit) { DemuxFilterType type; type.mainType = static_cast(1 << bit); switch (type.mainType) { case DemuxFilterMainType::TS: type.subType.set( DemuxTsFilterType::UNDEFINED); break; case DemuxFilterMainType::MMTP: type.subType.set( DemuxMmtpFilterType::UNDEFINED); break; case DemuxFilterMainType::IP: type.subType.set( DemuxIpFilterType::UNDEFINED); break; case DemuxFilterMainType::TLV: type.subType.set( DemuxTlvFilterType::UNDEFINED); break; case DemuxFilterMainType::ALP: type.subType.set( DemuxAlpFilterType::UNDEFINED); break; default: break; } return type; } std::shared_ptr mService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerFilterAidlTest); class TunerPlaybackAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); ASSERT_TRUE(initConfiguration()); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mFilterTests.setService(mService); mDvrTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } std::shared_ptr mService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; DvrTests mDvrTests; AssertionResult filterDataOutputTest(); void playbackSingleFilterTest(FilterConfig filterConf, DvrConfig dvrConf); }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerPlaybackAidlTest); class TunerRecordAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); initConfiguration(); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mFilterTests.setService(mService); mDvrTests.setService(mService); mLnbTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } void attachSingleFilterToRecordDvrTest(FilterConfig filterConf, FrontendConfig frontendConf, DvrConfig dvrConf); void recordSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf, DvrConfig dvrConf, LnbConfig lnbConf); void recordSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf, DvrConfig dvrConf); std::shared_ptr mService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; DvrTests mDvrTests; LnbTests mLnbTests; private: int32_t* mLnbId = nullptr; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerRecordAidlTest); class TunerFrontendAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); initConfiguration(); mFrontendTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } std::shared_ptr mService; FrontendTests mFrontendTests; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerFrontendAidlTest); class TunerBroadcastAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } ASSERT_NE(mService, nullptr); initConfiguration(); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mFilterTests.setService(mService); mLnbTests.setService(mService); mDvrTests.setService(mService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } std::shared_ptr mService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; LnbTests mLnbTests; DvrTests mDvrTests; AssertionResult filterDataOutputTest(); void broadcastSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf); void broadcastSingleFilterTestWithLnb(FilterConfig filterConf, FrontendConfig frontendConf, LnbConfig lnbConf); void mediaFilterUsingSharedMemoryTest(FilterConfig filterConf, FrontendConfig frontendConf); private: int32_t* mLnbId = nullptr; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerBroadcastAidlTest); class TunerDescramblerAidlTest : public testing::TestWithParam { public: virtual void SetUp() override { if (AServiceManager_isDeclared(GetParam().c_str())) { ::ndk::SpAIBinder binder(AServiceManager_waitForService(GetParam().c_str())); mService = ITuner::fromBinder(binder); } else { mService = nullptr; } mCasService = IMediaCasService::getService(); ASSERT_NE(mService, nullptr); ASSERT_NE(mCasService, nullptr); ASSERT_TRUE(initConfiguration()); mFrontendTests.setService(mService); mDemuxTests.setService(mService); mDvrTests.setService(mService); mDescramblerTests.setService(mService); mDescramblerTests.setCasService(mCasService); } protected: static void description(const std::string& description) { RecordProperty("description", description); } void scrambledBroadcastTest(set mediaFilterConfs, FrontendConfig frontendConf, DescramblerConfig descConfig); AssertionResult filterDataOutputTest(); std::shared_ptr mService; android::sp mCasService; FrontendTests mFrontendTests; DemuxTests mDemuxTests; FilterTests mFilterTests; DescramblerTests mDescramblerTests; DvrTests mDvrTests; }; GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(TunerDescramblerAidlTest); } // namespace