Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14aa8484 authored by Frankie Lizcano's avatar Frankie Lizcano
Browse files

Tuner VTS: Pair Audio and Video Filters

This CL enforces the invariant that vendors provide audio and video
filters in pairs to the Tuner Hal VTS. Thus, the number of each must be
equal. If they do not, the tests are not
ran, and the test suite exits.

Additionally, this CL enforces the assupmtion that vendors will pair
their audio and video filters in the order they are provided, and it
treats the audioFilterIds and videoFilterIds vectors as 2 parallel
structures, where members at the same indicies correspond to a pair.
This is how media filter pairs are chosen when configuring them in the
VTS testing combinations.

Bug: b/182519645

Test: vts-tradefed run vts --module VtsHalTvTunerTargetTest. Manual
    tests with different input configuration files.
Change-Id: I74cc059ed610bb08d0929f250f252a16c9f954a8
parent 799149c8
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -153,7 +153,7 @@ class TunerFilterAidlTest : public testing::TestWithParam<std::string> {
            mService = nullptr;
        }
        ASSERT_NE(mService, nullptr);
        initConfiguration();
        ASSERT_TRUE(initConfiguration());

        mFrontendTests.setService(mService);
        mDemuxTests.setService(mService);
@@ -264,7 +264,7 @@ class TunerRecordAidlTest : public testing::TestWithParam<std::string> {
            mService = nullptr;
        }
        ASSERT_NE(mService, nullptr);
        initConfiguration();
        ASSERT_TRUE(initConfiguration());

        mFrontendTests.setService(mService);
        mDemuxTests.setService(mService);
@@ -313,7 +313,7 @@ class TunerFrontendAidlTest : public testing::TestWithParam<std::string> {
            mService = nullptr;
        }
        ASSERT_NE(mService, nullptr);
        initConfiguration();
        ASSERT_TRUE(initConfiguration());

        mFrontendTests.setService(mService);
    }
@@ -344,7 +344,7 @@ class TunerBroadcastAidlTest : public testing::TestWithParam<std::string> {
            mService = nullptr;
        }
        ASSERT_NE(mService, nullptr);
        initConfiguration();
        ASSERT_TRUE(initConfiguration());

        mFrontendTests.setService(mService);
        mDemuxTests.setService(mService);
+29 −22
Original line number Diff line number Diff line
@@ -131,28 +131,28 @@ inline vector<vector<string>> generateIdCombinations(vector<vector<string>>& ids
/*
 * index 0 - playback dvr
 * index 1 - audio filters
 * index 2 - video filters
 * index 3 - optional section filters
 * index 2 - optional section filters
 */
static inline vector<DvrPlaybackHardwareConnections> generatePlaybackCombinations() {
    vector<DvrPlaybackHardwareConnections> combinations;
    vector<string> sectionFilterIds_optional = sectionFilterIds;
    sectionFilterIds_optional.push_back(emptyHardwareId);
    vector<vector<string>> deviceIds{playbackDvrIds, audioFilterIds, videoFilterIds,
                                     sectionFilterIds_optional};
    vector<vector<string>> deviceIds{playbackDvrIds, audioFilterIds, sectionFilterIds_optional};

    const int dvrIndex = 0;
    const int audioFilterIndex = 1;
    const int videoFilterIndex = 2;
    const int sectionFilterIndex = 3;
    const int sectionFilterIndex = 2;

    auto idCombinations = generateIdCombinations(deviceIds);
    for (auto& combo : idCombinations) {
        DvrPlaybackHardwareConnections mPlayback;
        mPlayback.dvrId = combo[dvrIndex];
        mPlayback.audioFilterId = combo[audioFilterIndex];
        mPlayback.videoFilterId = combo[videoFilterIndex];
        mPlayback.sectionFilterId = combo[sectionFilterIndex];
        const int videoFilterIndex =
                find(audioFilterIds.begin(), audioFilterIds.end(), mPlayback.audioFilterId) -
                audioFilterIds.begin();
        mPlayback.videoFilterId = videoFilterIds[videoFilterIndex];
        combinations.push_back(mPlayback);
    }

@@ -176,17 +176,15 @@ static inline vector<DvrPlaybackHardwareConnections> generatePlaybackConfigs() {
/*
 * index 0 - frontends
 * index 1 - audio filters
 * index 2 - video filters
 * index 3 - lnbs
 * index 2 - lnbs
 */
static inline vector<LnbLiveHardwareConnections> generateLnbLiveCombinations() {
    vector<LnbLiveHardwareConnections> combinations;
    vector<vector<string>> deviceIds{frontendIds, audioFilterIds, videoFilterIds, lnbIds};
    vector<vector<string>> deviceIds{frontendIds, audioFilterIds, lnbIds};

    const int frontendIndex = 0;
    const int audioFilterIndex = 1;
    const int videoFilterIndex = 2;
    const int lnbIndex = 3;
    const int lnbIndex = 2;

    // TODO: Find a better way to vary diseqcMsgs, if at all
    auto idCombinations = generateIdCombinations(deviceIds);
@@ -198,7 +196,10 @@ static inline vector<LnbLiveHardwareConnections> generateLnbLiveCombinations() {
            LnbLiveHardwareConnections mLnbLive;
            mLnbLive.frontendId = feId;
            mLnbLive.audioFilterId = combo[audioFilterIndex];
            mLnbLive.videoFilterId = combo[videoFilterIndex];
            const int videoFilterIndex =
                    find(audioFilterIds.begin(), audioFilterIds.end(), mLnbLive.audioFilterId) -
                    audioFilterIds.begin();
            mLnbLive.videoFilterId = videoFilterIds[videoFilterIndex];
            mLnbLive.lnbId = combo[lnbIndex];
            mLnbLive.diseqcMsgs = diseqcMsgs;
            combinations.push_back(mLnbLive);
@@ -301,9 +302,8 @@ static inline vector<LnbRecordHardwareConnections> generateLnbRecordConfiguratio
 * index 0 - decramblers
 * index 1 - frontends
 * index 2 - audio filters
 * index 3 - video filters
 * index 4 - Dvr SW Fe Connections
 * index 5 - DVR Source Connections
 * index 3 - Dvr SW Fe Connections
 * index 4 - DVR Source Connections
 */
static inline vector<DescramblingHardwareConnections> generateDescramblingCombinations() {
    vector<DescramblingHardwareConnections> combinations;
@@ -320,12 +320,11 @@ static inline vector<DescramblingHardwareConnections> generateDescramblingCombin
    const int descramblerIndex = 0;
    const int frontendIndex = 1;
    const int audioFilterIndex = 2;
    const int videoFilterIndex = 3;
    const int dvrFeIdIndex = 4;
    const int dvrSourceIdIndex = 5;
    const int dvrFeIdIndex = 3;
    const int dvrSourceIdIndex = 4;

    vector<vector<string>> deviceIds{descramblerIds, mfrontendIds, audioFilterIds,
                                     videoFilterIds, mDvrFeConnectionIds, mDvrSourceConnectionIds};
                                     mDvrFeConnectionIds, mDvrSourceConnectionIds};
    auto idCombinations = generateIdCombinations(deviceIds);
    for (auto& combo : idCombinations) {
        DescramblingHardwareConnections mDescrambling;
@@ -353,7 +352,10 @@ static inline vector<DescramblingHardwareConnections> generateDescramblingCombin
        }
        mDescrambling.frontendId = feId;
        mDescrambling.audioFilterId = combo[audioFilterIndex];
        mDescrambling.videoFilterId = combo[videoFilterIndex];
        const int videoFilterIndex =
                find(audioFilterIds.begin(), audioFilterIds.end(), mDescrambling.audioFilterId) -
                audioFilterIds.begin();
        mDescrambling.videoFilterId = videoFilterIds[videoFilterIndex];
        mDescrambling.dvrSoftwareFeId = dvrSwFeId;
        mDescrambling.dvrSourceId = dvrSourceId;
        mDescrambling.descramblerId = combo[descramblerIndex];
@@ -701,6 +703,11 @@ inline bool validateConnections() {
        return false;
    }

    if (audioFilterIds.size() != videoFilterIds.size()) {
        ALOGW("[vts config] the number of audio and video filters should be equal");
        return false;
    }

    bool timeFilterIsValid =
            timeFilter.support ? timeFilterMap.find(timeFilter.timeFilterId) != timeFilterMap.end()
                               : true;