From 7fe0b2bfac08ff077bc9dbf0e42ea6167f8fba82 Mon Sep 17 00:00:00 2001 From: Ram Mohan M Date: Wed, 23 Aug 2017 17:25:00 +0530 Subject: [PATCH] Add portMode configuration test Configuration of port mode of a component is allowed only when the component is in loaded state. When the component is in idle/execute state this operation is denied. This commit adds a test fixture that verifies this. Test: make vts -j99 BUILD_GOOGLE_VTS=true TARGET_PRODUCT=aosp_arm64 \ && vts-tradefed run commandAndExit vts \ --skip-all-system-status-check --primary-abi-only \ --skip-preconditions --module VtsHalMediaOmxV1_0Test -l INFO Bug: 63796949 Merged-In: Ib958c671873fe1d9bb4227ce3e7214f948469f19 Change-Id: Ib958c671873fe1d9bb4227ce3e7214f948469f19 --- .../VtsHalMediaOmxV1_0TargetComponentTest.cpp | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp index 0f29d91f..37d99567 100644 --- a/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp +++ b/media/omx/1.0/vts/functional/component/VtsHalMediaOmxV1_0TargetComponentTest.cpp @@ -556,6 +556,67 @@ TEST_F(ComponentHidlTest, Flush) { kPortIndexInput, kPortIndexOutput); } +// test port mode configuration when the component is in various states +TEST_F(ComponentHidlTest, PortModeConfig) { + description("Test Port Mode Configuration"); + if (disableTest) return; + android::hardware::media::omx::V1_0::Status status; + uint32_t kPortIndexInput = 0, kPortIndexOutput = 1; + Message msg; + + status = setRole(omxNode, gEnv->getRole().c_str()); + ASSERT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK); + OMX_PORT_PARAM_TYPE params; + if (compClass == audio_decoder || compClass == audio_encoder) { + status = getParam(omxNode, OMX_IndexParamAudioInit, ¶ms); + } else { + status = getParam(omxNode, OMX_IndexParamVideoInit, ¶ms); + } + if (status == ::android::hardware::media::omx::V1_0::Status::OK) { + ASSERT_EQ(params.nPorts, 2U); + kPortIndexInput = params.nStartPortNumber; + kPortIndexOutput = kPortIndexInput + 1; + } + + android::Vector iBuffer, oBuffer; + + // set port mode + PortMode portMode[2]; + initPortMode(portMode, isSecure, compClass); + status = omxNode->setPortMode(kPortIndexInput, portMode[0]); + EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK); + status = omxNode->setPortMode(kPortIndexOutput, portMode[1]); + EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK); + + // set state to idle + changeStateLoadedtoIdle(omxNode, observer, &iBuffer, &oBuffer, + kPortIndexInput, kPortIndexOutput, portMode); + // Only Allow Port Mode configuration in loaded state + status = omxNode->setPortMode(kPortIndexInput, portMode[0]); + EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK); + status = omxNode->setPortMode(kPortIndexOutput, portMode[1]); + EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK); + + // set state to executing + changeStateIdletoExecute(omxNode, observer); + // Only Allow Port Mode configuration in loaded state + status = omxNode->setPortMode(kPortIndexInput, portMode[0]); + EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK); + status = omxNode->setPortMode(kPortIndexOutput, portMode[1]); + EXPECT_NE(status, ::android::hardware::media::omx::V1_0::Status::OK); + + // set state to idle + changeStateExecutetoIdle(omxNode, observer, &iBuffer, &oBuffer); + // set state to loaded + changeStateIdletoLoaded(omxNode, observer, &iBuffer, &oBuffer, + kPortIndexInput, kPortIndexOutput); + + status = omxNode->setPortMode(kPortIndexInput, portMode[0]); + EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK); + status = omxNode->setPortMode(kPortIndexOutput, portMode[1]); + EXPECT_EQ(status, ::android::hardware::media::omx::V1_0::Status::OK); +} + // state transitions test TEST_F(ComponentHidlTest, StateTransitions) { description("Test State Transitions Loaded<->Idle<->Execute"); -- 2.11.0