diff options
author | Arthur Ishiguro <arthuri@google.com> | 2022-04-12 15:43:51 +0000 |
---|---|---|
committer | Arthur Ishiguro <arthuri@google.com> | 2022-04-12 22:30:02 +0000 |
commit | e9cb2933a43f436e4e152f61a28cb0aee1e4bdda (patch) | |
tree | 69d80a6e1d2f78cabb5dd575b17240a5208646bb | |
parent | 66d00d9bf5345fe5b8a8859245ea1f6770c71195 (diff) |
Fix AIDL sensors VTS test
- According to the AIDL backends, return values are not propagated
when the status is !ok(). Update the VTS test, HAL implementation,
and ISensors definition to remove the requirement that the
handle is populated to -1 on failure for registerDirectChannel.
- Also update VTS tests for some error code checks to reflect the
actual expecataions according to the ISensors documentation.
Bug: 228645167
Test: VTS passes
Change-Id: I5d4d4d0af3b033b34a58d8462aa40214d89fa442
-rw-r--r-- | sensors/aidl/android/hardware/sensors/ISensors.aidl | 5 | ||||
-rw-r--r-- | sensors/aidl/default/multihal/HalProxyAidl.cpp | 8 | ||||
-rw-r--r-- | sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp | 26 |
3 files changed, 18 insertions, 21 deletions
diff --git a/sensors/aidl/android/hardware/sensors/ISensors.aidl b/sensors/aidl/android/hardware/sensors/ISensors.aidl index 2ac188454b..2c684897cf 100644 --- a/sensors/aidl/android/hardware/sensors/ISensors.aidl +++ b/sensors/aidl/android/hardware/sensors/ISensors.aidl @@ -229,8 +229,7 @@ interface ISensors { * * @param mem shared memory info data structure. * @param out channelHandle The registered channel handle. - * @return The direct channel handle, which is positive if successfully registered, and -1 - * otherwise. + * @return The direct channel handle, which is positive if successfully registered. * @return Status::ok on success * EX_ILLEGAL_ARGUMENT if the shared memory information is not consistent. * EX_UNSUPPORTED_OPERATION if this functionality is unsupported. @@ -245,7 +244,7 @@ interface ISensors { * @see OperationMode * @param mode The operation mode. * @return Status::ok on success - * EX_UNSUPPORTED_OPERATION if requested mode is not supported. + * EX_UNSUPPORTED_OPERATION or EX_ILLEGAL_ARGUMENT if requested mode is not supported. * EX_SECURITY if the operation is not allowed. */ void setOperationMode(in OperationMode mode); diff --git a/sensors/aidl/default/multihal/HalProxyAidl.cpp b/sensors/aidl/default/multihal/HalProxyAidl.cpp index 628914c3e3..e6bcdada52 100644 --- a/sensors/aidl/default/multihal/HalProxyAidl.cpp +++ b/sensors/aidl/default/multihal/HalProxyAidl.cpp @@ -141,10 +141,6 @@ ScopedAStatus HalProxyAidl::configDirectReport(int32_t in_sensorHandle, *_aidl_return = reportToken; }); - if (!status.isOk()) { - *_aidl_return = -1; - } - return status; } @@ -216,10 +212,6 @@ HalProxyAidl::registerDirectChannel(const ISensors::SharedMemInfo &in_mem, native_handle_delete(const_cast<native_handle_t *>( sharedMemInfo.memoryHandle.getNativeHandle())); - if (!status.isOk()) { - *_aidl_return = -1; - } - return status; } diff --git a/sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp b/sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp index 83d0dc97e1..d536e290b2 100644 --- a/sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp +++ b/sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp @@ -599,10 +599,12 @@ TEST_P(SensorsAidlTest, SetOperationMode) { ASSERT_TRUE(getSensors()->setOperationMode(ISensors::OperationMode::DATA_INJECTION).isOk()); ASSERT_TRUE(getSensors()->setOperationMode(ISensors::OperationMode::NORMAL).isOk()); } else { - ASSERT_EQ(getSensors() - ->setOperationMode(ISensors::OperationMode::DATA_INJECTION) - .getExceptionCode(), - EX_UNSUPPORTED_OPERATION); + int errorCode = + getSensors() + ->setOperationMode(ISensors::OperationMode::DATA_INJECTION) + .getExceptionCode(); + ASSERT_TRUE((errorCode == EX_UNSUPPORTED_OPERATION) || + (errorCode == EX_ILLEGAL_ARGUMENT)); } } @@ -938,10 +940,10 @@ void SensorsAidlTest::checkRateLevel(const SensorInfo& sensor, int32_t directCha if (isDirectReportRateSupported(sensor, rateLevel)) { ASSERT_TRUE(status.isOk()); if (rateLevel != ISensors::RateLevel::STOP) { - ASSERT_GT(*reportToken, 0); - } else { - ASSERT_EQ(status.getExceptionCode(), EX_ILLEGAL_ARGUMENT); + ASSERT_GT(*reportToken, 0); } + } else { + ASSERT_EQ(status.getExceptionCode(), EX_ILLEGAL_ARGUMENT); } } @@ -982,11 +984,15 @@ void SensorsAidlTest::verifyRegisterDirectChannel( ::ndk::ScopedAStatus status = registerDirectChannel(mem->getSharedMemInfo(), &channelHandle); if (supportsSharedMemType) { ASSERT_TRUE(status.isOk()); - ASSERT_EQ(channelHandle, 0); + ASSERT_GT(channelHandle, 0); + + // Verify that the memory has been zeroed + for (size_t i = 0; i < mem->getSize(); i++) { + ASSERT_EQ(buffer[i], 0x00); + } } else { int32_t error = supportsAnyDirectChannel ? EX_ILLEGAL_ARGUMENT : EX_UNSUPPORTED_OPERATION; ASSERT_EQ(status.getExceptionCode(), error); - ASSERT_EQ(channelHandle, -1); } *directChannelHandle = channelHandle; } @@ -1038,7 +1044,7 @@ void SensorsAidlTest::verifyConfigure(const SensorInfo& sensor, // Verify that a sensor handle of -1 is only acceptable when using RateLevel::STOP ndk::ScopedAStatus status = configDirectReport(-1 /* sensorHandle */, directChannelHandle, ISensors::RateLevel::NORMAL, &reportToken); - ASSERT_EQ(status.getServiceSpecificError(), android::BAD_VALUE); + ASSERT_EQ(status.getExceptionCode(), EX_ILLEGAL_ARGUMENT); status = configDirectReport(-1 /* sensorHandle */, directChannelHandle, ISensors::RateLevel::STOP, &reportToken); |