Loading audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ using aidl::android::media::audio::common::AudioDeviceDescription; using aidl::android::media::audio::common::AudioDeviceType; using aidl::android::media::audio::common::AudioDualMonoMode; using aidl::android::media::audio::common::AudioFormatType; using aidl::android::media::audio::common::AudioGainConfig; using aidl::android::media::audio::common::AudioInputFlags; using aidl::android::media::audio::common::AudioIoFlags; using aidl::android::media::audio::common::AudioLatencyMode; Loading Loading @@ -450,6 +451,7 @@ class AudioCoreModuleBase { // This is implemented by the 'StreamFixture' utility class. static constexpr int kNegativeTestBufferSizeFrames = 256; static constexpr int kDefaultLargeBufferSizeFrames = 48000; static constexpr int32_t kAidlVersion3 = 3; void SetUpImpl(const std::string& moduleName, bool setUpDebug = true) { ASSERT_NO_FATAL_FAILURE(ConnectToService(moduleName, setUpDebug)); Loading Loading @@ -478,6 +480,7 @@ class AudioCoreModuleBase { if (setUpDebug) { ASSERT_NO_FATAL_FAILURE(SetUpDebug()); } ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk()); } void RestartService() { Loading @@ -490,6 +493,7 @@ class AudioCoreModuleBase { if (setUpDebug) { ASSERT_NO_FATAL_FAILURE(SetUpDebug()); } ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk()); } void SetUpDebug() { Loading Loading @@ -577,6 +581,7 @@ class AudioCoreModuleBase { std::unique_ptr<WithDebugFlags> debug; std::vector<AudioPort> initialPorts; std::vector<AudioRoute> initialRoutes; int32_t aidlVersion; }; class WithDevicePortConnectedState { Loading Loading @@ -1821,6 +1826,46 @@ TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortConfigId) { } } TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortAudioGain) { if (aidlVersion < kAidlVersion3) { GTEST_SKIP() << "Skip for audio HAL version lower than " << kAidlVersion3; } std::vector<AudioPort> ports; ASSERT_IS_OK(module->getAudioPorts(&ports)); bool atLeastOnePortWithNonemptyGain = false; for (const auto port : ports) { AudioPortConfig portConfig; portConfig.portId = port.id; if (port.gains.empty()) { continue; } atLeastOnePortWithNonemptyGain = true; int index = 0; ASSERT_NE(0, port.gains[index].stepValue) << "Invalid audio port config gain step 0"; portConfig.gain->index = index; AudioGainConfig invalidGainConfig; int invalidGain = port.gains[index].maxValue + port.gains[index].stepValue; invalidGainConfig.values.push_back(invalidGain); portConfig.gain.emplace(invalidGainConfig); bool applied = true; AudioPortConfig suggestedConfig; EXPECT_STATUS(EX_ILLEGAL_ARGUMENT, module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) << "invalid port gain " << invalidGain << " lower than min gain"; invalidGain = port.gains[index].minValue - port.gains[index].stepValue; invalidGainConfig.values[0] = invalidGain; portConfig.gain.emplace(invalidGainConfig); EXPECT_STATUS(EX_ILLEGAL_ARGUMENT, module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) << "invalid port gain " << invalidGain << "higher than max gain"; } if (!atLeastOnePortWithNonemptyGain) { GTEST_SKIP() << "No audio port contains non-empty gain configuration"; } } TEST_P(AudioCoreModule, TryConnectMissingDevice) { // Limit checks to connection types that are known to be detectable by HAL implementations. static const std::set<std::string> kCheckedConnectionTypes{ Loading Loading
audio/aidl/vts/VtsHalAudioCoreModuleTargetTest.cpp +45 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ using aidl::android::media::audio::common::AudioDeviceDescription; using aidl::android::media::audio::common::AudioDeviceType; using aidl::android::media::audio::common::AudioDualMonoMode; using aidl::android::media::audio::common::AudioFormatType; using aidl::android::media::audio::common::AudioGainConfig; using aidl::android::media::audio::common::AudioInputFlags; using aidl::android::media::audio::common::AudioIoFlags; using aidl::android::media::audio::common::AudioLatencyMode; Loading Loading @@ -450,6 +451,7 @@ class AudioCoreModuleBase { // This is implemented by the 'StreamFixture' utility class. static constexpr int kNegativeTestBufferSizeFrames = 256; static constexpr int kDefaultLargeBufferSizeFrames = 48000; static constexpr int32_t kAidlVersion3 = 3; void SetUpImpl(const std::string& moduleName, bool setUpDebug = true) { ASSERT_NO_FATAL_FAILURE(ConnectToService(moduleName, setUpDebug)); Loading Loading @@ -478,6 +480,7 @@ class AudioCoreModuleBase { if (setUpDebug) { ASSERT_NO_FATAL_FAILURE(SetUpDebug()); } ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk()); } void RestartService() { Loading @@ -490,6 +493,7 @@ class AudioCoreModuleBase { if (setUpDebug) { ASSERT_NO_FATAL_FAILURE(SetUpDebug()); } ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk()); } void SetUpDebug() { Loading Loading @@ -577,6 +581,7 @@ class AudioCoreModuleBase { std::unique_ptr<WithDebugFlags> debug; std::vector<AudioPort> initialPorts; std::vector<AudioRoute> initialRoutes; int32_t aidlVersion; }; class WithDevicePortConnectedState { Loading Loading @@ -1821,6 +1826,46 @@ TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortConfigId) { } } TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortAudioGain) { if (aidlVersion < kAidlVersion3) { GTEST_SKIP() << "Skip for audio HAL version lower than " << kAidlVersion3; } std::vector<AudioPort> ports; ASSERT_IS_OK(module->getAudioPorts(&ports)); bool atLeastOnePortWithNonemptyGain = false; for (const auto port : ports) { AudioPortConfig portConfig; portConfig.portId = port.id; if (port.gains.empty()) { continue; } atLeastOnePortWithNonemptyGain = true; int index = 0; ASSERT_NE(0, port.gains[index].stepValue) << "Invalid audio port config gain step 0"; portConfig.gain->index = index; AudioGainConfig invalidGainConfig; int invalidGain = port.gains[index].maxValue + port.gains[index].stepValue; invalidGainConfig.values.push_back(invalidGain); portConfig.gain.emplace(invalidGainConfig); bool applied = true; AudioPortConfig suggestedConfig; EXPECT_STATUS(EX_ILLEGAL_ARGUMENT, module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) << "invalid port gain " << invalidGain << " lower than min gain"; invalidGain = port.gains[index].minValue - port.gains[index].stepValue; invalidGainConfig.values[0] = invalidGain; portConfig.gain.emplace(invalidGainConfig); EXPECT_STATUS(EX_ILLEGAL_ARGUMENT, module->setAudioPortConfig(portConfig, &suggestedConfig, &applied)) << "invalid port gain " << invalidGain << "higher than max gain"; } if (!atLeastOnePortWithNonemptyGain) { GTEST_SKIP() << "No audio port contains non-empty gain configuration"; } } TEST_P(AudioCoreModule, TryConnectMissingDevice) { // Limit checks to connection types that are known to be detectable by HAL implementations. static const std::set<std::string> kCheckedConnectionTypes{ Loading