blob: 993757021c12ca3b277fb68e33d7d811830edfc7 [file] [log] [blame]
Yu Shan726d51a2022-02-22 17:37:21 -08001/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#define LOG_TAG "VtsHalAutomotiveVehicle"
18
19#include <IVhalClient.h>
20#include <VehicleHalTypes.h>
21#include <VehicleUtils.h>
Yu Shanf3698fd2023-12-18 12:29:00 -080022#include <VersionForVehicleProperty.h>
Yu Shan726d51a2022-02-22 17:37:21 -080023#include <aidl/Gtest.h>
24#include <aidl/Vintf.h>
25#include <aidl/android/hardware/automotive/vehicle/IVehicle.h>
26#include <android-base/stringprintf.h>
27#include <android-base/thread_annotations.h>
28#include <android/binder_process.h>
Yu Shanf3698fd2023-12-18 12:29:00 -080029#include <gmock/gmock.h>
Yu Shan726d51a2022-02-22 17:37:21 -080030#include <gtest/gtest.h>
31#include <hidl/GtestPrinter.h>
32#include <hidl/ServiceManagement.h>
33#include <inttypes.h>
34#include <utils/Log.h>
Yu Shan4569ef52022-03-18 14:34:25 -070035#include <utils/SystemClock.h>
Yu Shan726d51a2022-02-22 17:37:21 -080036
37#include <chrono>
38#include <mutex>
39#include <unordered_map>
40#include <unordered_set>
41#include <vector>
42
43using ::aidl::android::hardware::automotive::vehicle::IVehicle;
44using ::aidl::android::hardware::automotive::vehicle::StatusCode;
45using ::aidl::android::hardware::automotive::vehicle::SubscribeOptions;
46using ::aidl::android::hardware::automotive::vehicle::VehicleArea;
47using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
48using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
Aaqib Ismail20486702022-10-27 16:58:50 -070049using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
50using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyGroup;
Yu Shanead15a22024-01-24 16:14:21 -080051using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyStatus;
Yu Shan726d51a2022-02-22 17:37:21 -080052using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyType;
Yu Shanf3698fd2023-12-18 12:29:00 -080053using ::aidl::android::hardware::automotive::vehicle::VersionForVehicleProperty;
Yu Shan726d51a2022-02-22 17:37:21 -080054using ::android::getAidlHalInstanceNames;
Yu Shanead15a22024-01-24 16:14:21 -080055using ::android::uptimeMillis;
Yu Shan726d51a2022-02-22 17:37:21 -080056using ::android::base::ScopedLockAssertion;
57using ::android::base::StringPrintf;
Chen Chengfaf9adc2022-06-22 23:09:09 +000058using ::android::frameworks::automotive::vhal::ErrorCode;
Yu Shan726d51a2022-02-22 17:37:21 -080059using ::android::frameworks::automotive::vhal::HalPropError;
60using ::android::frameworks::automotive::vhal::IHalPropConfig;
61using ::android::frameworks::automotive::vhal::IHalPropValue;
62using ::android::frameworks::automotive::vhal::ISubscriptionCallback;
63using ::android::frameworks::automotive::vhal::IVhalClient;
Yu Shanead15a22024-01-24 16:14:21 -080064using ::android::frameworks::automotive::vhal::VhalClientResult;
Yu Shan726d51a2022-02-22 17:37:21 -080065using ::android::hardware::getAllHalInstanceNames;
66using ::android::hardware::Sanitize;
Yu Shanf3698fd2023-12-18 12:29:00 -080067using ::android::hardware::automotive::vehicle::isSystemProp;
68using ::android::hardware::automotive::vehicle::propIdToString;
Yu Shan726d51a2022-02-22 17:37:21 -080069using ::android::hardware::automotive::vehicle::toInt;
Yu Shanf3698fd2023-12-18 12:29:00 -080070using ::testing::Ge;
Yu Shan726d51a2022-02-22 17:37:21 -080071
72constexpr int32_t kInvalidProp = 0x31600207;
Yu Shanead15a22024-01-24 16:14:21 -080073// The timeout for retrying getting prop value after setting prop value.
74constexpr int64_t kRetryGetPropAfterSetPropTimeoutMillis = 10'000;
Yu Shan726d51a2022-02-22 17:37:21 -080075
76struct ServiceDescriptor {
77 std::string name;
78 bool isAidlService;
79};
80
81class VtsVehicleCallback final : public ISubscriptionCallback {
82 private:
83 std::mutex mLock;
84 std::unordered_map<int32_t, size_t> mEventsCount GUARDED_BY(mLock);
Yu Shan4569ef52022-03-18 14:34:25 -070085 std::unordered_map<int32_t, std::vector<int64_t>> mEventTimestamps GUARDED_BY(mLock);
Yu Shan726d51a2022-02-22 17:37:21 -080086 std::condition_variable mEventCond;
87
88 public:
89 void onPropertyEvent(const std::vector<std::unique_ptr<IHalPropValue>>& values) override {
90 {
91 std::lock_guard<std::mutex> lockGuard(mLock);
92 for (auto& value : values) {
Yu Shan4569ef52022-03-18 14:34:25 -070093 int32_t propId = value->getPropId();
94 mEventsCount[propId] += 1;
95 mEventTimestamps[propId].push_back(value->getTimestamp());
Yu Shan726d51a2022-02-22 17:37:21 -080096 }
97 }
98 mEventCond.notify_one();
99 }
100
101 void onPropertySetError([[maybe_unused]] const std::vector<HalPropError>& errors) override {
102 // Do nothing.
103 }
104
105 template <class Rep, class Period>
106 bool waitForExpectedEvents(int32_t propId, size_t expectedEvents,
107 const std::chrono::duration<Rep, Period>& timeout) {
108 std::unique_lock<std::mutex> uniqueLock(mLock);
109 return mEventCond.wait_for(uniqueLock, timeout, [this, propId, expectedEvents] {
110 ScopedLockAssertion lockAssertion(mLock);
111 return mEventsCount[propId] >= expectedEvents;
112 });
113 }
114
Yu Shan4569ef52022-03-18 14:34:25 -0700115 std::vector<int64_t> getEventTimestamps(int32_t propId) {
116 {
117 std::lock_guard<std::mutex> lockGuard(mLock);
118 return mEventTimestamps[propId];
119 }
120 }
121
Yu Shan726d51a2022-02-22 17:37:21 -0800122 void reset() {
123 std::lock_guard<std::mutex> lockGuard(mLock);
124 mEventsCount.clear();
125 }
126};
127
128class VtsHalAutomotiveVehicleTargetTest : public testing::TestWithParam<ServiceDescriptor> {
Yu Shanec5d5b02023-10-09 14:43:36 -0700129 protected:
Yu Shan0ebd8762023-10-11 11:31:04 -0700130 bool checkIsSupported(int32_t propertyId);
Yu Shanec5d5b02023-10-09 14:43:36 -0700131
Yu Shanead15a22024-01-24 16:14:21 -0800132 static bool isUnavailable(const VhalClientResult<std::unique_ptr<IHalPropValue>>& result);
133 static bool isResultOkayWithValue(
134 const VhalClientResult<std::unique_ptr<IHalPropValue>>& result, int32_t value);
135
Yu Shan726d51a2022-02-22 17:37:21 -0800136 public:
Aaqib Ismail20486702022-10-27 16:58:50 -0700137 void verifyProperty(VehicleProperty propId, VehiclePropertyAccess access,
138 VehiclePropertyChangeMode changeMode, VehiclePropertyGroup group,
139 VehicleArea area, VehiclePropertyType propertyType);
Yu Shan726d51a2022-02-22 17:37:21 -0800140 virtual void SetUp() override {
141 auto descriptor = GetParam();
142 if (descriptor.isAidlService) {
143 mVhalClient = IVhalClient::tryCreateAidlClient(descriptor.name.c_str());
144 } else {
145 mVhalClient = IVhalClient::tryCreateHidlClient(descriptor.name.c_str());
146 }
147
148 ASSERT_NE(mVhalClient, nullptr) << "Failed to connect to VHAL";
149
150 mCallback = std::make_shared<VtsVehicleCallback>();
151 }
152
153 static bool isBooleanGlobalProp(int32_t property) {
154 return (property & toInt(VehiclePropertyType::MASK)) ==
155 toInt(VehiclePropertyType::BOOLEAN) &&
156 (property & toInt(VehicleArea::MASK)) == toInt(VehicleArea::GLOBAL);
157 }
158
159 protected:
160 std::shared_ptr<IVhalClient> mVhalClient;
161 std::shared_ptr<VtsVehicleCallback> mCallback;
162};
163
164TEST_P(VtsHalAutomotiveVehicleTargetTest, useAidlBackend) {
165 if (!mVhalClient->isAidlVhal()) {
166 GTEST_SKIP() << "AIDL backend is not available, HIDL backend is used instead";
167 }
168}
169
170TEST_P(VtsHalAutomotiveVehicleTargetTest, useHidlBackend) {
171 if (mVhalClient->isAidlVhal()) {
172 GTEST_SKIP() << "AIDL backend is available, HIDL backend is not used";
173 }
174}
175
Yu Shanec5d5b02023-10-09 14:43:36 -0700176// Test getAllPropConfigs() returns at least 1 property configs.
Yu Shan726d51a2022-02-22 17:37:21 -0800177TEST_P(VtsHalAutomotiveVehicleTargetTest, getAllPropConfigs) {
178 ALOGD("VtsHalAutomotiveVehicleTargetTest::getAllPropConfigs");
179
180 auto result = mVhalClient->getAllPropConfigs();
181
182 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
183 << result.error().message();
Yu Shanec5d5b02023-10-09 14:43:36 -0700184 ASSERT_GE(result.value().size(), 1u) << StringPrintf(
185 "Expect to get at least 1 property config, got %zu", result.value().size());
Yu Shan726d51a2022-02-22 17:37:21 -0800186}
187
Yu Shanec5d5b02023-10-09 14:43:36 -0700188// Test getPropConfigs() can query properties returned by getAllPropConfigs.
189TEST_P(VtsHalAutomotiveVehicleTargetTest, getPropConfigsWithValidProps) {
Yu Shan726d51a2022-02-22 17:37:21 -0800190 ALOGD("VtsHalAutomotiveVehicleTargetTest::getRequiredPropConfigs");
191
Yu Shanec5d5b02023-10-09 14:43:36 -0700192 std::vector<int32_t> properties;
193 auto result = mVhalClient->getAllPropConfigs();
Yu Shan726d51a2022-02-22 17:37:21 -0800194
Yu Shanec5d5b02023-10-09 14:43:36 -0700195 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
196 << result.error().message();
197 for (const auto& cfgPtr : result.value()) {
198 properties.push_back(cfgPtr->getPropId());
199 }
200
201 result = mVhalClient->getPropConfigs(properties);
Yu Shan726d51a2022-02-22 17:37:21 -0800202
203 ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: "
204 << result.error().message();
Yu Shanec5d5b02023-10-09 14:43:36 -0700205 ASSERT_EQ(result.value().size(), properties.size()) << StringPrintf(
206 "Expect to get exactly %zu configs, got %zu", properties.size(), result.value().size());
Yu Shan726d51a2022-02-22 17:37:21 -0800207}
208
209// Test getPropConfig() with an invalid propertyId returns an error code.
210TEST_P(VtsHalAutomotiveVehicleTargetTest, getPropConfigsWithInvalidProp) {
211 ALOGD("VtsHalAutomotiveVehicleTargetTest::getPropConfigsWithInvalidProp");
212
213 auto result = mVhalClient->getPropConfigs({kInvalidProp});
214
215 ASSERT_FALSE(result.ok()) << StringPrintf(
216 "Expect failure to get prop configs for invalid prop: %" PRId32, kInvalidProp);
217 ASSERT_NE(result.error().message(), "") << "Expect error message not to be empty";
218}
219
Yu Shanf3698fd2023-12-18 12:29:00 -0800220// Test system property IDs returned by getPropConfigs() are defined in the VHAL property interface.
221TEST_P(VtsHalAutomotiveVehicleTargetTest, testPropConfigs_onlyDefinedSystemPropertyIdsReturned) {
222 if (!mVhalClient->isAidlVhal()) {
223 GTEST_SKIP() << "Skip for HIDL VHAL because HAL interface run-time version is only"
224 << "introduced for AIDL";
225 }
226
227 auto result = mVhalClient->getAllPropConfigs();
228 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
229 << result.error().message();
230
231 int32_t vhalVersion = mVhalClient->getRemoteInterfaceVersion();
232 const auto& configs = result.value();
233 for (size_t i = 0; i < configs.size(); i++) {
234 int32_t propId = configs[i]->getPropId();
235 if (!isSystemProp(propId)) {
236 continue;
237 }
238
239 std::string propName = propIdToString(propId);
240 auto it = VersionForVehicleProperty.find(static_cast<VehicleProperty>(propId));
241 bool found = (it != VersionForVehicleProperty.end());
242 EXPECT_TRUE(found) << "System Property: " << propName
243 << " is not defined in VHAL property interface";
244 if (!found) {
245 continue;
246 }
247 int32_t requiredVersion = it->second;
248 EXPECT_THAT(vhalVersion, Ge(requiredVersion))
249 << "System Property: " << propName << " requires VHAL version: " << requiredVersion
250 << ", but the current VHAL version"
251 << " is " << vhalVersion << ", must not be supported";
252 }
253}
254
Yu Shan726d51a2022-02-22 17:37:21 -0800255// Test get() return current value for properties.
256TEST_P(VtsHalAutomotiveVehicleTargetTest, get) {
257 ALOGD("VtsHalAutomotiveVehicleTargetTest::get");
258
259 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700260 if (!checkIsSupported(propId)) {
261 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
262 }
Yu Shan726d51a2022-02-22 17:37:21 -0800263 auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
264
265 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
266 ", error: %s",
267 propId, result.error().message().c_str());
268 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
269}
270
271// Test get() with an invalid propertyId return an error codes.
272TEST_P(VtsHalAutomotiveVehicleTargetTest, getInvalidProp) {
273 ALOGD("VtsHalAutomotiveVehicleTargetTest::getInvalidProp");
274
275 auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(kInvalidProp));
276
277 ASSERT_FALSE(result.ok()) << StringPrintf(
278 "Expect failure to get property for invalid prop: %" PRId32, kInvalidProp);
279}
280
Yu Shanead15a22024-01-24 16:14:21 -0800281bool VtsHalAutomotiveVehicleTargetTest::isResultOkayWithValue(
282 const VhalClientResult<std::unique_ptr<IHalPropValue>>& result, int32_t value) {
283 return result.ok() && result.value() != nullptr &&
284 result.value()->getStatus() == VehiclePropertyStatus::AVAILABLE &&
285 result.value()->getInt32Values().size() == 1 &&
286 result.value()->getInt32Values()[0] == value;
287}
288
289bool VtsHalAutomotiveVehicleTargetTest::isUnavailable(
290 const VhalClientResult<std::unique_ptr<IHalPropValue>>& result) {
Yu Shan97770cf2024-01-26 18:25:26 -0800291 if (!result.ok()) {
292 return result.error().code() == ErrorCode::NOT_AVAILABLE_FROM_VHAL;
Yu Shanead15a22024-01-24 16:14:21 -0800293 }
294 if (result.value() != nullptr &&
295 result.value()->getStatus() == VehiclePropertyStatus::UNAVAILABLE) {
296 return true;
297 }
298
299 return false;
300}
301
Yu Shan726d51a2022-02-22 17:37:21 -0800302// Test set() on read_write properties.
303TEST_P(VtsHalAutomotiveVehicleTargetTest, setProp) {
304 ALOGD("VtsHalAutomotiveVehicleTargetTest::setProp");
305
306 // skip hvac related properties
307 std::unordered_set<int32_t> hvacProps = {toInt(VehicleProperty::HVAC_DEFROSTER),
308 toInt(VehicleProperty::HVAC_AC_ON),
309 toInt(VehicleProperty::HVAC_MAX_AC_ON),
310 toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
311 toInt(VehicleProperty::HVAC_RECIRC_ON),
312 toInt(VehicleProperty::HVAC_DUAL_ON),
313 toInt(VehicleProperty::HVAC_AUTO_ON),
314 toInt(VehicleProperty::HVAC_POWER_ON),
315 toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
316 toInt(VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON)};
317 auto result = mVhalClient->getAllPropConfigs();
318 ASSERT_TRUE(result.ok());
319
320 for (const auto& cfgPtr : result.value()) {
321 const IHalPropConfig& cfg = *cfgPtr;
322 int32_t propId = cfg.getPropId();
323 // test on boolean and writable property
324 if (cfg.getAccess() == toInt(VehiclePropertyAccess::READ_WRITE) &&
325 isBooleanGlobalProp(propId) && !hvacProps.count(propId)) {
326 auto propToGet = mVhalClient->createHalPropValue(propId);
327 auto getValueResult = mVhalClient->getValueSync(*propToGet);
328
Yu Shanead15a22024-01-24 16:14:21 -0800329 if (isUnavailable(getValueResult)) {
330 ALOGW("getProperty for %" PRId32
331 " returns NOT_AVAILABLE, "
332 "skip testing setProp",
333 propId);
334 return;
335 }
336
Yu Shan726d51a2022-02-22 17:37:21 -0800337 ASSERT_TRUE(getValueResult.ok())
338 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
339 propId, getValueResult.error().message().c_str());
340 ASSERT_NE(getValueResult.value(), nullptr)
341 << StringPrintf("Result value must not be null for property: %" PRId32, propId);
342
343 const IHalPropValue& value = *getValueResult.value();
344 size_t intValueSize = value.getInt32Values().size();
345 ASSERT_EQ(intValueSize, 1u) << StringPrintf(
346 "Expect exactly 1 int value for boolean property: %" PRId32 ", got %zu", propId,
347 intValueSize);
348
Yu Shanead15a22024-01-24 16:14:21 -0800349 int32_t setValue = value.getInt32Values()[0] == 1 ? 0 : 1;
Yu Shan726d51a2022-02-22 17:37:21 -0800350 auto propToSet = mVhalClient->createHalPropValue(propId);
351 propToSet->setInt32Values({setValue});
352 auto setValueResult = mVhalClient->setValueSync(*propToSet);
353
Yu Shanead15a22024-01-24 16:14:21 -0800354 if (!setValueResult.ok() &&
355 setValueResult.error().code() == ErrorCode::NOT_AVAILABLE_FROM_VHAL) {
356 ALOGW("setProperty for %" PRId32
357 " returns NOT_AVAILABLE, "
358 "skip verifying getProperty returns the same value",
359 propId);
360 return;
361 }
362
Yu Shan726d51a2022-02-22 17:37:21 -0800363 ASSERT_TRUE(setValueResult.ok())
364 << StringPrintf("Failed to set value for property: %" PRId32 ", error: %s",
365 propId, setValueResult.error().message().c_str());
Yu Shanead15a22024-01-24 16:14:21 -0800366 // Retry getting the value until we pass the timeout. getValue might not return
367 // the expected value immediately since setValue is async.
368 auto timeoutMillis = uptimeMillis() + kRetryGetPropAfterSetPropTimeoutMillis;
Yu Shan726d51a2022-02-22 17:37:21 -0800369
Yu Shanead15a22024-01-24 16:14:21 -0800370 while (true) {
371 getValueResult = mVhalClient->getValueSync(*propToGet);
372 if (isResultOkayWithValue(getValueResult, setValue)) {
373 break;
374 }
375 if (uptimeMillis() >= timeoutMillis) {
376 // Reach timeout, the following assert should fail.
377 break;
378 }
379 // Sleep for 100ms between each getValueSync retry.
380 std::this_thread::sleep_for(std::chrono::milliseconds(100));
381 }
382
383 if (isUnavailable(getValueResult)) {
384 ALOGW("getProperty for %" PRId32
385 " returns NOT_AVAILABLE, "
386 "skip verifying the return value",
387 propId);
388 return;
389 }
390
Yu Shan726d51a2022-02-22 17:37:21 -0800391 ASSERT_TRUE(getValueResult.ok())
392 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
393 propId, getValueResult.error().message().c_str());
394 ASSERT_NE(getValueResult.value(), nullptr)
395 << StringPrintf("Result value must not be null for property: %" PRId32, propId);
396 ASSERT_EQ(getValueResult.value()->getInt32Values(), std::vector<int32_t>({setValue}))
397 << StringPrintf("Boolean value not updated after set for property: %" PRId32,
398 propId);
399 }
400 }
401}
402
403// Test set() on an read_only property.
404TEST_P(VtsHalAutomotiveVehicleTargetTest, setNotWritableProp) {
405 ALOGD("VtsHalAutomotiveVehicleTargetTest::setNotWritableProp");
406
407 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700408 if (!checkIsSupported(propId)) {
409 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
410 }
Yu Shanec5d5b02023-10-09 14:43:36 -0700411
Yu Shan726d51a2022-02-22 17:37:21 -0800412 auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
413 ASSERT_TRUE(getValueResult.ok())
414 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s", propId,
415 getValueResult.error().message().c_str());
416
417 auto setValueResult = mVhalClient->setValueSync(*getValueResult.value());
418
419 ASSERT_FALSE(setValueResult.ok()) << "Expect set a read-only value to fail";
Chen Chengfaf9adc2022-06-22 23:09:09 +0000420 ASSERT_EQ(setValueResult.error().code(), ErrorCode::ACCESS_DENIED_FROM_VHAL);
Yu Shan726d51a2022-02-22 17:37:21 -0800421}
422
shrikar8a140232023-03-07 16:57:59 +0000423// Test get(), set() and getAllPropConfigs() on VehicleProperty::INVALID.
424TEST_P(VtsHalAutomotiveVehicleTargetTest, getSetPropertyIdInvalid) {
425 ALOGD("VtsHalAutomotiveVehicleTargetTest::getSetPropertyIdInvalid");
426
427 int32_t propId = toInt(VehicleProperty::INVALID);
428 auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
429 ASSERT_FALSE(getValueResult.ok()) << "Expect get on VehicleProperty::INVALID to fail";
430 ASSERT_EQ(getValueResult.error().code(), ErrorCode::INVALID_ARG);
431
432 auto propToSet = mVhalClient->createHalPropValue(propId);
433 propToSet->setInt32Values({0});
434 auto setValueResult = mVhalClient->setValueSync(*propToSet);
435 ASSERT_FALSE(setValueResult.ok()) << "Expect set on VehicleProperty::INVALID to fail";
436 ASSERT_EQ(setValueResult.error().code(), ErrorCode::INVALID_ARG);
437
438 auto result = mVhalClient->getAllPropConfigs();
439 ASSERT_TRUE(result.ok());
440 for (const auto& cfgPtr : result.value()) {
441 const IHalPropConfig& cfg = *cfgPtr;
442 ASSERT_FALSE(cfg.getPropId() == propId) << "Expect VehicleProperty::INVALID to not be "
443 "included in propConfigs";
444 }
445}
446
Yu Shan726d51a2022-02-22 17:37:21 -0800447// Test subscribe() and unsubscribe().
448TEST_P(VtsHalAutomotiveVehicleTargetTest, subscribeAndUnsubscribe) {
449 ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeAndUnsubscribe");
450
451 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700452 if (!checkIsSupported(propId)) {
453 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
454 }
Yu Shan726d51a2022-02-22 17:37:21 -0800455
Yu Shan4569ef52022-03-18 14:34:25 -0700456 auto propConfigsResult = mVhalClient->getPropConfigs({propId});
457
458 ASSERT_TRUE(propConfigsResult.ok()) << "Failed to get property config for PERF_VEHICLE_SPEED: "
459 << "error: " << propConfigsResult.error().message();
460 ASSERT_EQ(propConfigsResult.value().size(), 1u)
461 << "Expect to return 1 config for PERF_VEHICLE_SPEED";
462 auto& propConfig = propConfigsResult.value()[0];
463 float minSampleRate = propConfig->getMinSampleRate();
464 float maxSampleRate = propConfig->getMaxSampleRate();
465
466 if (minSampleRate < 1) {
467 GTEST_SKIP() << "Sample rate for vehicle speed < 1 times/sec, skip test since it would "
468 "take too long";
469 }
Yu Shan726d51a2022-02-22 17:37:21 -0800470
471 auto client = mVhalClient->getSubscriptionClient(mCallback);
472 ASSERT_NE(client, nullptr) << "Failed to get subscription client";
473
Yu Shan4569ef52022-03-18 14:34:25 -0700474 auto result = client->subscribe({{.propId = propId, .sampleRate = minSampleRate}});
Yu Shan726d51a2022-02-22 17:37:21 -0800475
476 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to subscribe to property: %" PRId32
477 ", error: %s",
478 propId, result.error().message().c_str());
Yu Shan4569ef52022-03-18 14:34:25 -0700479
480 if (mVhalClient->isAidlVhal()) {
481 // Skip checking timestamp for HIDL because the behavior for sample rate and timestamp is
482 // only specified clearly for AIDL.
483
484 // Timeout is 2 seconds, which gives a 1 second buffer.
485 ASSERT_TRUE(mCallback->waitForExpectedEvents(propId, std::floor(minSampleRate),
486 std::chrono::seconds(2)))
487 << "Didn't get enough events for subscribing to minSampleRate";
488 }
489
490 result = client->subscribe({{.propId = propId, .sampleRate = maxSampleRate}});
491
492 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to subscribe to property: %" PRId32
493 ", error: %s",
494 propId, result.error().message().c_str());
495
496 if (mVhalClient->isAidlVhal()) {
497 ASSERT_TRUE(mCallback->waitForExpectedEvents(propId, std::floor(maxSampleRate),
498 std::chrono::seconds(2)))
499 << "Didn't get enough events for subscribing to maxSampleRate";
500
501 std::unordered_set<int64_t> timestamps;
502 // Event event should have a different timestamp.
503 for (const int64_t& eventTimestamp : mCallback->getEventTimestamps(propId)) {
504 ASSERT_TRUE(timestamps.find(eventTimestamp) == timestamps.end())
505 << "two events for the same property must not have the same timestamp";
506 timestamps.insert(eventTimestamp);
507 }
508 }
Yu Shan726d51a2022-02-22 17:37:21 -0800509
510 result = client->unsubscribe({propId});
511 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to unsubscribe to property: %" PRId32
512 ", error: %s",
513 propId, result.error().message().c_str());
514
515 mCallback->reset();
516 ASSERT_FALSE(mCallback->waitForExpectedEvents(propId, 10, std::chrono::seconds(1)))
517 << "Expect not to get events after unsubscription";
518}
519
520// Test subscribe() with an invalid property.
521TEST_P(VtsHalAutomotiveVehicleTargetTest, subscribeInvalidProp) {
522 ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeInvalidProp");
523
524 std::vector<SubscribeOptions> options = {
525 SubscribeOptions{.propId = kInvalidProp, .sampleRate = 10.0}};
526
527 auto client = mVhalClient->getSubscriptionClient(mCallback);
528 ASSERT_NE(client, nullptr) << "Failed to get subscription client";
529
530 auto result = client->subscribe(options);
531
532 ASSERT_FALSE(result.ok()) << StringPrintf("Expect subscribing to property: %" PRId32 " to fail",
533 kInvalidProp);
534}
535
Yu Shan4569ef52022-03-18 14:34:25 -0700536// Test the timestamp returned in GetValues results is the timestamp when the value is retrieved.
537TEST_P(VtsHalAutomotiveVehicleTargetTest, testGetValuesTimestampAIDL) {
538 if (!mVhalClient->isAidlVhal()) {
539 GTEST_SKIP() << "Skip checking timestamp for HIDL because the behavior is only specified "
540 "for AIDL";
541 }
542
543 int32_t propId = toInt(VehicleProperty::PARKING_BRAKE_ON);
Yu Shan0ebd8762023-10-11 11:31:04 -0700544 if (!checkIsSupported(propId)) {
545 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
546 }
Yu Shan4569ef52022-03-18 14:34:25 -0700547 auto prop = mVhalClient->createHalPropValue(propId);
548
549 auto result = mVhalClient->getValueSync(*prop);
550
551 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
552 ", error: %s",
553 propId, result.error().message().c_str());
554 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
555 ASSERT_EQ(result.value()->getInt32Values().size(), 1u) << "Result must contain 1 int value";
556
557 bool parkBrakeOnValue1 = (result.value()->getInt32Values()[0] == 1);
558 int64_t timestampValue1 = result.value()->getTimestamp();
559
560 result = mVhalClient->getValueSync(*prop);
561
562 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
563 ", error: %s",
564 propId, result.error().message().c_str());
565 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
566 ASSERT_EQ(result.value()->getInt32Values().size(), 1u) << "Result must contain 1 int value";
567
568 bool parkBarkeOnValue2 = (result.value()->getInt32Values()[0] == 1);
569 int64_t timestampValue2 = result.value()->getTimestamp();
570
571 if (parkBarkeOnValue2 == parkBrakeOnValue1) {
572 ASSERT_EQ(timestampValue2, timestampValue1)
573 << "getValue result must contain a timestamp updated when the value was updated, if"
574 "the value does not change, expect the same timestamp";
575 } else {
576 ASSERT_GT(timestampValue2, timestampValue1)
577 << "getValue result must contain a timestamp updated when the value was updated, if"
578 "the value changes, expect the newer value has a larger timestamp";
579 }
580}
581
Aaqib Ismail20486702022-10-27 16:58:50 -0700582// Helper function to compare actual vs expected property config
583void VtsHalAutomotiveVehicleTargetTest::verifyProperty(VehicleProperty propId,
584 VehiclePropertyAccess access,
585 VehiclePropertyChangeMode changeMode,
586 VehiclePropertyGroup group, VehicleArea area,
587 VehiclePropertyType propertyType) {
588 int expectedPropId = toInt(propId);
589 int expectedAccess = toInt(access);
590 int expectedChangeMode = toInt(changeMode);
591 int expectedGroup = toInt(group);
592 int expectedArea = toInt(area);
593 int expectedPropertyType = toInt(propertyType);
594
Eva Chen17bc5782023-01-06 22:59:58 -0800595 auto result = mVhalClient->getAllPropConfigs();
596 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
597 << result.error().message();
598
599 // Check if property is implemented by getting all configs and looking to see if the expected
600 // property id is in that list.
601 bool isExpectedPropIdImplemented = false;
602 for (const auto& cfgPtr : result.value()) {
603 const IHalPropConfig& cfg = *cfgPtr;
604 if (expectedPropId == cfg.getPropId()) {
605 isExpectedPropIdImplemented = true;
606 break;
607 }
608 }
609
610 if (!isExpectedPropIdImplemented) {
611 GTEST_SKIP() << StringPrintf("Property %" PRId32 " has not been implemented",
612 expectedPropId);
613 }
614
615 result = mVhalClient->getPropConfigs({expectedPropId});
Aaqib Ismail20486702022-10-27 16:58:50 -0700616 ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: "
617 << result.error().message();
618
Aaqib Ismail20486702022-10-27 16:58:50 -0700619 ASSERT_EQ(result.value().size(), 1u)
620 << StringPrintf("Expect to get exactly 1 config, got %zu", result.value().size());
621
622 const auto& config = result.value().at(0);
623 int actualPropId = config->getPropId();
624 int actualAccess = config->getAccess();
625 int actualChangeMode = config->getChangeMode();
626 int actualGroup = actualPropId & toInt(VehiclePropertyGroup::MASK);
627 int actualArea = actualPropId & toInt(VehicleArea::MASK);
628 int actualPropertyType = actualPropId & toInt(VehiclePropertyType::MASK);
629
630 ASSERT_EQ(actualPropId, expectedPropId)
631 << StringPrintf("Expect to get property ID: %i, got %i", expectedPropId, actualPropId);
632
633 if (expectedAccess == toInt(VehiclePropertyAccess::READ_WRITE)) {
634 ASSERT_TRUE(actualAccess == expectedAccess ||
635 actualAccess == toInt(VehiclePropertyAccess::READ))
636 << StringPrintf("Expect to get VehiclePropertyAccess: %i or %i, got %i",
637 expectedAccess, toInt(VehiclePropertyAccess::READ), actualAccess);
638 } else {
639 ASSERT_EQ(actualAccess, expectedAccess) << StringPrintf(
640 "Expect to get VehiclePropertyAccess: %i, got %i", expectedAccess, actualAccess);
641 }
642
643 ASSERT_EQ(actualChangeMode, expectedChangeMode)
644 << StringPrintf("Expect to get VehiclePropertyChangeMode: %i, got %i",
645 expectedChangeMode, actualChangeMode);
646 ASSERT_EQ(actualGroup, expectedGroup) << StringPrintf(
647 "Expect to get VehiclePropertyGroup: %i, got %i", expectedGroup, actualGroup);
648 ASSERT_EQ(actualArea, expectedArea)
649 << StringPrintf("Expect to get VehicleArea: %i, got %i", expectedArea, actualArea);
650 ASSERT_EQ(actualPropertyType, expectedPropertyType)
651 << StringPrintf("Expect to get VehiclePropertyType: %i, got %i", expectedPropertyType,
652 actualPropertyType);
653}
654
shrikar34563642023-02-14 02:57:17 +0000655TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLocationCharacterizationConfig) {
656 verifyProperty(VehicleProperty::LOCATION_CHARACTERIZATION, VehiclePropertyAccess::READ,
657 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
658 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
659}
660
Eva Chen544b24b2023-12-05 00:13:53 -0800661TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorPositionConfig) {
662 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_POSITION, VehiclePropertyAccess::READ,
663 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
664 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
665}
666
Eva Chen9e226e52023-12-06 00:23:18 -0800667TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorOrientationConfig) {
668 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_ORIENTATION, VehiclePropertyAccess::READ,
669 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
Eva Chen8818f192024-01-25 18:21:43 -0800670 VehicleArea::VENDOR, VehiclePropertyType::FLOAT_VEC);
Eva Chen9e226e52023-12-06 00:23:18 -0800671}
672
Eva Chen727aa3f2023-12-06 01:13:29 -0800673TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorFieldOfViewConfig) {
674 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_FIELD_OF_VIEW, VehiclePropertyAccess::READ,
675 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
676 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
677}
678
Eva Chen968bf442023-12-06 01:21:51 -0800679TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorDetectionRangeConfig) {
680 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_DETECTION_RANGE, VehiclePropertyAccess::READ,
681 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
682 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
683}
684
Eva Chendf05df52023-12-06 01:42:55 -0800685TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorSupportedRangesConfig) {
686 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_SUPPORTED_RANGES,
687 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::STATIC,
688 VehiclePropertyGroup::SYSTEM, VehicleArea::VENDOR,
689 VehiclePropertyType::INT32_VEC);
690}
691
Eva Chen75661732023-12-06 01:51:40 -0800692TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorMeasuredDistanceConfig) {
693 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_MEASURED_DISTANCE,
694 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::CONTINUOUS,
695 VehiclePropertyGroup::SYSTEM, VehicleArea::VENDOR,
696 VehiclePropertyType::INT32_VEC);
697}
698
shrikar668df362022-12-20 22:08:17 +0000699TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEmergencyLaneKeepAssistEnabledConfig) {
700 verifyProperty(VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_ENABLED,
701 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
702 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
703}
704
shrikar80cc0c52023-01-30 16:56:53 +0000705TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEmergencyLaneKeepAssistStateConfig) {
706 verifyProperty(VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_STATE, VehiclePropertyAccess::READ,
707 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
708 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
709}
710
shrikar5d1b8162023-01-25 19:31:23 +0000711TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlEnabledConfig) {
712 verifyProperty(VehicleProperty::CRUISE_CONTROL_ENABLED, VehiclePropertyAccess::READ_WRITE,
713 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
714 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
shrikar808a2942022-12-21 17:07:32 +0000715}
716
shrikard440ed42023-01-31 00:25:14 +0000717TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlTypeConfig) {
718 verifyProperty(VehicleProperty::CRUISE_CONTROL_TYPE, VehiclePropertyAccess::READ_WRITE,
719 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
720 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
721}
722
shrikar2753b9e2023-01-31 00:25:14 +0000723TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlStateConfig) {
724 verifyProperty(VehicleProperty::CRUISE_CONTROL_STATE, VehiclePropertyAccess::READ,
725 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
726 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
727}
728
shrikar5df0f952023-02-02 00:15:39 +0000729TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlCommandConfig) {
730 verifyProperty(VehicleProperty::CRUISE_CONTROL_COMMAND, VehiclePropertyAccess::WRITE,
731 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
732 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
733}
734
shrikarfde8c242023-02-02 01:10:33 +0000735TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlTargetSpeedConfig) {
736 verifyProperty(VehicleProperty::CRUISE_CONTROL_TARGET_SPEED, VehiclePropertyAccess::READ,
737 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
738 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
739}
740
shrikarb9661d32023-02-02 19:22:50 +0000741TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAdaptiveCruiseControlTargetTimeGapConfig) {
742 verifyProperty(VehicleProperty::ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP,
743 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
744 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
745}
746
shrikarf62d7472023-02-03 00:20:04 +0000747TEST_P(VtsHalAutomotiveVehicleTargetTest,
748 verifyAdaptiveCruiseControlLeadVehicleMeasuredDistanceConfig) {
749 verifyProperty(VehicleProperty::ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE,
750 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::CONTINUOUS,
751 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
752}
753
shrikar37833e12022-12-15 20:13:14 +0000754TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionEnabledConfig) {
755 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_ENABLED, VehiclePropertyAccess::READ_WRITE,
756 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
757 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
758}
759
shrikar6d88bf52023-01-17 17:04:21 +0000760TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionDriverStateConfig) {
761 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_DRIVER_STATE, VehiclePropertyAccess::READ,
762 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
763 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
764}
765
shrikara6785992023-01-18 23:07:06 +0000766TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionWarningConfig) {
767 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_WARNING, VehiclePropertyAccess::READ,
768 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
769 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
770}
771
Eva Chenbbb7b6d2023-11-21 00:07:14 -0800772TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionSystemEnabledConfig) {
773 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED,
774 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
775 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
776}
777
Eva Chen9f1d8c02023-11-28 16:50:14 -0800778TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionStateConfig) {
779 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_STATE, VehiclePropertyAccess::READ,
780 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
781 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
782}
783
Eva Chen6ec790b2023-12-01 23:37:29 -0800784TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionWarningEnabledConfig) {
785 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED,
786 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
787 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
788}
789
Eva Chen05c548c2023-12-02 01:20:10 -0800790TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionWarningConfig) {
791 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING,
792 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
793 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
794}
795
Eva Chen51770b02023-12-02 15:27:31 -0800796TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionSystemEnabledConfig) {
797 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_SYSTEM_ENABLED,
798 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
799 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
800}
801
Eva Chena342b722023-12-04 00:40:45 -0800802TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionStateConfig) {
803 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_STATE, VehiclePropertyAccess::READ,
804 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
805 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
806}
807
Eva Chenc62166e2023-12-04 02:17:36 -0800808TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionWarningEnabledConfig) {
809 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_WARNING_ENABLED,
810 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
811 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
812}
813
Eva Chen9a0925e2023-12-04 03:52:23 -0800814TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionWarningConfig) {
815 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_WARNING, VehiclePropertyAccess::READ,
816 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
817 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
818}
819
Aaqib Ismailc69e9682022-11-22 12:50:00 -0800820TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvBrakeRegenerationLevelConfig) {
821 verifyProperty(VehicleProperty::EV_BRAKE_REGENERATION_LEVEL,
822 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
823 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
824}
825
shrikar2dae80f2022-12-21 23:50:17 +0000826TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvStoppingModeConfig) {
827 verifyProperty(VehicleProperty::EV_STOPPING_MODE, VehiclePropertyAccess::READ_WRITE,
828 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
829 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
830}
831
Aaqib Ismailaec678a2022-12-07 16:22:42 -0800832TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvCurrentBatteryCapacityConfig) {
833 verifyProperty(VehicleProperty::EV_CURRENT_BATTERY_CAPACITY, VehiclePropertyAccess::READ,
834 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
835 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
836}
837
shrikar83914472022-12-16 20:28:47 +0000838TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEngineIdleAutoStopEnabledConfig) {
839 verifyProperty(VehicleProperty::ENGINE_IDLE_AUTO_STOP_ENABLED,
840 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
841 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
842}
843
Aaqib Ismail20486702022-10-27 16:58:50 -0700844TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDoorChildLockEnabledConfig) {
845 verifyProperty(VehicleProperty::DOOR_CHILD_LOCK_ENABLED, VehiclePropertyAccess::READ_WRITE,
846 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
847 VehicleArea::DOOR, VehiclePropertyType::BOOLEAN);
848}
849
Aaqib Ismail63d52d12023-01-30 12:35:10 -0800850TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersPeriodConfig) {
851 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_PERIOD, VehiclePropertyAccess::READ,
852 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
853 VehicleArea::WINDOW, VehiclePropertyType::INT32);
854}
855
Aaqib Ismail732a1d72023-01-31 10:25:45 -0800856TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersStateConfig) {
857 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_STATE, VehiclePropertyAccess::READ,
858 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
859 VehicleArea::WINDOW, VehiclePropertyType::INT32);
860}
861
Aaqib Ismailc37a2112023-02-02 11:30:08 -0800862TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersSwitchConfig) {
863 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_SWITCH, VehiclePropertyAccess::READ_WRITE,
864 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
865 VehicleArea::WINDOW, VehiclePropertyType::INT32);
866}
867
Aaqib Ismail7f941b42022-11-04 14:55:13 -0700868TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelDepthPosConfig) {
869 verifyProperty(VehicleProperty::STEERING_WHEEL_DEPTH_POS, VehiclePropertyAccess::READ_WRITE,
870 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
871 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
872}
873
Aaqib Ismail34fe92f2022-11-04 21:41:23 -0700874TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelDepthMoveConfig) {
875 verifyProperty(VehicleProperty::STEERING_WHEEL_DEPTH_MOVE, VehiclePropertyAccess::READ_WRITE,
876 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
877 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
878}
879
Aaqib Ismail53b81c92022-11-07 17:47:04 -0800880TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelHeightPosConfig) {
881 verifyProperty(VehicleProperty::STEERING_WHEEL_HEIGHT_POS, VehiclePropertyAccess::READ_WRITE,
882 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
883 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
884}
885
Aaqib Ismail6c4bf192022-11-08 15:00:32 -0800886TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelHeightMoveConfig) {
887 verifyProperty(VehicleProperty::STEERING_WHEEL_HEIGHT_MOVE, VehiclePropertyAccess::READ_WRITE,
888 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
889 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
890}
891
Aaqib Ismail8d051182022-11-09 13:28:48 -0800892TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelTheftLockEnabledConfig) {
893 verifyProperty(VehicleProperty::STEERING_WHEEL_THEFT_LOCK_ENABLED,
894 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
895 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
896}
897
Aaqib Ismail68d3f122022-11-09 14:43:32 -0800898TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLockedConfig) {
899 verifyProperty(VehicleProperty::STEERING_WHEEL_LOCKED, VehiclePropertyAccess::READ_WRITE,
900 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
901 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
902}
903
Aaqib Ismaild4d6adf2022-11-09 16:59:47 -0800904TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelEasyAccessEnabledConfig) {
905 verifyProperty(VehicleProperty::STEERING_WHEEL_EASY_ACCESS_ENABLED,
906 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
907 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
908}
909
Aaqib Ismail0dc7ba02022-11-10 14:28:09 -0800910TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLightsStateConfig) {
911 verifyProperty(VehicleProperty::STEERING_WHEEL_LIGHTS_STATE, VehiclePropertyAccess::READ,
912 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
913 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
914}
915
Aaqib Ismail4b8688f2022-11-15 15:13:35 -0800916TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLightsSwitchConfig) {
917 verifyProperty(VehicleProperty::STEERING_WHEEL_LIGHTS_SWITCH, VehiclePropertyAccess::READ_WRITE,
918 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
919 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
920}
921
Arati Gerdesd86c7fd2022-12-19 12:32:29 -0800922TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyGloveBoxDoorPosConfig) {
923 verifyProperty(VehicleProperty::GLOVE_BOX_DOOR_POS, VehiclePropertyAccess::READ_WRITE,
924 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
925 VehicleArea::SEAT, VehiclePropertyType::INT32);
926}
927
Aaqib Ismail57be4032023-02-02 14:15:03 -0800928TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyGloveBoxLockedConfig) {
929 verifyProperty(VehicleProperty::GLOVE_BOX_LOCKED, VehiclePropertyAccess::READ_WRITE,
930 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
931 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
932}
933
shrikara1367212022-11-02 16:07:35 +0000934TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyMirrorAutoFoldEnabledConfig) {
935 verifyProperty(VehicleProperty::MIRROR_AUTO_FOLD_ENABLED, VehiclePropertyAccess::READ_WRITE,
936 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
937 VehicleArea::MIRROR, VehiclePropertyType::BOOLEAN);
938}
939
940TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyMirrorAutoTiltEnabledConfig) {
941 verifyProperty(VehicleProperty::MIRROR_AUTO_TILT_ENABLED, VehiclePropertyAccess::READ_WRITE,
942 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
943 VehicleArea::MIRROR, VehiclePropertyType::BOOLEAN);
944}
945
Aaqib Ismail4e6144c2022-12-15 15:32:18 -0800946TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatHeadrestHeightPosV2Config) {
947 verifyProperty(VehicleProperty::SEAT_HEADREST_HEIGHT_POS_V2, VehiclePropertyAccess::READ_WRITE,
948 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
949 VehicleArea::SEAT, VehiclePropertyType::INT32);
950}
951
shrikar6ae79162022-12-16 03:03:25 +0000952TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatWalkInPosConfig) {
953 verifyProperty(VehicleProperty::SEAT_WALK_IN_POS, VehiclePropertyAccess::READ_WRITE,
954 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
955 VehicleArea::SEAT, VehiclePropertyType::INT32);
956}
957
shrikarfb65ae52022-11-03 23:12:51 +0000958TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatFootwellLightsStateConfig) {
959 verifyProperty(VehicleProperty::SEAT_FOOTWELL_LIGHTS_STATE, VehiclePropertyAccess::READ,
960 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
961 VehicleArea::SEAT, VehiclePropertyType::INT32);
962}
963
shrikar93cf1be2022-11-30 15:00:52 -0800964TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatFootwellLightsSwitchConfig) {
965 verifyProperty(VehicleProperty::SEAT_FOOTWELL_LIGHTS_SWITCH, VehiclePropertyAccess::READ_WRITE,
966 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
967 VehicleArea::SEAT, VehiclePropertyType::INT32);
968}
969
shrikar3326de02022-11-07 23:51:20 +0000970TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatEasyAccessEnabledConfig) {
971 verifyProperty(VehicleProperty::SEAT_EASY_ACCESS_ENABLED, VehiclePropertyAccess::READ_WRITE,
972 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
973 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
974}
975
shrikarb96e3762022-11-08 16:49:58 -0800976TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatAirbagEnabledConfig) {
977 verifyProperty(VehicleProperty::SEAT_AIRBAG_ENABLED, VehiclePropertyAccess::READ_WRITE,
978 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
979 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
980}
981
shrikar802ecb52022-11-09 18:27:06 +0000982TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatCushionSideSupportPosConfig) {
983 verifyProperty(VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_POS,
984 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
985 VehiclePropertyGroup::SYSTEM, VehicleArea::SEAT, VehiclePropertyType::INT32);
986}
987
shrikar1f0ce0d2022-11-11 17:46:06 +0000988TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatCushionSideSupportMoveConfig) {
989 verifyProperty(VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_MOVE,
990 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
991 VehiclePropertyGroup::SYSTEM, VehicleArea::SEAT, VehiclePropertyType::INT32);
992}
993
shrikareff71b22022-11-11 11:02:43 -0800994TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatLumbarVerticalPosConfig) {
995 verifyProperty(VehicleProperty::SEAT_LUMBAR_VERTICAL_POS, VehiclePropertyAccess::READ_WRITE,
996 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
997 VehicleArea::SEAT, VehiclePropertyType::INT32);
998}
999
shrikar2a081c52022-11-11 16:49:58 -08001000TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatLumbarVerticalMoveConfig) {
1001 verifyProperty(VehicleProperty::SEAT_LUMBAR_VERTICAL_MOVE, VehiclePropertyAccess::READ_WRITE,
1002 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1003 VehicleArea::SEAT, VehiclePropertyType::INT32);
1004}
1005
Aaqib Ismail5d53aa32022-12-13 22:30:23 +00001006TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAutomaticEmergencyBrakingEnabledConfig) {
1007 verifyProperty(VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_ENABLED,
1008 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1009 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1010}
1011
Aaqib Ismail28ee23c2023-01-04 23:04:46 -08001012TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAutomaticEmergencyBrakingStateConfig) {
1013 verifyProperty(VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_STATE, VehiclePropertyAccess::READ,
1014 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1015 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1016}
1017
Aaqib Ismaila2513672022-12-15 00:55:27 +00001018TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyForwardCollisionWarningEnabledConfig) {
1019 verifyProperty(VehicleProperty::FORWARD_COLLISION_WARNING_ENABLED,
1020 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1021 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1022}
1023
Aaqib Ismail0a1ab292023-01-19 21:33:56 +00001024TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyForwardCollisionWarningStateConfig) {
1025 verifyProperty(VehicleProperty::FORWARD_COLLISION_WARNING_STATE, VehiclePropertyAccess::READ,
1026 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1027 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1028}
1029
Aaqib Ismail3f7177a2022-12-17 09:20:00 -08001030TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyBlindSpotWarningEnabledConfig) {
1031 verifyProperty(VehicleProperty::BLIND_SPOT_WARNING_ENABLED, VehiclePropertyAccess::READ_WRITE,
1032 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1033 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1034}
1035
Aaqib Ismail5fc97bb2023-01-10 17:07:47 -08001036TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyBlindSpotWarningStateConfig) {
1037 verifyProperty(VehicleProperty::BLIND_SPOT_WARNING_STATE, VehiclePropertyAccess::READ,
1038 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1039 VehicleArea::MIRROR, VehiclePropertyType::INT32);
1040}
1041
Aaqib Ismail7a46cef2022-12-17 10:00:59 -08001042TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneDepartureWarningEnabledConfig) {
1043 verifyProperty(VehicleProperty::LANE_DEPARTURE_WARNING_ENABLED,
1044 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1045 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1046}
1047
Aaqib Ismail8462db52023-01-27 19:59:49 -08001048TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneDepartureWarningStateConfig) {
1049 verifyProperty(VehicleProperty::LANE_DEPARTURE_WARNING_STATE, VehiclePropertyAccess::READ,
1050 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1051 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1052}
1053
Aaqib Ismail20cc66a2022-12-22 05:38:28 -08001054TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneKeepAssistEnabledConfig) {
1055 verifyProperty(VehicleProperty::LANE_KEEP_ASSIST_ENABLED, VehiclePropertyAccess::READ_WRITE,
1056 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1057 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1058}
1059
Aaqib Ismail78db2ca2023-01-10 17:34:28 -08001060TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneKeepAssistStateConfig) {
1061 verifyProperty(VehicleProperty::LANE_KEEP_ASSIST_STATE, VehiclePropertyAccess::READ,
1062 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1063 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1064}
1065
Aaqib Ismailb1680a72022-12-14 23:28:49 +00001066TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistEnabledConfig) {
1067 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_ENABLED,
1068 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1069 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1070}
1071
Aaqib Ismail0ffd39c2023-01-11 12:19:10 -08001072TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistCommandConfig) {
1073 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_COMMAND, VehiclePropertyAccess::WRITE,
1074 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1075 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1076}
1077
Aaqib Ismaildb034442023-01-10 18:14:28 -08001078TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistStateConfig) {
1079 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_STATE, VehiclePropertyAccess::READ,
1080 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1081 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1082}
1083
Yuncheol Heo8fbbfd12023-09-27 15:43:59 -07001084TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyClusterHeartbeatConfig) {
1085 verifyProperty(VehicleProperty::CLUSTER_HEARTBEAT, VehiclePropertyAccess::WRITE,
1086 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1087 VehicleArea::GLOBAL, VehiclePropertyType::MIXED);
1088}
1089
shrikard6f9f8e2023-11-02 22:35:28 +00001090TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyVehicleDrivingAutomationCurrentLevelConfig) {
1091 verifyProperty(VehicleProperty::VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL,
1092 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1093 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1094}
1095
shrikar420b31d2023-11-07 16:15:35 +00001096TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatAirbagsDeployedConfig) {
1097 verifyProperty(VehicleProperty::SEAT_AIRBAGS_DEPLOYED, VehiclePropertyAccess::READ,
1098 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1099 VehicleArea::SEAT, VehiclePropertyType::INT32);
1100}
1101
shrikar7717aa82023-11-07 21:05:46 +00001102TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatBeltPretensionerDeployedConfig) {
1103 verifyProperty(VehicleProperty::SEAT_BELT_PRETENSIONER_DEPLOYED, VehiclePropertyAccess::READ,
1104 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1105 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
1106}
1107
shrikard816e042023-11-08 20:12:55 +00001108TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyImpactDetectedConfig) {
1109 verifyProperty(VehicleProperty::IMPACT_DETECTED, VehiclePropertyAccess::READ,
1110 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1111 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1112}
1113
shrikara492e7d2023-11-09 00:27:54 +00001114TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvBatteryAverageTemperatureConfig) {
1115 verifyProperty(VehicleProperty::EV_BATTERY_AVERAGE_TEMPERATURE, VehiclePropertyAccess::READ,
1116 VehiclePropertyChangeMode::CONTINUOUS, VehiclePropertyGroup::SYSTEM,
1117 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
1118}
1119
shrikar45df34b2023-11-10 21:14:17 +00001120TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedCollisionWarningEnabledConfig) {
1121 verifyProperty(VehicleProperty::LOW_SPEED_COLLISION_WARNING_ENABLED,
1122 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1123 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1124}
1125
shrikar858c4e12023-11-14 17:33:11 +00001126TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedCollisionWarningStateConfig) {
1127 verifyProperty(VehicleProperty::LOW_SPEED_COLLISION_WARNING_STATE, VehiclePropertyAccess::READ,
1128 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1129 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1130}
1131
shrikar84866f72023-11-27 00:30:59 +00001132TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyValetModeEnabledConfig) {
1133 verifyProperty(VehicleProperty::VALET_MODE_ENABLED, VehiclePropertyAccess::READ_WRITE,
1134 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1135 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1136}
1137
shrikar33a33692023-11-30 01:38:01 +00001138TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyElectronicStabilityControlEnabledConfig) {
1139 verifyProperty(VehicleProperty::ELECTRONIC_STABILITY_CONTROL_ENABLED,
1140 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1141 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1142}
1143
shrikara45d1cf2023-11-27 17:40:46 +00001144TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyElectronicStabilityControlStateConfig) {
1145 verifyProperty(VehicleProperty::ELECTRONIC_STABILITY_CONTROL_STATE, VehiclePropertyAccess::READ,
1146 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1147 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1148}
1149
shrikar7fde8f52023-11-27 22:47:53 +00001150TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCrossTrafficMonitoringEnabledConfig) {
1151 verifyProperty(VehicleProperty::CROSS_TRAFFIC_MONITORING_ENABLED,
1152 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1153 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1154}
1155
shrikar813ba7c2023-11-28 18:35:34 +00001156TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCrossTrafficMonitoringWarningStateConfig) {
1157 verifyProperty(VehicleProperty::CROSS_TRAFFIC_MONITORING_WARNING_STATE,
1158 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1159 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1160}
1161
shrikar55559892023-12-01 23:35:06 +00001162TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHeadUpDisplayEnabledConfig) {
1163 verifyProperty(VehicleProperty::HEAD_UP_DISPLAY_ENABLED, VehiclePropertyAccess::READ_WRITE,
1164 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1165 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
1166}
1167
shrikard11b9f82023-12-04 17:39:28 +00001168TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedAutomaticEmergencyBrakingEnabledConfig) {
1169 verifyProperty(VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED,
1170 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1171 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1172}
1173
shrikarbd6ab732023-12-04 19:07:26 +00001174TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedAutomaticEmergencyBrakingStateConfig) {
1175 verifyProperty(VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE,
1176 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1177 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1178}
1179
Yu Shan0ebd8762023-10-11 11:31:04 -07001180bool VtsHalAutomotiveVehicleTargetTest::checkIsSupported(int32_t propertyId) {
Yu Shanec5d5b02023-10-09 14:43:36 -07001181 auto result = mVhalClient->getPropConfigs({propertyId});
Yu Shan0ebd8762023-10-11 11:31:04 -07001182 return result.ok();
Yu Shanec5d5b02023-10-09 14:43:36 -07001183}
1184
Yu Shan726d51a2022-02-22 17:37:21 -08001185std::vector<ServiceDescriptor> getDescriptors() {
1186 std::vector<ServiceDescriptor> descriptors;
1187 for (std::string name : getAidlHalInstanceNames(IVehicle::descriptor)) {
1188 descriptors.push_back({
1189 .name = name,
1190 .isAidlService = true,
1191 });
1192 }
1193 for (std::string name : getAllHalInstanceNames(IVehicle::descriptor)) {
1194 descriptors.push_back({
1195 .name = name,
1196 .isAidlService = false,
1197 });
1198 }
1199 return descriptors;
1200}
1201
1202GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VtsHalAutomotiveVehicleTargetTest);
1203
1204INSTANTIATE_TEST_SUITE_P(PerInstance, VtsHalAutomotiveVehicleTargetTest,
1205 testing::ValuesIn(getDescriptors()),
1206 [](const testing::TestParamInfo<ServiceDescriptor>& info) {
1207 std::string name = "";
1208 if (info.param.isAidlService) {
1209 name += "aidl_";
1210 } else {
1211 name += "hidl_";
1212 }
1213 name += info.param.name;
1214 return Sanitize(name);
1215 });
1216
1217int main(int argc, char** argv) {
1218 ::testing::InitGoogleTest(&argc, argv);
1219 ABinderProcess_setThreadPoolMaxThreadCount(1);
1220 return RUN_ALL_TESTS();
1221}