Allow CDD required properties to be absent in VTS.

Allow CDD required properties not to be supported in VHAL VTS since
this is already covered in CTS. We also need to consider special
cases where one VHAL instance does not support all required
properties.

Test: atest VtsHalAutomotiveVehicle_TargetTest
Bug: 301577794
Merged-In: I93020e7e024760601bc5a8edf9997cc356a568c6
Change-Id: I93020e7e024760601bc5a8edf9997cc356a568c6
(Cherry-picked from commit b84f6f3c68fcd7f613146146821130eb354865c1)
This commit is contained in:
Yu Shan
2023-10-09 14:43:36 -07:00
parent 13de1b68b4
commit 8a1ab8705d

View File

@@ -115,6 +115,9 @@ class VtsVehicleCallback final : public ISubscriptionCallback {
}; };
class VtsHalAutomotiveVehicleTargetTest : public testing::TestWithParam<ServiceDescriptor> { class VtsHalAutomotiveVehicleTargetTest : public testing::TestWithParam<ServiceDescriptor> {
protected:
bool checkIsSupported(int32_t propertyId);
public: public:
void verifyProperty(VehicleProperty propId, VehiclePropertyAccess access, void verifyProperty(VehicleProperty propId, VehiclePropertyAccess access,
VehiclePropertyChangeMode changeMode, VehiclePropertyGroup group, VehiclePropertyChangeMode changeMode, VehiclePropertyGroup group,
@@ -155,7 +158,7 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, useHidlBackend) {
} }
} }
// Test getAllPropConfig() returns at least 4 property configs. // Test getAllPropConfigs() returns at least 1 property configs.
TEST_P(VtsHalAutomotiveVehicleTargetTest, getAllPropConfigs) { TEST_P(VtsHalAutomotiveVehicleTargetTest, getAllPropConfigs) {
ALOGD("VtsHalAutomotiveVehicleTargetTest::getAllPropConfigs"); ALOGD("VtsHalAutomotiveVehicleTargetTest::getAllPropConfigs");
@@ -163,25 +166,31 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, getAllPropConfigs) {
ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: " ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
<< result.error().message(); << result.error().message();
ASSERT_GE(result.value().size(), 4u) << StringPrintf( ASSERT_GE(result.value().size(), 1u)
"Expect to get at least 4 property configs, got %zu", result.value().size()); << StringPrintf("Expect to get at least 1 property config, got %zu",
result.value().size());
} }
// Test getPropConfigs() can query all properties listed in CDD. // Test getPropConfigs() can query properties returned by getAllPropConfigs.
TEST_P(VtsHalAutomotiveVehicleTargetTest, getRequiredPropConfigs) { TEST_P(VtsHalAutomotiveVehicleTargetTest, getPropConfigsWithValidProps) {
ALOGD("VtsHalAutomotiveVehicleTargetTest::getRequiredPropConfigs"); ALOGD("VtsHalAutomotiveVehicleTargetTest::getRequiredPropConfigs");
// Check the properties listed in CDD std::vector<int32_t> properties;
std::vector<int32_t> properties = { auto result = mVhalClient->getAllPropConfigs();
toInt(VehicleProperty::GEAR_SELECTION), toInt(VehicleProperty::NIGHT_MODE),
toInt(VehicleProperty::PARKING_BRAKE_ON), toInt(VehicleProperty::PERF_VEHICLE_SPEED)};
auto result = mVhalClient->getPropConfigs(properties); ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
<< result.error().message();
for (const auto& cfgPtr : result.value()) {
properties.push_back(cfgPtr->getPropId());
}
result = mVhalClient->getPropConfigs(properties);
ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: " ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: "
<< result.error().message(); << result.error().message();
ASSERT_EQ(result.value().size(), 4u) ASSERT_EQ(result.value().size(), properties.size())
<< StringPrintf("Expect to get exactly 4 configs, got %zu", result.value().size()); << StringPrintf("Expect to get exactly %zu configs, got %zu",
properties.size(), result.value().size());
} }
// Test getPropConfig() with an invalid propertyId returns an error code. // Test getPropConfig() with an invalid propertyId returns an error code.
@@ -200,6 +209,9 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, get) {
ALOGD("VtsHalAutomotiveVehicleTargetTest::get"); ALOGD("VtsHalAutomotiveVehicleTargetTest::get");
int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED); int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
if (!checkIsSupported(propId)) {
GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
}
auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId)); auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
@@ -285,6 +297,10 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, setNotWritableProp) {
ALOGD("VtsHalAutomotiveVehicleTargetTest::setNotWritableProp"); ALOGD("VtsHalAutomotiveVehicleTargetTest::setNotWritableProp");
int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED); int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
if (!checkIsSupported(propId)) {
GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
}
auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId)); auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
ASSERT_TRUE(getValueResult.ok()) ASSERT_TRUE(getValueResult.ok())
<< StringPrintf("Failed to get value for property: %" PRId32 ", error: %s", propId, << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s", propId,
@@ -325,6 +341,9 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, subscribeAndUnsubscribe) {
ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeAndUnsubscribe"); ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeAndUnsubscribe");
int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED); int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
if (!checkIsSupported(propId)) {
GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
}
auto propConfigsResult = mVhalClient->getPropConfigs({propId}); auto propConfigsResult = mVhalClient->getPropConfigs({propId});
@@ -414,6 +433,9 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, testGetValuesTimestampAIDL) {
} }
int32_t propId = toInt(VehicleProperty::PARKING_BRAKE_ON); int32_t propId = toInt(VehicleProperty::PARKING_BRAKE_ON);
if (!checkIsSupported(propId)) {
GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
}
auto prop = mVhalClient->createHalPropValue(propId); auto prop = mVhalClient->createHalPropValue(propId);
auto result = mVhalClient->getValueSync(*prop); auto result = mVhalClient->getValueSync(*prop);
@@ -865,6 +887,11 @@ TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistStateConfig)
VehicleArea::GLOBAL, VehiclePropertyType::INT32); VehicleArea::GLOBAL, VehiclePropertyType::INT32);
} }
bool VtsHalAutomotiveVehicleTargetTest::checkIsSupported(int32_t propertyId) {
auto result = mVhalClient->getPropConfigs({propertyId});
return result.ok();
}
std::vector<ServiceDescriptor> getDescriptors() { std::vector<ServiceDescriptor> getDescriptors() {
std::vector<ServiceDescriptor> descriptors; std::vector<ServiceDescriptor> descriptors;
for (std::string name : getAidlHalInstanceNames(IVehicle::descriptor)) { for (std::string name : getAidlHalInstanceNames(IVehicle::descriptor)) {