From b487a859939ca9a3c3c1118cb173d048f03e7432 Mon Sep 17 00:00:00 2001 From: Bao Do Date: Mon, 25 Dec 2023 10:12:09 +0800 Subject: [PATCH] Fix test run for GSI GSI used mixed testing procedures, making some HFP session and LE Audio related functions unavailable when testing with the latest VTS. This fix enable HAL version checking when testing. Bug: 315338603 Test: atest VtsHalBluetoothAudioTargetTest Change-Id: Idb0a780a67857c76c93b13f7b3a64436f6fc647f --- .../vts/VtsHalBluetoothAudioTargetTest.cpp | 149 ++++++++++++++---- 1 file changed, 116 insertions(+), 33 deletions(-) diff --git a/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp b/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp index b598044535..85bc48ad8d 100644 --- a/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp +++ b/bluetooth/audio/aidl/vts/VtsHalBluetoothAudioTargetTest.cpp @@ -120,6 +120,16 @@ static constexpr ChannelMode a2dp_channel_modes[] = { ChannelMode::UNKNOWN, ChannelMode::MONO, ChannelMode::STEREO}; static std::vector latency_modes = {LatencyMode::FREE}; +enum class BluetoothAudioHalVersion : int32_t { + VERSION_UNAVAILABLE = 0, + VERSION_2_0, + VERSION_2_1, + VERSION_AIDL_V1, + VERSION_AIDL_V2, + VERSION_AIDL_V3, + VERSION_AIDL_V4, +}; + // Some valid configs for HFP PCM configuration (software sessions) static constexpr int32_t hfp_sample_rates_[] = {8000, 16000, 32000}; static constexpr int8_t hfp_bits_per_samples_[] = {16}; @@ -221,7 +231,6 @@ class BluetoothAudioProviderFactoryAidl temp_provider_info_ = std::nullopt; auto aidl_reval = provider_factory_->getProviderInfo(session_type, &temp_provider_info_); - ASSERT_TRUE(aidl_reval.isOk()); } void GetProviderCapabilitiesHelper(const SessionType& session_type) { @@ -623,9 +632,38 @@ class BluetoothAudioProviderFactoryAidl SessionType::LE_AUDIO_BROADCAST_HARDWARE_OFFLOAD_ENCODING_DATAPATH, SessionType::A2DP_SOFTWARE_DECODING_DATAPATH, SessionType::A2DP_HARDWARE_OFFLOAD_DECODING_DATAPATH, + }; + + static constexpr SessionType kAndroidVSessionType[] = { SessionType::HFP_SOFTWARE_ENCODING_DATAPATH, SessionType::HFP_SOFTWARE_DECODING_DATAPATH, }; + + BluetoothAudioHalVersion GetProviderFactoryInterfaceVersion() { + int32_t aidl_version = 0; + if (provider_factory_ == nullptr) { + return BluetoothAudioHalVersion::VERSION_UNAVAILABLE; + } + + auto aidl_retval = provider_factory_->getInterfaceVersion(&aidl_version); + if (!aidl_retval.isOk()) { + return BluetoothAudioHalVersion::VERSION_UNAVAILABLE; + } + switch (aidl_version) { + case 1: + return BluetoothAudioHalVersion::VERSION_AIDL_V1; + case 2: + return BluetoothAudioHalVersion::VERSION_AIDL_V2; + case 3: + return BluetoothAudioHalVersion::VERSION_AIDL_V3; + case 4: + return BluetoothAudioHalVersion::VERSION_AIDL_V4; + default: + return BluetoothAudioHalVersion::VERSION_UNAVAILABLE; + } + + return BluetoothAudioHalVersion::VERSION_UNAVAILABLE; + } }; /** @@ -647,6 +685,15 @@ TEST_P(BluetoothAudioProviderFactoryAidl, EXPECT_TRUE(temp_provider_capabilities_.empty() || audio_provider_ != nullptr); } + if (GetProviderFactoryInterfaceVersion() >= + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + for (auto session_type : kAndroidVSessionType) { + GetProviderCapabilitiesHelper(session_type); + OpenProviderHelper(session_type); + EXPECT_TRUE(temp_provider_capabilities_.empty() || + audio_provider_ != nullptr); + } + } } /** @@ -1464,8 +1511,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingSoftwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_SOFTWARE_ENCODING_DATAPATH can be started and stopped with - * different PCM config + * SessionType::A2DP_SOFTWARE_ENCODING_DATAPATH can be started and stopped + * with different PCM config */ TEST_P(BluetoothAudioProviderA2dpEncodingSoftwareAidl, StartAndEndA2dpEncodingSoftwareSessionWithPossiblePcmConfig) { @@ -1502,6 +1549,10 @@ class BluetoothAudioProviderHfpSoftwareEncodingAidl public: virtual void SetUp() override { BluetoothAudioProviderFactoryAidl::SetUp(); + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } GetProviderCapabilitiesHelper(SessionType::HFP_SOFTWARE_ENCODING_DATAPATH); OpenProviderHelper(SessionType::HFP_SOFTWARE_ENCODING_DATAPATH); ASSERT_NE(audio_provider_, nullptr); @@ -1569,6 +1620,10 @@ class BluetoothAudioProviderHfpSoftwareDecodingAidl public: virtual void SetUp() override { BluetoothAudioProviderFactoryAidl::SetUp(); + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } GetProviderCapabilitiesHelper(SessionType::HFP_SOFTWARE_DECODING_DATAPATH); OpenProviderHelper(SessionType::HFP_SOFTWARE_DECODING_DATAPATH); ASSERT_NE(audio_provider_, nullptr); @@ -1657,8 +1712,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * SBC hardware encoding config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with SBC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpSbcEncodingHardwareSession) { @@ -1687,8 +1742,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * AAC hardware encoding config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with AAC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpAacEncodingHardwareSession) { @@ -1717,8 +1772,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * LDAC hardware encoding config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with LDAC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpLdacEncodingHardwareSession) { @@ -1747,8 +1802,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * Opus hardware encoding config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with Opus hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpOpusEncodingHardwareSession) { @@ -1777,8 +1832,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * AptX hardware encoding config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with AptX hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpAptxEncodingHardwareSession) { @@ -1813,8 +1868,8 @@ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped with - * an invalid codec config + * SessionType::A2DP_HARDWARE_ENCODING_DATAPATH can be started and stopped + * with an invalid codec config */ TEST_P(BluetoothAudioProviderA2dpEncodingHardwareAidl, StartAndEndA2dpEncodingHardwareSessionInvalidCodecConfig) { @@ -1885,6 +1940,10 @@ class BluetoothAudioProviderHfpHardwareAidl public: virtual void SetUp() override { BluetoothAudioProviderFactoryAidl::SetUp(); + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } OpenProviderHelper(SessionType::HFP_HARDWARE_OFFLOAD_DATAPATH); // Can open or empty capability ASSERT_TRUE(temp_provider_capabilities_.empty() || @@ -2418,6 +2477,10 @@ TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, TEST_P( BluetoothAudioProviderLeAudioOutputHardwareAidl, StartAndEndLeAudioOutputSessionWithPossibleUnicastConfigFromProviderInfo) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } if (!IsOffloadOutputProviderInfoSupported()) { GTEST_SKIP(); } @@ -2443,6 +2506,10 @@ TEST_P( TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, GetEmptyAseConfigurationEmptyCapability) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } std::vector> empty_capability; std::vector empty_requirement; std::vector configurations; @@ -2464,6 +2531,10 @@ TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, GetEmptyAseConfigurationMismatchedRequirement) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } std::vector> capabilities = { GetDefaultRemoteCapability()}; @@ -2488,6 +2559,10 @@ TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, } TEST_P(BluetoothAudioProviderLeAudioOutputHardwareAidl, GetQoSConfiguration) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } IBluetoothAudioProvider::LeAudioAseQosConfigurationRequirement requirement; std::vector QoSConfigurations; @@ -2862,16 +2937,16 @@ class BluetoothAudioProviderLeAudioBroadcastSoftwareAidl /** * Test whether each provider of type - * SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH can be started and - * stopped + * SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH can be started + * and stopped */ TEST_P(BluetoothAudioProviderLeAudioBroadcastSoftwareAidl, OpenLeAudioOutputSoftwareProvider) {} /** * Test whether each provider of type - * SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH can be started and - * stopped with different PCM config + * SessionType::LE_AUDIO_BROADCAST_SOFTWARE_ENCODING_DATAPATH can be started + * and stopped with different PCM config */ TEST_P(BluetoothAudioProviderLeAudioBroadcastSoftwareAidl, StartAndEndLeAudioOutputSessionWithPossiblePcmConfig) { @@ -3045,6 +3120,10 @@ TEST_P(BluetoothAudioProviderLeAudioBroadcastHardwareAidl, TEST_P( BluetoothAudioProviderLeAudioBroadcastHardwareAidl, StartAndEndLeAudioBroadcastSessionWithPossibleUnicastConfigFromProviderInfo) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } if (!IsBroadcastOffloadProviderInfoSupported()) { return; } @@ -3076,6 +3155,10 @@ TEST_P( TEST_P(BluetoothAudioProviderLeAudioBroadcastHardwareAidl, GetEmptyBroadcastConfigurationEmptyCapability) { + if (GetProviderFactoryInterfaceVersion() < + BluetoothAudioHalVersion::VERSION_AIDL_V4) { + GTEST_SKIP(); + } std::vector> empty_capability; IBluetoothAudioProvider::LeAudioBroadcastConfigurationRequirement empty_requirement; @@ -3190,8 +3273,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingSoftwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_SOFTWARE_DECODING_DATAPATH can be started and stopped with - * different PCM config + * SessionType::A2DP_SOFTWARE_DECODING_DATAPATH can be started and stopped + * with different PCM config */ TEST_P(BluetoothAudioProviderA2dpDecodingSoftwareAidl, StartAndEndA2dpDecodingSoftwareSessionWithPossiblePcmConfig) { @@ -3252,8 +3335,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * SBC hardware encoding config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with SBC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpSbcDecodingHardwareSession) { @@ -3282,8 +3365,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * AAC hardware encoding config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with AAC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpAacDecodingHardwareSession) { @@ -3312,8 +3395,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * LDAC hardware encoding config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with LDAC hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpLdacDecodingHardwareSession) { @@ -3342,8 +3425,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * Opus hardware encoding config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with Opus hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpOpusDecodingHardwareSession) { @@ -3372,8 +3455,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * AptX hardware encoding config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with AptX hardware encoding config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpAptxDecodingHardwareSession) { @@ -3408,8 +3491,8 @@ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, /** * Test whether each provider of type - * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped with - * an invalid codec config + * SessionType::A2DP_HARDWARE_DECODING_DATAPATH can be started and stopped + * with an invalid codec config */ TEST_P(BluetoothAudioProviderA2dpDecodingHardwareAidl, StartAndEndA2dpDecodingHardwareSessionInvalidCodecConfig) {