diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-13 17:25:49 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-13 17:25:49 +0000 |
commit | 2f47d45815c59ebe9ab55af4b49a96d15e7a6e5e (patch) | |
tree | 3df8328746790a7d45d4ff28ad88835dd0b9e8ee | |
parent | 2e9e9ab7e2ad1fdfab8da82d2635ca52d33873f7 (diff) | |
parent | 3a75bdd434947b69117cbb6303c83d63553243c6 (diff) | |
download | interfaces-2f47d45815c59ebe9ab55af4b49a96d15e7a6e5e.tar.gz |
Snap for 10491609 from 3a75bdd434947b69117cbb6303c83d63553243c6 to mainline-adbd-releaseaml_adb_340912530aml_adb_340912350aml_adb_340912200aml_adb_340912000android14-mainline-adbd-release
Change-Id: Ib74a25b3905f6aa548c103f275c0473013e37e6b
-rw-r--r-- | bluetooth/audio/aidl/vts/Android.bp | 5 | ||||
-rw-r--r-- | radio/1.0/vts/functional/vts_test_util.cpp | 4 | ||||
-rw-r--r-- | radio/1.0/vts/functional/vts_test_util.h | 5 | ||||
-rw-r--r-- | radio/1.5/vts/functional/radio_hidl_hal_api.cpp | 2 | ||||
-rw-r--r-- | radio/aidl/vts/radio_aidl_hal_utils.cpp | 4 | ||||
-rw-r--r-- | radio/aidl/vts/radio_aidl_hal_utils.h | 5 | ||||
-rw-r--r-- | radio/aidl/vts/radio_network_test.cpp | 2 | ||||
-rw-r--r-- | security/keymint/aidl/vts/functional/AttestKeyTest.cpp | 9 | ||||
-rw-r--r-- | security/keymint/aidl/vts/functional/DeviceUniqueAttestationTest.cpp | 4 | ||||
-rw-r--r-- | security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp | 20 | ||||
-rw-r--r-- | security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h | 2 | ||||
-rw-r--r-- | security/keymint/aidl/vts/functional/KeyMintTest.cpp | 5 | ||||
-rw-r--r-- | wifi/aidl/vts/functional/wifi_nan_iface_aidl_test.cpp | 171 |
13 files changed, 113 insertions, 125 deletions
diff --git a/bluetooth/audio/aidl/vts/Android.bp b/bluetooth/audio/aidl/vts/Android.bp index e03fb5873d..5a604a1960 100644 --- a/bluetooth/audio/aidl/vts/Android.bp +++ b/bluetooth/audio/aidl/vts/Android.bp @@ -15,11 +15,14 @@ cc_test { ], tidy_timeout_srcs: ["VtsHalBluetoothAudioTargetTest.cpp"], srcs: ["VtsHalBluetoothAudioTargetTest.cpp"], - shared_libs: [ + static_libs: [ "android.hardware.audio.common-V1-ndk", "android.hardware.bluetooth.audio-V3-ndk", "android.hardware.common-V2-ndk", "android.hardware.common.fmq-V1-ndk", + "android.media.audio.common.types-V2-ndk", + ], + shared_libs: [ "libbase", "libbinder_ndk", "libcutils", diff --git a/radio/1.0/vts/functional/vts_test_util.cpp b/radio/1.0/vts/functional/vts_test_util.cpp index 5b31accbd2..0515778029 100644 --- a/radio/1.0/vts/functional/vts_test_util.cpp +++ b/radio/1.0/vts/functional/vts_test_util.cpp @@ -138,3 +138,7 @@ std::cv_status RadioResponseWaiter::wait() { count_--; return status; } + +bool isLteConnected(){ + return testing::checkSubstringInCommandOutput("getprop gsm.network.type", "LTE"); +} diff --git a/radio/1.0/vts/functional/vts_test_util.h b/radio/1.0/vts/functional/vts_test_util.h index fa338a38a5..39c754584a 100644 --- a/radio/1.0/vts/functional/vts_test_util.h +++ b/radio/1.0/vts/functional/vts_test_util.h @@ -104,6 +104,11 @@ bool isVoiceEmergencyOnly(RegState state); */ bool isVoiceInService(RegState state); +/* + * Check if device is in Lte Connected status. + */ +bool isLteConnected(); + /** * Used when waiting for an asynchronous response from the HAL. */ diff --git a/radio/1.5/vts/functional/radio_hidl_hal_api.cpp b/radio/1.5/vts/functional/radio_hidl_hal_api.cpp index fd44e9309e..3d3abe4050 100644 --- a/radio/1.5/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.5/vts/functional/radio_hidl_hal_api.cpp @@ -597,7 +597,7 @@ TEST_P(RadioHidlTest_v1_5, startNetworkScan) { } else if (cardStatus.base.base.base.cardState == CardState::PRESENT) { // Modems support 3GPP RAT family need to // support scanning requests combined with some parameters. - if (deviceSupportsFeature(FEATURE_TELEPHONY_GSM)) { + if (deviceSupportsFeature(FEATURE_TELEPHONY_GSM) && isLteConnected()) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_5->rspInfo.error, {RadioError::NONE, RadioError::OPERATION_NOT_ALLOWED})); } else { diff --git a/radio/aidl/vts/radio_aidl_hal_utils.cpp b/radio/aidl/vts/radio_aidl_hal_utils.cpp index 64969dea73..15152014a1 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.cpp +++ b/radio/aidl/vts/radio_aidl_hal_utils.cpp @@ -240,3 +240,7 @@ void RadioServiceTest::updateSimSlotStatus(int physicalSlotId) { slotStatus = radioConfigRsp->simSlotStatus[physicalSlotId]; } } + +bool isLteConnected(){ + return testing::checkSubstringInCommandOutput("getprop gsm.network.type", "LTE"); +} diff --git a/radio/aidl/vts/radio_aidl_hal_utils.h b/radio/aidl/vts/radio_aidl_hal_utils.h index 09c4f144d8..d8aa02431e 100644 --- a/radio/aidl/vts/radio_aidl_hal_utils.h +++ b/radio/aidl/vts/radio_aidl_hal_utils.h @@ -129,6 +129,11 @@ bool isVoiceInService(RegState state); */ bool isServiceValidForDeviceConfiguration(std::string& serviceName); +/* + * Check if device is in Lte Connected status. + */ +bool isLteConnected(); + /** * RadioServiceTest base class */ diff --git a/radio/aidl/vts/radio_network_test.cpp b/radio/aidl/vts/radio_network_test.cpp index e5da05032f..2beb249674 100644 --- a/radio/aidl/vts/radio_network_test.cpp +++ b/radio/aidl/vts/radio_network_test.cpp @@ -886,7 +886,7 @@ TEST_P(RadioNetworkTest, startNetworkScan) { if (cardStatus.cardState == CardStatus::STATE_ABSENT) { ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error, {RadioError::SIM_ABSENT})); } else if (cardStatus.cardState == CardStatus::STATE_PRESENT) { - if (deviceSupportsFeature(FEATURE_TELEPHONY_GSM)) { + if (deviceSupportsFeature(FEATURE_TELEPHONY_GSM) && isLteConnected()) { // Modems support 3GPP RAT family need to // support scanning requests combined with some parameters. ASSERT_TRUE(CheckAnyOfErrors(radioRsp_network->rspInfo.error, diff --git a/security/keymint/aidl/vts/functional/AttestKeyTest.cpp b/security/keymint/aidl/vts/functional/AttestKeyTest.cpp index a868c966e6..6d289ecda8 100644 --- a/security/keymint/aidl/vts/functional/AttestKeyTest.cpp +++ b/security/keymint/aidl/vts/functional/AttestKeyTest.cpp @@ -961,10 +961,7 @@ TEST_P(AttestKeyTest, EcdsaAttestationMismatchID) { vector<Certificate> attested_key_cert_chain; auto result = GenerateKey(builder, attest_key, &attested_key_blob, &attested_key_characteristics, &attested_key_cert_chain); - - ASSERT_TRUE(result == ErrorCode::CANNOT_ATTEST_IDS || result == ErrorCode::INVALID_TAG) - << "result = " << result; - device_id_attestation_vsr_check(result); + device_id_attestation_check_acceptable_error(invalid_tag.tag, result); } CheckedDeleteKey(&attest_key.keyBlob); } @@ -1026,8 +1023,6 @@ TEST_P(AttestKeyTest, SecondIMEIAttestationIDSuccess) { ASSERT_EQ(result, ErrorCode::OK); - device_id_attestation_vsr_check(result); - CheckedDeleteKey(&attested_key_blob); AuthorizationSet hw_enforced = HwEnforcedAuthorizations(attested_key_characteristics); @@ -1107,8 +1102,6 @@ TEST_P(AttestKeyTest, MultipleIMEIAttestationIDSuccess) { ASSERT_EQ(result, ErrorCode::OK); - device_id_attestation_vsr_check(result); - CheckedDeleteKey(&attested_key_blob); AuthorizationSet hw_enforced = HwEnforcedAuthorizations(attested_key_characteristics); diff --git a/security/keymint/aidl/vts/functional/DeviceUniqueAttestationTest.cpp b/security/keymint/aidl/vts/functional/DeviceUniqueAttestationTest.cpp index 55bb5b4fab..8e9adedf5c 100644 --- a/security/keymint/aidl/vts/functional/DeviceUniqueAttestationTest.cpp +++ b/security/keymint/aidl/vts/functional/DeviceUniqueAttestationTest.cpp @@ -374,8 +374,8 @@ TEST_P(DeviceUniqueAttestationTest, EcdsaDeviceUniqueAttestationMismatchID) { // Add the tag that doesn't match the local device's real ID. builder.push_back(invalid_tag); auto result = GenerateKey(builder, &key_blob, &key_characteristics); - ASSERT_TRUE(result == ErrorCode::CANNOT_ATTEST_IDS || result == ErrorCode::INVALID_TAG); - device_id_attestation_vsr_check(result); + + device_id_attestation_check_acceptable_error(invalid_tag.tag, result); } } diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp index a8ea407e44..284af941b1 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.cpp @@ -2153,13 +2153,27 @@ void p256_pub_key(const vector<uint8_t>& coseKeyData, EVP_PKEY_Ptr* signingKey) *signingKey = std::move(pubKey); } -void device_id_attestation_vsr_check(const ErrorCode& result) { - if (get_vsr_api_level() > __ANDROID_API_T__) { - ASSERT_FALSE(result == ErrorCode::INVALID_TAG) +// Check the error code from an attempt to perform device ID attestation with an invalid value. +void device_id_attestation_check_acceptable_error(Tag tag, const ErrorCode& result) { + if (result == ErrorCode::CANNOT_ATTEST_IDS) { + // Standard/default error code for ID mismatch. + } else if (result == ErrorCode::INVALID_TAG) { + // Depending on the situation, other error codes may be acceptable. First, allow older + // implementations to use INVALID_TAG. + ASSERT_FALSE(get_vsr_api_level() > __ANDROID_API_T__) << "It is a specification violation for INVALID_TAG to be returned due to ID " << "mismatch in a Device ID Attestation call. INVALID_TAG is only intended to " << "be used for a case where updateAad() is called after update(). As of " << "VSR-14, this is now enforced as an error."; + } else if (result == ErrorCode::ATTESTATION_IDS_NOT_PROVISIONED) { + // If the device is not a phone, it will not have IMEI/MEID values available. Allow + // ATTESTATION_IDS_NOT_PROVISIONED in this case. + ASSERT_TRUE((tag == TAG_ATTESTATION_ID_IMEI || tag == TAG_ATTESTATION_ID_MEID || + tag == TAG_ATTESTATION_ID_SECOND_IMEI)) + << "incorrect error code on attestation ID mismatch"; + } else { + ADD_FAILURE() << "Error code " << result + << " returned on attestation ID mismatch, should be CANNOT_ATTEST_IDS"; } } diff --git a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h index 30ac452bab..6318514d6b 100644 --- a/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h +++ b/security/keymint/aidl/vts/functional/KeyMintAidlTestBase.h @@ -421,7 +421,7 @@ vector<uint8_t> make_name_from_str(const string& name); void check_maced_pubkey(const MacedPublicKey& macedPubKey, bool testMode, vector<uint8_t>* payload_value); void p256_pub_key(const vector<uint8_t>& coseKeyData, EVP_PKEY_Ptr* signingKey); -void device_id_attestation_vsr_check(const ErrorCode& result); +void device_id_attestation_check_acceptable_error(Tag tag, const ErrorCode& result); bool check_feature(const std::string& name); AuthorizationSet HwEnforcedAuthorizations(const vector<KeyCharacteristics>& key_characteristics); diff --git a/security/keymint/aidl/vts/functional/KeyMintTest.cpp b/security/keymint/aidl/vts/functional/KeyMintTest.cpp index e99149bf17..1297d1d978 100644 --- a/security/keymint/aidl/vts/functional/KeyMintTest.cpp +++ b/security/keymint/aidl/vts/functional/KeyMintTest.cpp @@ -2086,7 +2086,8 @@ TEST_P(NewKeyGenerationTest, EcdsaAttestationTags) { builder, &key_blob, &key_characteristics); } } - ASSERT_EQ(error, ErrorCode::CANNOT_ATTEST_IDS); + + device_id_attestation_check_acceptable_error(tag.tag, error); } } @@ -3119,7 +3120,7 @@ TEST_P(SigningOperationsTest, RsaPaddingNoneDoesNotAllowOther) { */ TEST_P(SigningOperationsTest, NoUserConfirmation) { ASSERT_EQ(ErrorCode::OK, GenerateKey(AuthorizationSetBuilder() - .RsaSigningKey(1024, 65537) + .RsaSigningKey(2048, 65537) .Digest(Digest::NONE) .Padding(PaddingMode::NONE) .Authorization(TAG_NO_AUTH_REQUIRED) diff --git a/wifi/aidl/vts/functional/wifi_nan_iface_aidl_test.cpp b/wifi/aidl/vts/functional/wifi_nan_iface_aidl_test.cpp index bebad7ca08..95bcec7029 100644 --- a/wifi/aidl/vts/functional/wifi_nan_iface_aidl_test.cpp +++ b/wifi/aidl/vts/functional/wifi_nan_iface_aidl_test.cpp @@ -76,18 +76,10 @@ class WifiNanIfaceAidlTest : public testing::TestWithParam<std::string> { void TearDown() override { stopWifiService(getInstanceName()); } - // Used as a mechanism to inform the test about data/event callbacks. - inline void notify() { - std::unique_lock<std::mutex> lock(mtx_); - count_++; - cv_.notify_one(); - } - enum CallbackType { - INVALID = -2, - ANY_CALLBACK = -1, + INVALID = 0, - NOTIFY_CAPABILITIES_RESPONSE = 0, + NOTIFY_CAPABILITIES_RESPONSE = 1, NOTIFY_ENABLE_RESPONSE, NOTIFY_CONFIG_RESPONSE, NOTIFY_DISABLE_RESPONSE, @@ -128,310 +120,278 @@ class WifiNanIfaceAidlTest : public testing::TestWithParam<std::string> { EVENT_SUSPENSION_MODE_CHANGE, }; + // Used as a mechanism to inform the test about data/event callbacks. + inline void notify(CallbackType callbackType) { + std::unique_lock<std::mutex> lock(mtx_); + callback_event_bitmap_ |= (0x1 << callbackType); + cv_.notify_one(); + } + // Test code calls this function to wait for data/event callback. - // Must set callbackType = INVALID before calling this function. + // Must set callback_event_bitmap_ to 0 before calling this function. inline std::cv_status wait(CallbackType waitForCallbackType) { std::unique_lock<std::mutex> lock(mtx_); EXPECT_NE(INVALID, waitForCallbackType); std::cv_status status = std::cv_status::no_timeout; auto now = std::chrono::system_clock::now(); - while (count_ == 0) { + while (!(receivedCallback(waitForCallbackType))) { status = cv_.wait_until(lock, now + std::chrono::seconds(TIMEOUT_PERIOD)); if (status == std::cv_status::timeout) return status; - if (waitForCallbackType != ANY_CALLBACK && callback_type_ != INVALID && - callback_type_ != waitForCallbackType) { - count_--; - } } - count_--; return status; } + inline bool receivedCallback(CallbackType waitForCallbackType) { + return callback_event_bitmap_ & (0x1 << waitForCallbackType); + } + class WifiNanIfaceEventCallback : public BnWifiNanIfaceEventCallback { public: WifiNanIfaceEventCallback(WifiNanIfaceAidlTest& parent) : parent_(parent){}; ::ndk::ScopedAStatus eventClusterEvent(const NanClusterEventInd& event) override { - parent_.callback_type_ = EVENT_CLUSTER_EVENT; parent_.nan_cluster_event_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_CLUSTER_EVENT); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventDataPathConfirm(const NanDataPathConfirmInd& event) override { - parent_.callback_type_ = EVENT_DATA_PATH_CONFIRM; parent_.nan_data_path_confirm_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_DATA_PATH_CONFIRM); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventDataPathRequest(const NanDataPathRequestInd& event) override { - parent_.callback_type_ = EVENT_DATA_PATH_REQUEST; parent_.nan_data_path_request_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_DATA_PATH_REQUEST); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventDataPathScheduleUpdate( const NanDataPathScheduleUpdateInd& event) override { - parent_.callback_type_ = EVENT_DATA_PATH_SCHEDULE_UPDATE; parent_.nan_data_path_schedule_update_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_DATA_PATH_SCHEDULE_UPDATE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventDataPathTerminated(int32_t ndpInstanceId) override { - parent_.callback_type_ = EVENT_DATA_PATH_TERMINATED; parent_.ndp_instance_id_ = ndpInstanceId; - parent_.notify(); + parent_.notify(EVENT_DATA_PATH_TERMINATED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventDisabled(const NanStatus& status) override { - parent_.callback_type_ = EVENT_DISABLED; parent_.status_ = status; - parent_.notify(); + parent_.notify(EVENT_DISABLED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventFollowupReceived(const NanFollowupReceivedInd& event) override { - parent_.callback_type_ = EVENT_FOLLOWUP_RECEIVED; parent_.nan_followup_received_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_FOLLOWUP_RECEIVED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventMatch(const NanMatchInd& event) override { - parent_.callback_type_ = EVENT_MATCH; parent_.nan_match_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_MATCH); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventMatchExpired(int8_t discoverySessionId, int32_t peerId) override { - parent_.callback_type_ = EVENT_MATCH_EXPIRED; parent_.session_id_ = discoverySessionId; parent_.peer_id_ = peerId; - parent_.notify(); + parent_.notify(EVENT_MATCH_EXPIRED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventPublishTerminated(int8_t sessionId, const NanStatus& status) override { - parent_.callback_type_ = EVENT_PUBLISH_TERMINATED; parent_.session_id_ = sessionId; parent_.status_ = status; - parent_.notify(); + parent_.notify(EVENT_PUBLISH_TERMINATED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventSubscribeTerminated(int8_t sessionId, const NanStatus& status) override { - parent_.callback_type_ = EVENT_SUBSCRIBE_TERMINATED; parent_.session_id_ = sessionId; parent_.status_ = status; - parent_.notify(); + parent_.notify(EVENT_SUBSCRIBE_TERMINATED); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventTransmitFollowup(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = EVENT_TRANSMIT_FOLLOWUP; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(EVENT_TRANSMIT_FOLLOWUP); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventPairingConfirm(const NanPairingConfirmInd& event) override { - parent_.callback_type_ = EVENT_PAIRING_CONFIRM; parent_.nan_pairing_confirm_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_PAIRING_CONFIRM); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventPairingRequest(const NanPairingRequestInd& event) override { - parent_.callback_type_ = EVENT_PAIRING_REQUEST; parent_.nan_pairing_request_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_PAIRING_REQUEST); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventBootstrappingConfirm( const NanBootstrappingConfirmInd& event) override { - parent_.callback_type_ = EVENT_BOOTSTRAPPING_CONFIRM; parent_.nan_bootstrapping_confirm_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_BOOTSTRAPPING_CONFIRM); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventBootstrappingRequest( const NanBootstrappingRequestInd& event) override { - parent_.callback_type_ = EVENT_BOOTSTRAPPING_REQUEST; parent_.nan_bootstrapping_request_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_BOOTSTRAPPING_REQUEST); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus eventSuspensionModeChanged( const NanSuspensionModeChangeInd& event) override { - parent_.callback_type_ = EVENT_SUSPENSION_MODE_CHANGE; parent_.nan_suspension_mode_change_ind_ = event; - parent_.notify(); + parent_.notify(EVENT_SUSPENSION_MODE_CHANGE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyCapabilitiesResponse( char16_t id, const NanStatus& status, const NanCapabilities& capabilities) override { - parent_.callback_type_ = NOTIFY_CAPABILITIES_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.capabilities_ = capabilities; - parent_.notify(); + parent_.notify(NOTIFY_CAPABILITIES_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyConfigResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_CONFIG_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_CONFIG_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyCreateDataInterfaceResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_CREATE_DATA_INTERFACE_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_CREATE_DATA_INTERFACE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyDeleteDataInterfaceResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_DELETE_DATA_INTERFACE_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_DELETE_DATA_INTERFACE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyDisableResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_DISABLE_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_DISABLE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyEnableResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_ENABLE_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_ENABLE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyInitiateDataPathResponse(char16_t id, const NanStatus& status, int32_t ndpInstanceId) override { - parent_.callback_type_ = NOTIFY_INITIATE_DATA_PATH_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.ndp_instance_id_ = ndpInstanceId; - parent_.notify(); + parent_.notify(NOTIFY_INITIATE_DATA_PATH_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyRespondToDataPathIndicationResponse( char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_RESPOND_TO_DATA_PATH_INDICATION_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_RESPOND_TO_DATA_PATH_INDICATION_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyStartPublishResponse(char16_t id, const NanStatus& status, int8_t sessionId) override { - parent_.callback_type_ = NOTIFY_START_PUBLISH_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.session_id_ = sessionId; - parent_.notify(); + parent_.notify(NOTIFY_START_PUBLISH_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyStartSubscribeResponse(char16_t id, const NanStatus& status, int8_t sessionId) override { - parent_.callback_type_ = NOTIFY_START_SUBSCRIBE_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.session_id_ = sessionId; - parent_.notify(); + parent_.notify(NOTIFY_START_SUBSCRIBE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyStopPublishResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_STOP_PUBLISH_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_STOP_PUBLISH_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyStopSubscribeResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_STOP_SUBSCRIBE_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_STOP_SUBSCRIBE_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyTerminateDataPathResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_TERMINATE_DATA_PATH_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_TERMINATE_DATA_PATH_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifySuspendResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_SUSPEND_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_SUSPEND_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyResumeResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_RESUME_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_RESUME_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyTransmitFollowupResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_TRANSMIT_FOLLOWUP_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_TRANSMIT_FOLLOWUP_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyInitiatePairingResponse(char16_t id, const NanStatus& status, int32_t pairingInstanceId) override { - parent_.callback_type_ = NOTIFY_INITIATE_PAIRING_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.pairing_instance_id_ = pairingInstanceId; - parent_.notify(); + parent_.notify(NOTIFY_INITIATE_PAIRING_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyRespondToPairingIndicationResponse( char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_RESPOND_TO_PAIRING_INDICATION_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_RESPOND_TO_PAIRING_INDICATION_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyInitiateBootstrappingResponse( char16_t id, const NanStatus& status, int32_t bootstrapppingInstanceId) override { - parent_.callback_type_ = NOTIFY_INITIATE_BOOTSTRAPPING_RESPONSE; parent_.id_ = id; parent_.status_ = status; parent_.bootstrappping_instance_id_ = bootstrapppingInstanceId; - parent_.notify(); + parent_.notify(NOTIFY_INITIATE_BOOTSTRAPPING_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyRespondToBootstrappingIndicationResponse( char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_RESPOND_TO_BOOTSTRAPPING_INDICATION_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_RESPOND_TO_BOOTSTRAPPING_INDICATION_RESPONSE); return ndk::ScopedAStatus::ok(); } ::ndk::ScopedAStatus notifyTerminatePairingResponse(char16_t id, const NanStatus& status) override { - parent_.callback_type_ = NOTIFY_TERMINATE_PAIRING_RESPONSE; parent_.id_ = id; parent_.status_ = status; - parent_.notify(); + parent_.notify(NOTIFY_TERMINATE_PAIRING_RESPONSE); return ndk::ScopedAStatus::ok(); } @@ -441,7 +401,7 @@ class WifiNanIfaceAidlTest : public testing::TestWithParam<std::string> { protected: std::shared_ptr<IWifiNanIface> wifi_nan_iface_; - CallbackType callback_type_; + uint64_t callback_event_bitmap_; uint16_t id_; uint8_t session_id_; uint32_t ndp_instance_id_; @@ -468,7 +428,6 @@ class WifiNanIfaceAidlTest : public testing::TestWithParam<std::string> { // synchronization objects std::mutex mtx_; std::condition_variable cv_; - int count_ = 0; }; /* @@ -488,7 +447,7 @@ TEST_P(WifiNanIfaceAidlTest, FailOnIfaceInvalid) { */ TEST_P(WifiNanIfaceAidlTest, EnableRequest_InvalidArgs) { uint16_t inputCmdId = 10; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; NanEnableRequest nanEnableRequest = {}; NanConfigRequestSupplemental nanConfigRequestSupp = {}; auto status = @@ -498,7 +457,7 @@ TEST_P(WifiNanIfaceAidlTest, EnableRequest_InvalidArgs) { // Wait for a callback. ASSERT_EQ(std::cv_status::no_timeout, wait(NOTIFY_ENABLE_RESPONSE)); - ASSERT_EQ(NOTIFY_ENABLE_RESPONSE, callback_type_); + ASSERT_TRUE(receivedCallback(NOTIFY_ENABLE_RESPONSE)); ASSERT_EQ(id_, inputCmdId); ASSERT_EQ(status_.status, NanStatusCode::INVALID_ARGS); } @@ -509,7 +468,7 @@ TEST_P(WifiNanIfaceAidlTest, EnableRequest_InvalidArgs) { */ TEST_P(WifiNanIfaceAidlTest, ConfigRequest_InvalidArgs) { uint16_t inputCmdId = 10; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; NanConfigRequest nanConfigRequest = {}; NanConfigRequestSupplemental nanConfigRequestSupp = {}; auto status = @@ -520,7 +479,7 @@ TEST_P(WifiNanIfaceAidlTest, ConfigRequest_InvalidArgs) { // Wait for a callback. ASSERT_EQ(std::cv_status::no_timeout, wait(NOTIFY_CONFIG_RESPONSE)); - ASSERT_EQ(NOTIFY_CONFIG_RESPONSE, callback_type_); + ASSERT_TRUE(receivedCallback(NOTIFY_CONFIG_RESPONSE)); ASSERT_EQ(id_, inputCmdId); ASSERT_EQ(status_.status, NanStatusCode::INVALID_ARGS); } @@ -561,12 +520,12 @@ TEST_P(WifiNanIfaceAidlTest, ConfigRequest_InvalidShimArgs) { */ TEST_P(WifiNanIfaceAidlTest, NotifyCapabilitiesResponse) { uint16_t inputCmdId = 10; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; EXPECT_TRUE(wifi_nan_iface_->getCapabilitiesRequest(inputCmdId).isOk()); // Wait for a callback. ASSERT_EQ(std::cv_status::no_timeout, wait(NOTIFY_CAPABILITIES_RESPONSE)); - ASSERT_EQ(NOTIFY_CAPABILITIES_RESPONSE, callback_type_); + ASSERT_TRUE(receivedCallback(NOTIFY_CAPABILITIES_RESPONSE)); ASSERT_EQ(id_, inputCmdId); ASSERT_EQ(status_.status, NanStatusCode::SUCCESS); @@ -654,14 +613,14 @@ TEST_P(WifiNanIfaceAidlTest, StartPublishRequest) { nanConfigRequestSupp.numberOfSpatialStreamsInDiscovery = 0; nanConfigRequestSupp.enableDiscoveryWindowEarlyTermination = false; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; auto status = wifi_nan_iface_->enableRequest(inputCmdId, req, nanConfigRequestSupp); if (!checkStatusCode(&status, WifiStatusCode::ERROR_NOT_SUPPORTED)) { ASSERT_TRUE(status.isOk()); // Wait for a callback. ASSERT_EQ(std::cv_status::no_timeout, wait(NOTIFY_ENABLE_RESPONSE)); - ASSERT_EQ(NOTIFY_ENABLE_RESPONSE, callback_type_); + ASSERT_TRUE(receivedCallback(NOTIFY_ENABLE_RESPONSE)); ASSERT_EQ(id_, inputCmdId); ASSERT_EQ(status_.status, NanStatusCode::SUCCESS); } @@ -688,7 +647,7 @@ TEST_P(WifiNanIfaceAidlTest, StartPublishRequest) { // Wait for a callback. ASSERT_EQ(std::cv_status::no_timeout, wait(NOTIFY_START_PUBLISH_RESPONSE)); - ASSERT_EQ(NOTIFY_START_PUBLISH_RESPONSE, callback_type_); + ASSERT_TRUE(receivedCallback(NOTIFY_START_PUBLISH_RESPONSE)); ASSERT_EQ(id_, inputCmdId + 1); ASSERT_EQ(status_.status, NanStatusCode::SUCCESS); } @@ -699,7 +658,7 @@ TEST_P(WifiNanIfaceAidlTest, StartPublishRequest) { */ TEST_P(WifiNanIfaceAidlTest, RespondToDataPathIndicationRequest_InvalidArgs) { uint16_t inputCmdId = 10; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; NanRespondToDataPathIndicationRequest nanRespondToDataPathIndicationRequest = {}; nanRespondToDataPathIndicationRequest.ifaceName = "AwareInterfaceNameTooLong"; auto status = wifi_nan_iface_->respondToDataPathIndicationRequest( @@ -716,7 +675,7 @@ TEST_P(WifiNanIfaceAidlTest, RespondToDataPathIndicationRequest_InvalidArgs) { */ TEST_P(WifiNanIfaceAidlTest, InitiateDataPathRequest_InvalidArgs) { uint16_t inputCmdId = 10; - callback_type_ = INVALID; + callback_event_bitmap_ = 0; NanInitiateDataPathRequest nanInitiateDataPathRequest = {}; nanInitiateDataPathRequest.ifaceName = "AwareInterfaceNameTooLong"; auto status = wifi_nan_iface_->initiateDataPathRequest(inputCmdId, nanInitiateDataPathRequest); |