Loading system/bta/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -881,6 +881,7 @@ cc_test { ], srcs: [ ":TestCommonMockFunctions", ":TestFakeComAndroidBluetoothFlags", ":TestMockBtaLeAudioHalVerifier", ":TestMockMainShim", ":TestMockMainShimEntry", Loading Loading @@ -980,6 +981,7 @@ cc_test { ], srcs: [ ":TestCommonMockFunctions", ":TestFakeComAndroidBluetoothFlags", ":TestMockBtaLeAudioHalVerifier", ":TestMockMainShim", ":TestMockMainShimEntry", Loading Loading @@ -1020,6 +1022,7 @@ cc_test { "libaconfig_storage_read_api_cc", "libbase", "libcrypto", "libcutils", "libhidlbase", "liblog", "server_configurable_flags", Loading Loading @@ -1115,6 +1118,7 @@ cc_test { shared_libs: [ "libbase", "libcrypto", "libcutils", "liblog", "server_configurable_flags", ], Loading Loading @@ -1169,6 +1173,7 @@ cc_test { srcs: [ ":TestCommonMockFunctions", ":TestCommonStackConfig", ":TestFakeComAndroidBluetoothFlags", ":TestFakeOsi", ":TestMockMainShim", ":TestMockMainShimEntry", Loading @@ -1188,9 +1193,11 @@ cc_test { "libbase", "libbinder_ndk", "libcrypto", "libcutils", "libfmq", "libhidlbase", "liblog", "server_configurable_flags", ], static_libs: [ "libbluetooth-types", Loading system/bta/le_audio/broadcaster/broadcaster_test.cc +23 −13 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "bta/le_audio/content_control_id_keeper.h" #include "bta/le_audio/le_audio_types.h" #include "bta/le_audio/mock_codec_manager.h" #include "gd/os/system_properties.h" #include "hci/controller_interface_mock.h" #include "stack/include/btm_iso_api.h" #include "test/common/mock_functions.h" Loading Loading @@ -88,7 +89,9 @@ namespace server_configurable_flags { std::string GetServerConfigurableFlag(const std::string& experiment_category_name, const std::string& experiment_flag_name, const std::string& default_value) { return ""; std::string prop_name = "persist.device_config." + experiment_category_name + "." + experiment_flag_name; return bluetooth::os::GetSystemProperty(prop_name).value_or(default_value); } } // namespace server_configurable_flags Loading @@ -97,6 +100,9 @@ bluetooth::common::MessageLoopThread message_loop_thread("test message loop"); bluetooth::common::MessageLoopThread* get_main_thread() { return &message_loop_thread; } void invoke_switch_buffer_size_cb(bool is_low_latency_buffer_size) {} static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); bt_status_t do_in_main_thread(base::OnceClosure task) { // Wrap the task with task counter so we could later know if there are // any callbacks scheduled and we should wait before performing some actions Loading Loading @@ -1143,9 +1149,10 @@ TEST_F(BroadcasterTest, VendorCodecConfig) { subgroup.bis_configs.at(1).vendor_codec_specific_params->size())); } TEST_F_WITH_FLAGS(BroadcasterTest, AudioActiveState, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, AudioActiveState) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); std::vector<uint8_t> updated_public_meta; PublicBroadcastAnnouncementData pb_announcement; Loading Loading @@ -1223,9 +1230,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, AudioActiveState, ASSERT_EQ(updated_public_meta, public_metadata_audio_false); } TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFromTheBeginning, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFromTheBeginning) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading Loading @@ -1265,9 +1273,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFrom broadcast_stop_timer_->cb(broadcast_stop_timer_->data); } TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfterSuspend, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfterSuspend) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading Loading @@ -1335,9 +1344,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfte broadcast_stop_timer_->cb(broadcast_stop_timer_->data); } TEST_F_WITH_FLAGS(BroadcasterTest, BigCreationTerminationDependsOnAudioResumeSuspend, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigCreationTerminationDependsOnAudioResumeSuspend) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading system/bta/le_audio/broadcaster/state_machine_test.cc +12 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include "../le_audio_types.h" #include "broadcast_configuration_provider.h" #include "btm_iso_api.h" #include "gd/os/system_properties.h" #include "stack/include/btm_ble_api_types.h" #include "state_machine.h" #include "test/common/mock_functions.h" Loading @@ -47,6 +48,9 @@ using testing::Test; // Disables most likely false-positives from base::SplitString() extern "C" const char* __asan_default_options() { return "detect_container_overflow=0"; } static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); void btsnd_hcic_ble_rand(base::Callback<void(BT_OCTET8)> cb) {} namespace bluetooth::le_audio { Loading Loading @@ -512,9 +516,10 @@ TEST_F(StateMachineTest, UpdateAnnouncement) { ASSERT_EQ(first_len + types::LeAudioLtvMap(metadata).RawPacketSize(), second_len); } TEST_F_WITH_FLAGS( StateMachineTest, UpdateBroadcastAnnouncementWithCallback, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_update_metadata_callback))) { TEST_F(StateMachineTest, UpdateBroadcastAnnouncementWithCallback) { std::string flagString = kFlagPrefix + "leaudio_broadcast_update_metadata_callback"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*(sm_callbacks_.get()), OnStateMachineCreateStatus(_, true)).Times(1); auto broadcast_id = InstantiateStateMachine(); Loading @@ -534,9 +539,10 @@ TEST_F_WITH_FLAGS( ASSERT_EQ(announcement, broadcasts_[broadcast_id]->GetBroadcastAnnouncement()); } TEST_F_WITH_FLAGS( StateMachineTest, UpdatePublicBroadcastAnnouncementWithCallback, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_update_metadata_callback))) { TEST_F(StateMachineTest, UpdatePublicBroadcastAnnouncementWithCallback) { std::string flagString = kFlagPrefix + "leaudio_broadcast_update_metadata_callback"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*(sm_callbacks_.get()), OnStateMachineCreateStatus(_, true)).Times(1); auto broadcast_id = InstantiateStateMachine(); Loading system/bta/le_audio/le_audio_client_test.cc +63 −43 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include "common/message_loop_thread.h" #include "fake_osi.h" #include "gatt/database_builder.h" #include "gd/os/system_properties.h" #include "gmock/gmock.h" #include "hardware/bt_gatt_types.h" #include "hci/controller_interface_mock.h" Loading Loading @@ -93,6 +94,9 @@ using bluetooth::le_audio::types::LeAudioContextType; extern struct fake_osi_alarm_set_on_mloop fake_osi_alarm_set_on_mloop_; static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); constexpr int max_num_of_ases = 5; constexpr bluetooth::le_audio::types::LeAudioContextType kLeAudioDefaultConfigurationContext = bluetooth::le_audio::types::LeAudioContextType::UNSPECIFIED; Loading Loading @@ -205,7 +209,9 @@ namespace server_configurable_flags { std::string GetServerConfigurableFlag(const std::string& experiment_category_name, const std::string& experiment_flag_name, const std::string& default_value) { return ""; std::string prop_name = "persist.device_config." + experiment_category_name + "." + experiment_flag_name; return bluetooth::os::GetSystemProperty(prop_name).value_or(default_value); } } // namespace server_configurable_flags Loading Loading @@ -4373,12 +4379,13 @@ TEST_F(UnicastTest, GroupSetActiveNonConnectedGroup) { Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F_WITH_FLAGS(UnicastTest, GroupSetActive_CurrentCodecSentOfActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_codec_config_callback_order_fix))) { TEST_F(UnicastTest, GroupSetActive_CurrentCodecSentOfActive) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "leaudio_codec_config_callback_order_fix"; os::SetSystemProperty(flagString, std::string("true")); /** * In this test we want to make sure that Available context change reach Java * when group is in Configured state Loading Loading @@ -5702,12 +5709,13 @@ TEST_F(UnicastTest, SpeakerStreamingNonDefault) { LocalAudioSourceResume(); } TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Sink, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, le_audio_support_unidirectional_voice_assistant))) { TEST_F(UnicastTest, TestUnidirectionalVoiceAssistant_Sink) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "le_audio_support_unidirectional_voice_assistant"; os::SetSystemProperty(flagString, std::string("true")); /** * Scenario test steps * 1. Configure group to support VOICEASSISTANT only on SINK Loading Loading @@ -5775,12 +5783,13 @@ TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Sink, SyncOnMainLoop(); } TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Source, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, le_audio_support_unidirectional_voice_assistant))) { TEST_F(UnicastTest, TestUnidirectionalVoiceAssistant_Source) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "le_audio_support_unidirectional_voice_assistant"; os::SetSystemProperty(flagString, std::string("true")); /** * Scenario test steps * 1. Configure group to support VOICEASSISTANT only on SOURCE Loading Loading @@ -8933,11 +8942,12 @@ TEST_F(UnicastTest, DisconnectAclBeforeGettingReadResponses) { SyncOnMainLoop(); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatus, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatus) { int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); InSequence s; /* Check if all states are properly notified */ Loading Loading @@ -9021,13 +9031,14 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatus, state_machine_callbacks_->StatusReportCb(group_id, GroupStreamStatus::STREAMING); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusManyGroups, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatusManyGroups) { uint8_t group_size = 2; int group_id_1 = 1; int group_id_2 = 2; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9102,12 +9113,13 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusManyGroups, Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusResendAfterRemove, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatusResendAfterRemove) { uint8_t group_size = 2; int group_id = 1; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9185,12 +9197,13 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusResendAfterRemove, Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9328,12 +9341,13 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActiv Mock::VerifyAndClearExpectations(mock_le_audio_sink_hal_client_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInactive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Imitate activation of monitor mode do_in_main_thread(base::BindOnce( &LeAudioClient::SetUnicastMonitorMode, base::Unretained(LeAudioClient::Get()), Loading Loading @@ -9424,12 +9438,13 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInact .size()); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsActive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Imitate activation of monitor mode do_in_main_thread(base::BindOnce( &LeAudioClient::SetUnicastMonitorMode, base::Unretained(LeAudioClient::Get()), Loading Loading @@ -9519,9 +9534,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsAct .size()); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicastIsInactive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*mock_le_audio_source_hal_client_, Start(_, _, _)).Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, Stop()).Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, OnDestroyed()).Times(0); Loading @@ -9543,9 +9559,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicas Mock::VerifyAndClearExpectations(mock_le_audio_sink_hal_client_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsInactive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); /* Enabling monitor mode for source while group is not active should result in * sending STREAMING_SUSPENDED notification. */ Loading @@ -9562,9 +9579,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsIna Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNotStreaming, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNotStreaming) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); int group_id = 2; LeAudioClient::Get()->GroupSetActive(group_id); Loading @@ -9585,9 +9603,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNot Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsActive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); uint8_t group_size = 2; int group_id = 2; Loading Loading @@ -9791,9 +9810,10 @@ TEST_F(UnicastTestHandoverMode, SetAllowedContextMask) { Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F_WITH_FLAGS(UnicastTest, NoContextvalidateStreamingRequest, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, leaudio_no_context_validate_streaming_request))) { TEST_F(UnicastTest, NoContextvalidateStreamingRequest) { std::string flagString = kFlagPrefix + "leaudio_no_context_validate_streaming_request"; os::SetSystemProperty(flagString, std::string("true")); const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; Loading system/test/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -594,6 +594,13 @@ filegroup { ], } filegroup { name: "TestFakeComAndroidBluetoothFlags", srcs: [ "fake/fake_com_android_bluetooth_flags.cc", ], } filegroup { name: "TestFakeOsi", srcs: [ Loading Loading
system/bta/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -881,6 +881,7 @@ cc_test { ], srcs: [ ":TestCommonMockFunctions", ":TestFakeComAndroidBluetoothFlags", ":TestMockBtaLeAudioHalVerifier", ":TestMockMainShim", ":TestMockMainShimEntry", Loading Loading @@ -980,6 +981,7 @@ cc_test { ], srcs: [ ":TestCommonMockFunctions", ":TestFakeComAndroidBluetoothFlags", ":TestMockBtaLeAudioHalVerifier", ":TestMockMainShim", ":TestMockMainShimEntry", Loading Loading @@ -1020,6 +1022,7 @@ cc_test { "libaconfig_storage_read_api_cc", "libbase", "libcrypto", "libcutils", "libhidlbase", "liblog", "server_configurable_flags", Loading Loading @@ -1115,6 +1118,7 @@ cc_test { shared_libs: [ "libbase", "libcrypto", "libcutils", "liblog", "server_configurable_flags", ], Loading Loading @@ -1169,6 +1173,7 @@ cc_test { srcs: [ ":TestCommonMockFunctions", ":TestCommonStackConfig", ":TestFakeComAndroidBluetoothFlags", ":TestFakeOsi", ":TestMockMainShim", ":TestMockMainShimEntry", Loading @@ -1188,9 +1193,11 @@ cc_test { "libbase", "libbinder_ndk", "libcrypto", "libcutils", "libfmq", "libhidlbase", "liblog", "server_configurable_flags", ], static_libs: [ "libbluetooth-types", Loading
system/bta/le_audio/broadcaster/broadcaster_test.cc +23 −13 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ #include "bta/le_audio/content_control_id_keeper.h" #include "bta/le_audio/le_audio_types.h" #include "bta/le_audio/mock_codec_manager.h" #include "gd/os/system_properties.h" #include "hci/controller_interface_mock.h" #include "stack/include/btm_iso_api.h" #include "test/common/mock_functions.h" Loading Loading @@ -88,7 +89,9 @@ namespace server_configurable_flags { std::string GetServerConfigurableFlag(const std::string& experiment_category_name, const std::string& experiment_flag_name, const std::string& default_value) { return ""; std::string prop_name = "persist.device_config." + experiment_category_name + "." + experiment_flag_name; return bluetooth::os::GetSystemProperty(prop_name).value_or(default_value); } } // namespace server_configurable_flags Loading @@ -97,6 +100,9 @@ bluetooth::common::MessageLoopThread message_loop_thread("test message loop"); bluetooth::common::MessageLoopThread* get_main_thread() { return &message_loop_thread; } void invoke_switch_buffer_size_cb(bool is_low_latency_buffer_size) {} static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); bt_status_t do_in_main_thread(base::OnceClosure task) { // Wrap the task with task counter so we could later know if there are // any callbacks scheduled and we should wait before performing some actions Loading Loading @@ -1143,9 +1149,10 @@ TEST_F(BroadcasterTest, VendorCodecConfig) { subgroup.bis_configs.at(1).vendor_codec_specific_params->size())); } TEST_F_WITH_FLAGS(BroadcasterTest, AudioActiveState, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, AudioActiveState) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); std::vector<uint8_t> updated_public_meta; PublicBroadcastAnnouncementData pb_announcement; Loading Loading @@ -1223,9 +1230,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, AudioActiveState, ASSERT_EQ(updated_public_meta, public_metadata_audio_false); } TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFromTheBeginning, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFromTheBeginning) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading Loading @@ -1265,9 +1273,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundFrom broadcast_stop_timer_->cb(broadcast_stop_timer_->data); } TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfterSuspend, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfterSuspend) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading Loading @@ -1335,9 +1344,10 @@ TEST_F_WITH_FLAGS(BroadcasterTest, BigTerminationAndBroadcastStopWhenNoSoundAfte broadcast_stop_timer_->cb(broadcast_stop_timer_->data); } TEST_F_WITH_FLAGS(BroadcasterTest, BigCreationTerminationDependsOnAudioResumeSuspend, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_big_depends_on_audio_state))) { TEST_F(BroadcasterTest, BigCreationTerminationDependsOnAudioResumeSuspend) { std::string flagString = kFlagPrefix + "leaudio_big_depends_on_audio_state"; os::SetSystemProperty(flagString, std::string("true")); // Timers created ASSERT_TRUE(big_terminate_timer_ != nullptr); ASSERT_TRUE(broadcast_stop_timer_ != nullptr); Loading
system/bta/le_audio/broadcaster/state_machine_test.cc +12 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ #include "../le_audio_types.h" #include "broadcast_configuration_provider.h" #include "btm_iso_api.h" #include "gd/os/system_properties.h" #include "stack/include/btm_ble_api_types.h" #include "state_machine.h" #include "test/common/mock_functions.h" Loading @@ -47,6 +48,9 @@ using testing::Test; // Disables most likely false-positives from base::SplitString() extern "C" const char* __asan_default_options() { return "detect_container_overflow=0"; } static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); void btsnd_hcic_ble_rand(base::Callback<void(BT_OCTET8)> cb) {} namespace bluetooth::le_audio { Loading Loading @@ -512,9 +516,10 @@ TEST_F(StateMachineTest, UpdateAnnouncement) { ASSERT_EQ(first_len + types::LeAudioLtvMap(metadata).RawPacketSize(), second_len); } TEST_F_WITH_FLAGS( StateMachineTest, UpdateBroadcastAnnouncementWithCallback, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_update_metadata_callback))) { TEST_F(StateMachineTest, UpdateBroadcastAnnouncementWithCallback) { std::string flagString = kFlagPrefix + "leaudio_broadcast_update_metadata_callback"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*(sm_callbacks_.get()), OnStateMachineCreateStatus(_, true)).Times(1); auto broadcast_id = InstantiateStateMachine(); Loading @@ -534,9 +539,10 @@ TEST_F_WITH_FLAGS( ASSERT_EQ(announcement, broadcasts_[broadcast_id]->GetBroadcastAnnouncement()); } TEST_F_WITH_FLAGS( StateMachineTest, UpdatePublicBroadcastAnnouncementWithCallback, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_update_metadata_callback))) { TEST_F(StateMachineTest, UpdatePublicBroadcastAnnouncementWithCallback) { std::string flagString = kFlagPrefix + "leaudio_broadcast_update_metadata_callback"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*(sm_callbacks_.get()), OnStateMachineCreateStatus(_, true)).Times(1); auto broadcast_id = InstantiateStateMachine(); Loading
system/bta/le_audio/le_audio_client_test.cc +63 −43 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ #include "common/message_loop_thread.h" #include "fake_osi.h" #include "gatt/database_builder.h" #include "gd/os/system_properties.h" #include "gmock/gmock.h" #include "hardware/bt_gatt_types.h" #include "hci/controller_interface_mock.h" Loading Loading @@ -93,6 +94,9 @@ using bluetooth::le_audio::types::LeAudioContextType; extern struct fake_osi_alarm_set_on_mloop fake_osi_alarm_set_on_mloop_; static std::string kFlagPrefix( "persist.device_config.aconfig_flags.bluetooth.com.android.bluetooth.flags."); constexpr int max_num_of_ases = 5; constexpr bluetooth::le_audio::types::LeAudioContextType kLeAudioDefaultConfigurationContext = bluetooth::le_audio::types::LeAudioContextType::UNSPECIFIED; Loading Loading @@ -205,7 +209,9 @@ namespace server_configurable_flags { std::string GetServerConfigurableFlag(const std::string& experiment_category_name, const std::string& experiment_flag_name, const std::string& default_value) { return ""; std::string prop_name = "persist.device_config." + experiment_category_name + "." + experiment_flag_name; return bluetooth::os::GetSystemProperty(prop_name).value_or(default_value); } } // namespace server_configurable_flags Loading Loading @@ -4373,12 +4379,13 @@ TEST_F(UnicastTest, GroupSetActiveNonConnectedGroup) { Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F_WITH_FLAGS(UnicastTest, GroupSetActive_CurrentCodecSentOfActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_codec_config_callback_order_fix))) { TEST_F(UnicastTest, GroupSetActive_CurrentCodecSentOfActive) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "leaudio_codec_config_callback_order_fix"; os::SetSystemProperty(flagString, std::string("true")); /** * In this test we want to make sure that Available context change reach Java * when group is in Configured state Loading Loading @@ -5702,12 +5709,13 @@ TEST_F(UnicastTest, SpeakerStreamingNonDefault) { LocalAudioSourceResume(); } TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Sink, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, le_audio_support_unidirectional_voice_assistant))) { TEST_F(UnicastTest, TestUnidirectionalVoiceAssistant_Sink) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "le_audio_support_unidirectional_voice_assistant"; os::SetSystemProperty(flagString, std::string("true")); /** * Scenario test steps * 1. Configure group to support VOICEASSISTANT only on SINK Loading Loading @@ -5775,12 +5783,13 @@ TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Sink, SyncOnMainLoop(); } TEST_F_WITH_FLAGS(UnicastTest, TestUnidirectionalVoiceAssistant_Source, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, le_audio_support_unidirectional_voice_assistant))) { TEST_F(UnicastTest, TestUnidirectionalVoiceAssistant_Source) { const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "le_audio_support_unidirectional_voice_assistant"; os::SetSystemProperty(flagString, std::string("true")); /** * Scenario test steps * 1. Configure group to support VOICEASSISTANT only on SOURCE Loading Loading @@ -8933,11 +8942,12 @@ TEST_F(UnicastTest, DisconnectAclBeforeGettingReadResponses) { SyncOnMainLoop(); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatus, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatus) { int group_id = bluetooth::groups::kGroupUnknown; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); InSequence s; /* Check if all states are properly notified */ Loading Loading @@ -9021,13 +9031,14 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatus, state_machine_callbacks_->StatusReportCb(group_id, GroupStreamStatus::STREAMING); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusManyGroups, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatusManyGroups) { uint8_t group_size = 2; int group_id_1 = 1; int group_id_2 = 2; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9102,12 +9113,13 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusManyGroups, Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusResendAfterRemove, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_callback_on_group_stream_status))) { TEST_F(UnicastTest, GroupStreamStatusResendAfterRemove) { uint8_t group_size = 2; int group_id = 1; std::string flagString = kFlagPrefix + "leaudio_callback_on_group_stream_status"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9185,12 +9197,13 @@ TEST_F_WITH_FLAGS(UnicastTest, GroupStreamStatusResendAfterRemove, Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Report working CSIS ON_CALL(mock_csis_client_module_, IsCsisClientRunning()).WillByDefault(Return(true)); Loading Loading @@ -9328,12 +9341,13 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsActiv Mock::VerifyAndClearExpectations(mock_le_audio_sink_hal_client_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInactive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Imitate activation of monitor mode do_in_main_thread(base::BindOnce( &LeAudioClient::SetUnicastMonitorMode, base::Unretained(LeAudioClient::Get()), Loading Loading @@ -9424,12 +9438,13 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSinkMonitorModeWhileUnicastIsInact .size()); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsActive) { uint8_t group_size = 2; int group_id = 2; std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); // Imitate activation of monitor mode do_in_main_thread(base::BindOnce( &LeAudioClient::SetUnicastMonitorMode, base::Unretained(LeAudioClient::Get()), Loading Loading @@ -9519,9 +9534,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, ClearSinkMonitorModeWhileUnicastIsAct .size()); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicastIsInactive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); EXPECT_CALL(*mock_le_audio_source_hal_client_, Start(_, _, _)).Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, Stop()).Times(0); EXPECT_CALL(*mock_le_audio_source_hal_client_, OnDestroyed()).Times(0); Loading @@ -9543,9 +9559,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetAndClearSinkMonitorModeWhileUnicas Mock::VerifyAndClearExpectations(mock_le_audio_sink_hal_client_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsInactive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsInactive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); /* Enabling monitor mode for source while group is not active should result in * sending STREAMING_SUSPENDED notification. */ Loading @@ -9562,9 +9579,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsIna Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNotStreaming, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNotStreaming) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); int group_id = 2; LeAudioClient::Get()->GroupSetActive(group_id); Loading @@ -9585,9 +9603,10 @@ TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsNot Mock::VerifyAndClearExpectations(&mock_audio_hal_client_callbacks_); } TEST_F_WITH_FLAGS(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsActive, REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_BT, leaudio_broadcast_audio_handover_policies))) { TEST_F(UnicastTestHandoverMode, SetSourceMonitorModeWhileUnicastIsActive) { std::string flagString = kFlagPrefix + "leaudio_broadcast_audio_handover_policies"; os::SetSystemProperty(flagString, std::string("true")); uint8_t group_size = 2; int group_id = 2; Loading Loading @@ -9791,9 +9810,10 @@ TEST_F(UnicastTestHandoverMode, SetAllowedContextMask) { Mock::VerifyAndClearExpectations(mock_le_audio_source_hal_client_); } TEST_F_WITH_FLAGS(UnicastTest, NoContextvalidateStreamingRequest, REQUIRES_FLAGS_ENABLED( ACONFIG_FLAG(TEST_BT, leaudio_no_context_validate_streaming_request))) { TEST_F(UnicastTest, NoContextvalidateStreamingRequest) { std::string flagString = kFlagPrefix + "leaudio_no_context_validate_streaming_request"; os::SetSystemProperty(flagString, std::string("true")); const RawAddress test_address0 = GetTestAddress(0); int group_id = bluetooth::groups::kGroupUnknown; Loading
system/test/Android.bp +7 −0 Original line number Diff line number Diff line Loading @@ -594,6 +594,13 @@ filegroup { ], } filegroup { name: "TestFakeComAndroidBluetoothFlags", srcs: [ "fake/fake_com_android_bluetooth_flags.cc", ], } filegroup { name: "TestFakeOsi", srcs: [ Loading