summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Ishiguro <arthuri@google.com>2022-04-12 15:43:51 +0000
committerArthur Ishiguro <arthuri@google.com>2022-04-12 22:30:02 +0000
commite9cb2933a43f436e4e152f61a28cb0aee1e4bdda (patch)
tree69d80a6e1d2f78cabb5dd575b17240a5208646bb
parent66d00d9bf5345fe5b8a8859245ea1f6770c71195 (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.aidl5
-rw-r--r--sensors/aidl/default/multihal/HalProxyAidl.cpp8
-rw-r--r--sensors/aidl/vts/VtsAidlHalSensorsTargetTest.cpp26
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);