From 1693587fadcce5942730f2baf393773b9587adb4 Mon Sep 17 00:00:00 2001 From: Henry Fang Date: Tue, 16 Feb 2021 13:55:15 -0800 Subject: [PATCH] handle multiple cas plugins. some of them support descrambler, some of them don't bug: 176799453 Test: atest VtsHalCasV1_[#]TargetTest Change-Id: Ifec298486b413129601787755bbe8e7bbea6cbf3 --- .../functional/VtsHalCasV1_0TargetTest.cpp | 34 +++++++++++-------- .../functional/VtsHalCasV1_1TargetTest.cpp | 25 ++++++++------ .../functional/VtsHalCasV1_2TargetTest.cpp | 20 ++++++----- 3 files changed, 47 insertions(+), 32 deletions(-) diff --git a/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp b/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp index 65fe34d3cd..42af4807a5 100644 --- a/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp +++ b/cas/1.0/vts/functional/VtsHalCasV1_0TargetTest.cpp @@ -256,12 +256,19 @@ class MediaCasHidlTest : public testing::TestWithParam { ::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) { auto status = mService->isSystemIdSupported(caSystemId); + bool skipDescrambler = false; if (!status.isOk() || !status) { return ::testing::AssertionFailure(); } status = mService->isDescramblerSupported(caSystemId); if (!status.isOk() || !status) { - return ::testing::AssertionFailure(); + if (mIsTestDescrambler) { + return ::testing::AssertionFailure(); + } else { + ALOGI("Skip Descrambler test since it's not required in cas@1.2."); + mDescramblerBase = nullptr; + skipDescrambler = true; + } } mCasListener = new MediaCasListener(); @@ -274,16 +281,15 @@ class MediaCasHidlTest : public testing::TestWithParam { return ::testing::AssertionFailure(); } + if (skipDescrambler) { + return ::testing::AssertionSuccess(); + } + auto descramblerStatus = mService->createDescrambler(caSystemId); if (!descramblerStatus.isOk()) { - if (mIsTestDescrambler) { - return ::testing::AssertionFailure(); - } else { - ALOGI("Skip Descrambler test since it's not required in cas@1.2."); - return ::testing::AssertionSuccess(); - } + return ::testing::AssertionFailure(); } - mIsTestDescrambler = true; + mDescramblerBase = descramblerStatus; return ::testing::AssertionResult(mDescramblerBase != nullptr); } @@ -506,7 +512,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApis) { returnStatus = mMediaCas->setSessionPrivateData(streamSessionId, hidlPvtData); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { returnStatus = mDescramblerBase->setMediaCasSession(sessionId); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); @@ -556,7 +562,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApis) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc")); sp descrambler; @@ -606,7 +612,7 @@ TEST_P(MediaCasHidlTest, TestClearKeySessionClosedAfterRelease) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { returnStatus = mDescramblerBase->setMediaCasSession(sessionId); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::ERROR_CAS_SESSION_NOT_OPENED, returnStatus); @@ -672,7 +678,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyErrors) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::ERROR_CAS_UNKNOWN, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { /* * Test MediaDescrambler error codes */ @@ -720,7 +726,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyOobFails) { std::vector sessionId; ASSERT_TRUE(openCasSession(&sessionId)); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { returnStatus = mDescramblerBase->setMediaCasSession(sessionId); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); @@ -732,7 +738,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyOobFails) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { sp descrambler = IDescrambler::castFrom(mDescramblerBase); ASSERT_NE(nullptr, descrambler.get()); diff --git a/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp b/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp index 73998c0169..664be60bcd 100644 --- a/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp +++ b/cas/1.1/vts/functional/VtsHalCasV1_1TargetTest.cpp @@ -297,12 +297,19 @@ class MediaCasHidlTest : public testing::TestWithParam { ::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) { auto status = mService->isSystemIdSupported(caSystemId); + bool skipDescrambler = false; if (!status.isOk() || !status) { return ::testing::AssertionFailure(); } status = mService->isDescramblerSupported(caSystemId); if (!status.isOk() || !status) { - return ::testing::AssertionFailure(); + if (mIsTestDescrambler) { + return ::testing::AssertionFailure(); + } else { + ALOGI("Skip Descrambler test since it's not required in cas@1.2."); + mDescramblerBase = nullptr; + skipDescrambler = true; + } } mCasListener = new MediaCasListener(); @@ -315,16 +322,14 @@ class MediaCasHidlTest : public testing::TestWithParam { return ::testing::AssertionFailure(); } + if (skipDescrambler) { + return ::testing::AssertionSuccess(); + } + auto descramblerStatus = mService->createDescrambler(caSystemId); if (!descramblerStatus.isOk()) { - if (mIsTestDescrambler) { - return ::testing::AssertionFailure(); - } else { - ALOGI("Skip Descrambler test since it's not required in cas@1.2."); - return ::testing::AssertionSuccess(); - } + return ::testing::AssertionFailure(); } - mIsTestDescrambler = true; mDescramblerBase = descramblerStatus; return ::testing::AssertionResult(mDescramblerBase != nullptr); @@ -481,7 +486,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { returnStatus = mDescramblerBase->setMediaCasSession(sessionId); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); @@ -533,7 +538,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc")); sp descrambler; diff --git a/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp b/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp index a22bbd55d3..354b9768ac 100644 --- a/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp +++ b/cas/1.2/vts/functional/VtsHalCasV1_2TargetTest.cpp @@ -311,7 +311,6 @@ class MediaCasHidlTest : public testing::TestWithParam { sp mMediaCas; sp mDescramblerBase; sp mCasListener; - bool mIsTestDescrambler = false; typedef struct _OobInputTestParams { const SubSample* subSamples; uint32_t numSubSamples; @@ -336,12 +335,15 @@ class MediaCasHidlTest : public testing::TestWithParam { ::testing::AssertionResult MediaCasHidlTest::createCasPlugin(int32_t caSystemId) { auto status = mService->isSystemIdSupported(caSystemId); + bool skipDescrambler = false; if (!status.isOk() || !status) { return ::testing::AssertionFailure(); } status = mService->isDescramblerSupported(caSystemId); if (!status.isOk() || !status) { - return ::testing::AssertionFailure(); + ALOGI("Skip Descrambler test since it's not required in cas@1.2."); + mDescramblerBase = nullptr; + skipDescrambler = true; } mCasListener = new MediaCasListener(); @@ -354,12 +356,14 @@ class MediaCasHidlTest : public testing::TestWithParam { return ::testing::AssertionFailure(); } - auto descramblerStatus = mService->createDescrambler(caSystemId); - if (!descramblerStatus.isOk()) { - ALOGI("Skip Descrambler test since it's not required in cas@1.2."); + if (skipDescrambler) { return ::testing::AssertionSuccess(); } - mIsTestDescrambler = true; + + auto descramblerStatus = mService->createDescrambler(caSystemId); + if (!descramblerStatus.isOk()) { + return ::testing::AssertionFailure(); + } mDescramblerBase = descramblerStatus; return ::testing::AssertionResult(mDescramblerBase != nullptr); @@ -516,7 +520,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { returnStatus = mDescramblerBase->setMediaCasSession(sessionId); EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); @@ -571,7 +575,7 @@ TEST_P(MediaCasHidlTest, TestClearKeyApisWithSession) { EXPECT_TRUE(returnStatus.isOk()); EXPECT_EQ(Status::OK, returnStatus); - if (mIsTestDescrambler) { + if (mDescramblerBase != nullptr) { EXPECT_FALSE(mDescramblerBase->requiresSecureDecoderComponent("video/avc")); sp descrambler;