blob: b0e44ae64943d63e6d198128de8bbf7f361ed8c4 [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>
22#include <aidl/Gtest.h>
23#include <aidl/Vintf.h>
24#include <aidl/android/hardware/automotive/vehicle/IVehicle.h>
25#include <android-base/stringprintf.h>
26#include <android-base/thread_annotations.h>
27#include <android/binder_process.h>
28#include <gtest/gtest.h>
29#include <hidl/GtestPrinter.h>
30#include <hidl/ServiceManagement.h>
31#include <inttypes.h>
32#include <utils/Log.h>
Yu Shan4569ef52022-03-18 14:34:25 -070033#include <utils/SystemClock.h>
Yu Shan726d51a2022-02-22 17:37:21 -080034
35#include <chrono>
36#include <mutex>
37#include <unordered_map>
38#include <unordered_set>
39#include <vector>
40
41using ::aidl::android::hardware::automotive::vehicle::IVehicle;
42using ::aidl::android::hardware::automotive::vehicle::StatusCode;
43using ::aidl::android::hardware::automotive::vehicle::SubscribeOptions;
44using ::aidl::android::hardware::automotive::vehicle::VehicleArea;
45using ::aidl::android::hardware::automotive::vehicle::VehicleProperty;
46using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyAccess;
Aaqib Ismail20486702022-10-27 16:58:50 -070047using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyChangeMode;
48using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyGroup;
Yu Shan726d51a2022-02-22 17:37:21 -080049using ::aidl::android::hardware::automotive::vehicle::VehiclePropertyType;
50using ::android::getAidlHalInstanceNames;
51using ::android::base::ScopedLockAssertion;
52using ::android::base::StringPrintf;
Chen Chengfaf9adc2022-06-22 23:09:09 +000053using ::android::frameworks::automotive::vhal::ErrorCode;
Yu Shan726d51a2022-02-22 17:37:21 -080054using ::android::frameworks::automotive::vhal::HalPropError;
55using ::android::frameworks::automotive::vhal::IHalPropConfig;
56using ::android::frameworks::automotive::vhal::IHalPropValue;
57using ::android::frameworks::automotive::vhal::ISubscriptionCallback;
58using ::android::frameworks::automotive::vhal::IVhalClient;
59using ::android::hardware::getAllHalInstanceNames;
60using ::android::hardware::Sanitize;
61using ::android::hardware::automotive::vehicle::toInt;
62
63constexpr int32_t kInvalidProp = 0x31600207;
64
65struct ServiceDescriptor {
66 std::string name;
67 bool isAidlService;
68};
69
70class VtsVehicleCallback final : public ISubscriptionCallback {
71 private:
72 std::mutex mLock;
73 std::unordered_map<int32_t, size_t> mEventsCount GUARDED_BY(mLock);
Yu Shan4569ef52022-03-18 14:34:25 -070074 std::unordered_map<int32_t, std::vector<int64_t>> mEventTimestamps GUARDED_BY(mLock);
Yu Shan726d51a2022-02-22 17:37:21 -080075 std::condition_variable mEventCond;
76
77 public:
78 void onPropertyEvent(const std::vector<std::unique_ptr<IHalPropValue>>& values) override {
79 {
80 std::lock_guard<std::mutex> lockGuard(mLock);
81 for (auto& value : values) {
Yu Shan4569ef52022-03-18 14:34:25 -070082 int32_t propId = value->getPropId();
83 mEventsCount[propId] += 1;
84 mEventTimestamps[propId].push_back(value->getTimestamp());
Yu Shan726d51a2022-02-22 17:37:21 -080085 }
86 }
87 mEventCond.notify_one();
88 }
89
90 void onPropertySetError([[maybe_unused]] const std::vector<HalPropError>& errors) override {
91 // Do nothing.
92 }
93
94 template <class Rep, class Period>
95 bool waitForExpectedEvents(int32_t propId, size_t expectedEvents,
96 const std::chrono::duration<Rep, Period>& timeout) {
97 std::unique_lock<std::mutex> uniqueLock(mLock);
98 return mEventCond.wait_for(uniqueLock, timeout, [this, propId, expectedEvents] {
99 ScopedLockAssertion lockAssertion(mLock);
100 return mEventsCount[propId] >= expectedEvents;
101 });
102 }
103
Yu Shan4569ef52022-03-18 14:34:25 -0700104 std::vector<int64_t> getEventTimestamps(int32_t propId) {
105 {
106 std::lock_guard<std::mutex> lockGuard(mLock);
107 return mEventTimestamps[propId];
108 }
109 }
110
Yu Shan726d51a2022-02-22 17:37:21 -0800111 void reset() {
112 std::lock_guard<std::mutex> lockGuard(mLock);
113 mEventsCount.clear();
114 }
115};
116
117class VtsHalAutomotiveVehicleTargetTest : public testing::TestWithParam<ServiceDescriptor> {
Yu Shanec5d5b02023-10-09 14:43:36 -0700118 protected:
Yu Shan0ebd8762023-10-11 11:31:04 -0700119 bool checkIsSupported(int32_t propertyId);
Yu Shanec5d5b02023-10-09 14:43:36 -0700120
Yu Shan726d51a2022-02-22 17:37:21 -0800121 public:
shrikar6a4f3a82023-10-16 18:49:49 +0000122 void verifyAccessMode(int actualAccess, int expectedAccess);
Aaqib Ismail20486702022-10-27 16:58:50 -0700123 void verifyProperty(VehicleProperty propId, VehiclePropertyAccess access,
124 VehiclePropertyChangeMode changeMode, VehiclePropertyGroup group,
125 VehicleArea area, VehiclePropertyType propertyType);
Yu Shan726d51a2022-02-22 17:37:21 -0800126 virtual void SetUp() override {
127 auto descriptor = GetParam();
128 if (descriptor.isAidlService) {
129 mVhalClient = IVhalClient::tryCreateAidlClient(descriptor.name.c_str());
130 } else {
131 mVhalClient = IVhalClient::tryCreateHidlClient(descriptor.name.c_str());
132 }
133
134 ASSERT_NE(mVhalClient, nullptr) << "Failed to connect to VHAL";
135
136 mCallback = std::make_shared<VtsVehicleCallback>();
137 }
138
139 static bool isBooleanGlobalProp(int32_t property) {
140 return (property & toInt(VehiclePropertyType::MASK)) ==
141 toInt(VehiclePropertyType::BOOLEAN) &&
142 (property & toInt(VehicleArea::MASK)) == toInt(VehicleArea::GLOBAL);
143 }
144
145 protected:
146 std::shared_ptr<IVhalClient> mVhalClient;
147 std::shared_ptr<VtsVehicleCallback> mCallback;
148};
149
150TEST_P(VtsHalAutomotiveVehicleTargetTest, useAidlBackend) {
151 if (!mVhalClient->isAidlVhal()) {
152 GTEST_SKIP() << "AIDL backend is not available, HIDL backend is used instead";
153 }
154}
155
156TEST_P(VtsHalAutomotiveVehicleTargetTest, useHidlBackend) {
157 if (mVhalClient->isAidlVhal()) {
158 GTEST_SKIP() << "AIDL backend is available, HIDL backend is not used";
159 }
160}
161
Yu Shanec5d5b02023-10-09 14:43:36 -0700162// Test getAllPropConfigs() returns at least 1 property configs.
Yu Shan726d51a2022-02-22 17:37:21 -0800163TEST_P(VtsHalAutomotiveVehicleTargetTest, getAllPropConfigs) {
164 ALOGD("VtsHalAutomotiveVehicleTargetTest::getAllPropConfigs");
165
166 auto result = mVhalClient->getAllPropConfigs();
167
168 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
169 << result.error().message();
Yu Shanec5d5b02023-10-09 14:43:36 -0700170 ASSERT_GE(result.value().size(), 1u) << StringPrintf(
171 "Expect to get at least 1 property config, got %zu", result.value().size());
Yu Shan726d51a2022-02-22 17:37:21 -0800172}
173
Yu Shanec5d5b02023-10-09 14:43:36 -0700174// Test getPropConfigs() can query properties returned by getAllPropConfigs.
175TEST_P(VtsHalAutomotiveVehicleTargetTest, getPropConfigsWithValidProps) {
Yu Shan726d51a2022-02-22 17:37:21 -0800176 ALOGD("VtsHalAutomotiveVehicleTargetTest::getRequiredPropConfigs");
177
Yu Shanec5d5b02023-10-09 14:43:36 -0700178 std::vector<int32_t> properties;
179 auto result = mVhalClient->getAllPropConfigs();
Yu Shan726d51a2022-02-22 17:37:21 -0800180
Yu Shanec5d5b02023-10-09 14:43:36 -0700181 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
182 << result.error().message();
183 for (const auto& cfgPtr : result.value()) {
184 properties.push_back(cfgPtr->getPropId());
185 }
186
187 result = mVhalClient->getPropConfigs(properties);
Yu Shan726d51a2022-02-22 17:37:21 -0800188
189 ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: "
190 << result.error().message();
Yu Shanec5d5b02023-10-09 14:43:36 -0700191 ASSERT_EQ(result.value().size(), properties.size()) << StringPrintf(
192 "Expect to get exactly %zu configs, got %zu", properties.size(), result.value().size());
Yu Shan726d51a2022-02-22 17:37:21 -0800193}
194
195// Test getPropConfig() with an invalid propertyId returns an error code.
196TEST_P(VtsHalAutomotiveVehicleTargetTest, getPropConfigsWithInvalidProp) {
197 ALOGD("VtsHalAutomotiveVehicleTargetTest::getPropConfigsWithInvalidProp");
198
199 auto result = mVhalClient->getPropConfigs({kInvalidProp});
200
201 ASSERT_FALSE(result.ok()) << StringPrintf(
202 "Expect failure to get prop configs for invalid prop: %" PRId32, kInvalidProp);
203 ASSERT_NE(result.error().message(), "") << "Expect error message not to be empty";
204}
205
206// Test get() return current value for properties.
207TEST_P(VtsHalAutomotiveVehicleTargetTest, get) {
208 ALOGD("VtsHalAutomotiveVehicleTargetTest::get");
209
210 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700211 if (!checkIsSupported(propId)) {
212 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
213 }
Yu Shan726d51a2022-02-22 17:37:21 -0800214 auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
215
216 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
217 ", error: %s",
218 propId, result.error().message().c_str());
219 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
220}
221
222// Test get() with an invalid propertyId return an error codes.
223TEST_P(VtsHalAutomotiveVehicleTargetTest, getInvalidProp) {
224 ALOGD("VtsHalAutomotiveVehicleTargetTest::getInvalidProp");
225
226 auto result = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(kInvalidProp));
227
228 ASSERT_FALSE(result.ok()) << StringPrintf(
229 "Expect failure to get property for invalid prop: %" PRId32, kInvalidProp);
230}
231
232// Test set() on read_write properties.
233TEST_P(VtsHalAutomotiveVehicleTargetTest, setProp) {
234 ALOGD("VtsHalAutomotiveVehicleTargetTest::setProp");
235
236 // skip hvac related properties
237 std::unordered_set<int32_t> hvacProps = {toInt(VehicleProperty::HVAC_DEFROSTER),
238 toInt(VehicleProperty::HVAC_AC_ON),
239 toInt(VehicleProperty::HVAC_MAX_AC_ON),
240 toInt(VehicleProperty::HVAC_MAX_DEFROST_ON),
241 toInt(VehicleProperty::HVAC_RECIRC_ON),
242 toInt(VehicleProperty::HVAC_DUAL_ON),
243 toInt(VehicleProperty::HVAC_AUTO_ON),
244 toInt(VehicleProperty::HVAC_POWER_ON),
245 toInt(VehicleProperty::HVAC_AUTO_RECIRC_ON),
246 toInt(VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON)};
247 auto result = mVhalClient->getAllPropConfigs();
248 ASSERT_TRUE(result.ok());
249
250 for (const auto& cfgPtr : result.value()) {
251 const IHalPropConfig& cfg = *cfgPtr;
252 int32_t propId = cfg.getPropId();
253 // test on boolean and writable property
shrikar6a4f3a82023-10-16 18:49:49 +0000254 bool isReadWrite = (cfg.getAccess() == toInt(VehiclePropertyAccess::READ_WRITE));
255 if (cfg.getAreaConfigSize() != 0 &&
256 cfg.getAreaConfigs()[0]->getAccess() != toInt(VehiclePropertyAccess::NONE)) {
257 isReadWrite = (cfg.getAreaConfigs()[0]->getAccess() ==
258 toInt(VehiclePropertyAccess::READ_WRITE));
259 }
260 if (isReadWrite && isBooleanGlobalProp(propId) && !hvacProps.count(propId)) {
Yu Shan726d51a2022-02-22 17:37:21 -0800261 auto propToGet = mVhalClient->createHalPropValue(propId);
262 auto getValueResult = mVhalClient->getValueSync(*propToGet);
263
264 ASSERT_TRUE(getValueResult.ok())
265 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
266 propId, getValueResult.error().message().c_str());
267 ASSERT_NE(getValueResult.value(), nullptr)
268 << StringPrintf("Result value must not be null for property: %" PRId32, propId);
269
270 const IHalPropValue& value = *getValueResult.value();
271 size_t intValueSize = value.getInt32Values().size();
272 ASSERT_EQ(intValueSize, 1u) << StringPrintf(
273 "Expect exactly 1 int value for boolean property: %" PRId32 ", got %zu", propId,
274 intValueSize);
275
276 int setValue = value.getInt32Values()[0] == 1 ? 0 : 1;
277 auto propToSet = mVhalClient->createHalPropValue(propId);
278 propToSet->setInt32Values({setValue});
279 auto setValueResult = mVhalClient->setValueSync(*propToSet);
280
281 ASSERT_TRUE(setValueResult.ok())
282 << StringPrintf("Failed to set value for property: %" PRId32 ", error: %s",
283 propId, setValueResult.error().message().c_str());
284
285 // check set success
286 getValueResult = mVhalClient->getValueSync(*propToGet);
287 ASSERT_TRUE(getValueResult.ok())
288 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s",
289 propId, getValueResult.error().message().c_str());
290 ASSERT_NE(getValueResult.value(), nullptr)
291 << StringPrintf("Result value must not be null for property: %" PRId32, propId);
292 ASSERT_EQ(getValueResult.value()->getInt32Values(), std::vector<int32_t>({setValue}))
293 << StringPrintf("Boolean value not updated after set for property: %" PRId32,
294 propId);
295 }
296 }
297}
298
299// Test set() on an read_only property.
300TEST_P(VtsHalAutomotiveVehicleTargetTest, setNotWritableProp) {
301 ALOGD("VtsHalAutomotiveVehicleTargetTest::setNotWritableProp");
302
303 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700304 if (!checkIsSupported(propId)) {
305 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
306 }
Yu Shanec5d5b02023-10-09 14:43:36 -0700307
Yu Shan726d51a2022-02-22 17:37:21 -0800308 auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
309 ASSERT_TRUE(getValueResult.ok())
310 << StringPrintf("Failed to get value for property: %" PRId32 ", error: %s", propId,
311 getValueResult.error().message().c_str());
312
313 auto setValueResult = mVhalClient->setValueSync(*getValueResult.value());
314
315 ASSERT_FALSE(setValueResult.ok()) << "Expect set a read-only value to fail";
Chen Chengfaf9adc2022-06-22 23:09:09 +0000316 ASSERT_EQ(setValueResult.error().code(), ErrorCode::ACCESS_DENIED_FROM_VHAL);
Yu Shan726d51a2022-02-22 17:37:21 -0800317}
318
shrikar8a140232023-03-07 16:57:59 +0000319// Test get(), set() and getAllPropConfigs() on VehicleProperty::INVALID.
320TEST_P(VtsHalAutomotiveVehicleTargetTest, getSetPropertyIdInvalid) {
321 ALOGD("VtsHalAutomotiveVehicleTargetTest::getSetPropertyIdInvalid");
322
323 int32_t propId = toInt(VehicleProperty::INVALID);
324 auto getValueResult = mVhalClient->getValueSync(*mVhalClient->createHalPropValue(propId));
325 ASSERT_FALSE(getValueResult.ok()) << "Expect get on VehicleProperty::INVALID to fail";
326 ASSERT_EQ(getValueResult.error().code(), ErrorCode::INVALID_ARG);
327
328 auto propToSet = mVhalClient->createHalPropValue(propId);
329 propToSet->setInt32Values({0});
330 auto setValueResult = mVhalClient->setValueSync(*propToSet);
331 ASSERT_FALSE(setValueResult.ok()) << "Expect set on VehicleProperty::INVALID to fail";
332 ASSERT_EQ(setValueResult.error().code(), ErrorCode::INVALID_ARG);
333
334 auto result = mVhalClient->getAllPropConfigs();
335 ASSERT_TRUE(result.ok());
336 for (const auto& cfgPtr : result.value()) {
337 const IHalPropConfig& cfg = *cfgPtr;
338 ASSERT_FALSE(cfg.getPropId() == propId) << "Expect VehicleProperty::INVALID to not be "
339 "included in propConfigs";
340 }
341}
342
Yu Shan726d51a2022-02-22 17:37:21 -0800343// Test subscribe() and unsubscribe().
344TEST_P(VtsHalAutomotiveVehicleTargetTest, subscribeAndUnsubscribe) {
345 ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeAndUnsubscribe");
346
347 int32_t propId = toInt(VehicleProperty::PERF_VEHICLE_SPEED);
Yu Shan0ebd8762023-10-11 11:31:04 -0700348 if (!checkIsSupported(propId)) {
349 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
350 }
Yu Shan726d51a2022-02-22 17:37:21 -0800351
Yu Shan4569ef52022-03-18 14:34:25 -0700352 auto propConfigsResult = mVhalClient->getPropConfigs({propId});
353
354 ASSERT_TRUE(propConfigsResult.ok()) << "Failed to get property config for PERF_VEHICLE_SPEED: "
355 << "error: " << propConfigsResult.error().message();
356 ASSERT_EQ(propConfigsResult.value().size(), 1u)
357 << "Expect to return 1 config for PERF_VEHICLE_SPEED";
358 auto& propConfig = propConfigsResult.value()[0];
359 float minSampleRate = propConfig->getMinSampleRate();
360 float maxSampleRate = propConfig->getMaxSampleRate();
361
362 if (minSampleRate < 1) {
363 GTEST_SKIP() << "Sample rate for vehicle speed < 1 times/sec, skip test since it would "
364 "take too long";
365 }
Yu Shan726d51a2022-02-22 17:37:21 -0800366
367 auto client = mVhalClient->getSubscriptionClient(mCallback);
368 ASSERT_NE(client, nullptr) << "Failed to get subscription client";
369
Yu Shan4569ef52022-03-18 14:34:25 -0700370 auto result = client->subscribe({{.propId = propId, .sampleRate = minSampleRate}});
Yu Shan726d51a2022-02-22 17:37:21 -0800371
372 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to subscribe to property: %" PRId32
373 ", error: %s",
374 propId, result.error().message().c_str());
Yu Shan4569ef52022-03-18 14:34:25 -0700375
376 if (mVhalClient->isAidlVhal()) {
377 // Skip checking timestamp for HIDL because the behavior for sample rate and timestamp is
378 // only specified clearly for AIDL.
379
380 // Timeout is 2 seconds, which gives a 1 second buffer.
381 ASSERT_TRUE(mCallback->waitForExpectedEvents(propId, std::floor(minSampleRate),
382 std::chrono::seconds(2)))
383 << "Didn't get enough events for subscribing to minSampleRate";
384 }
385
386 result = client->subscribe({{.propId = propId, .sampleRate = maxSampleRate}});
387
388 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to subscribe to property: %" PRId32
389 ", error: %s",
390 propId, result.error().message().c_str());
391
392 if (mVhalClient->isAidlVhal()) {
393 ASSERT_TRUE(mCallback->waitForExpectedEvents(propId, std::floor(maxSampleRate),
394 std::chrono::seconds(2)))
395 << "Didn't get enough events for subscribing to maxSampleRate";
396
397 std::unordered_set<int64_t> timestamps;
398 // Event event should have a different timestamp.
399 for (const int64_t& eventTimestamp : mCallback->getEventTimestamps(propId)) {
400 ASSERT_TRUE(timestamps.find(eventTimestamp) == timestamps.end())
401 << "two events for the same property must not have the same timestamp";
402 timestamps.insert(eventTimestamp);
403 }
404 }
Yu Shan726d51a2022-02-22 17:37:21 -0800405
406 result = client->unsubscribe({propId});
407 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to unsubscribe to property: %" PRId32
408 ", error: %s",
409 propId, result.error().message().c_str());
410
411 mCallback->reset();
412 ASSERT_FALSE(mCallback->waitForExpectedEvents(propId, 10, std::chrono::seconds(1)))
413 << "Expect not to get events after unsubscription";
414}
415
416// Test subscribe() with an invalid property.
417TEST_P(VtsHalAutomotiveVehicleTargetTest, subscribeInvalidProp) {
418 ALOGD("VtsHalAutomotiveVehicleTargetTest::subscribeInvalidProp");
419
420 std::vector<SubscribeOptions> options = {
421 SubscribeOptions{.propId = kInvalidProp, .sampleRate = 10.0}};
422
423 auto client = mVhalClient->getSubscriptionClient(mCallback);
424 ASSERT_NE(client, nullptr) << "Failed to get subscription client";
425
426 auto result = client->subscribe(options);
427
428 ASSERT_FALSE(result.ok()) << StringPrintf("Expect subscribing to property: %" PRId32 " to fail",
429 kInvalidProp);
430}
431
Yu Shan4569ef52022-03-18 14:34:25 -0700432// Test the timestamp returned in GetValues results is the timestamp when the value is retrieved.
433TEST_P(VtsHalAutomotiveVehicleTargetTest, testGetValuesTimestampAIDL) {
434 if (!mVhalClient->isAidlVhal()) {
435 GTEST_SKIP() << "Skip checking timestamp for HIDL because the behavior is only specified "
436 "for AIDL";
437 }
438
439 int32_t propId = toInt(VehicleProperty::PARKING_BRAKE_ON);
Yu Shan0ebd8762023-10-11 11:31:04 -0700440 if (!checkIsSupported(propId)) {
441 GTEST_SKIP() << "Property: " << propId << " is not supported, skip the test";
442 }
Yu Shan4569ef52022-03-18 14:34:25 -0700443 auto prop = mVhalClient->createHalPropValue(propId);
444
445 auto result = mVhalClient->getValueSync(*prop);
446
447 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
448 ", error: %s",
449 propId, result.error().message().c_str());
450 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
451 ASSERT_EQ(result.value()->getInt32Values().size(), 1u) << "Result must contain 1 int value";
452
453 bool parkBrakeOnValue1 = (result.value()->getInt32Values()[0] == 1);
454 int64_t timestampValue1 = result.value()->getTimestamp();
455
456 result = mVhalClient->getValueSync(*prop);
457
458 ASSERT_TRUE(result.ok()) << StringPrintf("Failed to get value for property: %" PRId32
459 ", error: %s",
460 propId, result.error().message().c_str());
461 ASSERT_NE(result.value(), nullptr) << "Result value must not be null";
462 ASSERT_EQ(result.value()->getInt32Values().size(), 1u) << "Result must contain 1 int value";
463
464 bool parkBarkeOnValue2 = (result.value()->getInt32Values()[0] == 1);
465 int64_t timestampValue2 = result.value()->getTimestamp();
466
467 if (parkBarkeOnValue2 == parkBrakeOnValue1) {
468 ASSERT_EQ(timestampValue2, timestampValue1)
469 << "getValue result must contain a timestamp updated when the value was updated, if"
470 "the value does not change, expect the same timestamp";
471 } else {
472 ASSERT_GT(timestampValue2, timestampValue1)
473 << "getValue result must contain a timestamp updated when the value was updated, if"
474 "the value changes, expect the newer value has a larger timestamp";
475 }
476}
477
shrikar6a4f3a82023-10-16 18:49:49 +0000478// Test that access mode is populated in exclusively one of the VehiclePropConfig or the
479// VehicleAreaConfigs. Either VehiclePropConfig.access must be populated, or all the
480// VehicleAreaConfig.access fields should be populated.
481TEST_P(VtsHalAutomotiveVehicleTargetTest, testAccessModeExclusivityAIDL) {
482 if (!mVhalClient->isAidlVhal()) {
483 GTEST_SKIP() << "Skip checking access mode for HIDL because the access mode field is only "
484 "present for AIDL";
485 }
486
487 auto result = mVhalClient->getAllPropConfigs();
488 ASSERT_TRUE(result.ok());
489 for (const auto& cfgPtr : result.value()) {
490 const IHalPropConfig& cfg = *cfgPtr;
491
492 bool propAccessIsSet = (cfg.getAccess() != toInt(VehiclePropertyAccess::NONE));
493 bool unsetAreaAccessExists = false;
494 bool setAreaAccessExists = false;
495
496 for (const auto& areaConfig : cfg.getAreaConfigs()) {
497 if (areaConfig->getAccess() == toInt(VehiclePropertyAccess::NONE)) {
498 unsetAreaAccessExists = true;
499 } else {
500 setAreaAccessExists = true;
501 }
502 }
503
504 ASSERT_FALSE(propAccessIsSet && setAreaAccessExists) << StringPrintf(
505 "Both prop and area config access is set for propertyId %d", cfg.getPropId());
506 ASSERT_FALSE(!propAccessIsSet && !setAreaAccessExists) << StringPrintf(
507 "Neither prop and area config access is set for propertyId %d", cfg.getPropId());
508 ASSERT_FALSE(unsetAreaAccessExists && setAreaAccessExists) << StringPrintf(
509 "Area access is only set in some configs for propertyId %d", cfg.getPropId());
510 }
511}
512
513void VtsHalAutomotiveVehicleTargetTest::verifyAccessMode(int actualAccess, int expectedAccess) {
514 if (expectedAccess == toInt(VehiclePropertyAccess::READ_WRITE)) {
515 ASSERT_TRUE(actualAccess == expectedAccess ||
516 actualAccess == toInt(VehiclePropertyAccess::READ))
517 << StringPrintf("Expect to get VehiclePropertyAccess: %i or %i, got %i",
518 expectedAccess, toInt(VehiclePropertyAccess::READ), actualAccess);
519 return;
520 }
521 ASSERT_EQ(actualAccess, expectedAccess) << StringPrintf(
522 "Expect to get VehiclePropertyAccess: %i, got %i", expectedAccess, actualAccess);
523}
524
Aaqib Ismail20486702022-10-27 16:58:50 -0700525// Helper function to compare actual vs expected property config
526void VtsHalAutomotiveVehicleTargetTest::verifyProperty(VehicleProperty propId,
527 VehiclePropertyAccess access,
528 VehiclePropertyChangeMode changeMode,
529 VehiclePropertyGroup group, VehicleArea area,
530 VehiclePropertyType propertyType) {
531 int expectedPropId = toInt(propId);
532 int expectedAccess = toInt(access);
533 int expectedChangeMode = toInt(changeMode);
534 int expectedGroup = toInt(group);
535 int expectedArea = toInt(area);
536 int expectedPropertyType = toInt(propertyType);
537
Eva Chen17bc5782023-01-06 22:59:58 -0800538 auto result = mVhalClient->getAllPropConfigs();
539 ASSERT_TRUE(result.ok()) << "Failed to get all property configs, error: "
540 << result.error().message();
541
542 // Check if property is implemented by getting all configs and looking to see if the expected
543 // property id is in that list.
544 bool isExpectedPropIdImplemented = false;
545 for (const auto& cfgPtr : result.value()) {
546 const IHalPropConfig& cfg = *cfgPtr;
547 if (expectedPropId == cfg.getPropId()) {
548 isExpectedPropIdImplemented = true;
549 break;
550 }
551 }
552
553 if (!isExpectedPropIdImplemented) {
554 GTEST_SKIP() << StringPrintf("Property %" PRId32 " has not been implemented",
555 expectedPropId);
556 }
557
558 result = mVhalClient->getPropConfigs({expectedPropId});
Aaqib Ismail20486702022-10-27 16:58:50 -0700559 ASSERT_TRUE(result.ok()) << "Failed to get required property config, error: "
560 << result.error().message();
561
Aaqib Ismail20486702022-10-27 16:58:50 -0700562 ASSERT_EQ(result.value().size(), 1u)
563 << StringPrintf("Expect to get exactly 1 config, got %zu", result.value().size());
564
565 const auto& config = result.value().at(0);
566 int actualPropId = config->getPropId();
Aaqib Ismail20486702022-10-27 16:58:50 -0700567 int actualChangeMode = config->getChangeMode();
568 int actualGroup = actualPropId & toInt(VehiclePropertyGroup::MASK);
569 int actualArea = actualPropId & toInt(VehicleArea::MASK);
570 int actualPropertyType = actualPropId & toInt(VehiclePropertyType::MASK);
571
572 ASSERT_EQ(actualPropId, expectedPropId)
573 << StringPrintf("Expect to get property ID: %i, got %i", expectedPropId, actualPropId);
574
shrikar6a4f3a82023-10-16 18:49:49 +0000575 int globalAccess = config->getAccess();
576 if (config->getAreaConfigSize() == 0) {
577 verifyAccessMode(globalAccess, expectedAccess);
Aaqib Ismail20486702022-10-27 16:58:50 -0700578 } else {
shrikar6a4f3a82023-10-16 18:49:49 +0000579 for (const auto& areaConfig : config->getAreaConfigs()) {
580 int areaConfigAccess = areaConfig->getAccess();
581 int actualAccess = (areaConfigAccess != toInt(VehiclePropertyAccess::NONE))
582 ? areaConfigAccess
583 : globalAccess;
584 verifyAccessMode(actualAccess, expectedAccess);
585 }
Aaqib Ismail20486702022-10-27 16:58:50 -0700586 }
587
588 ASSERT_EQ(actualChangeMode, expectedChangeMode)
589 << StringPrintf("Expect to get VehiclePropertyChangeMode: %i, got %i",
590 expectedChangeMode, actualChangeMode);
591 ASSERT_EQ(actualGroup, expectedGroup) << StringPrintf(
592 "Expect to get VehiclePropertyGroup: %i, got %i", expectedGroup, actualGroup);
593 ASSERT_EQ(actualArea, expectedArea)
594 << StringPrintf("Expect to get VehicleArea: %i, got %i", expectedArea, actualArea);
595 ASSERT_EQ(actualPropertyType, expectedPropertyType)
596 << StringPrintf("Expect to get VehiclePropertyType: %i, got %i", expectedPropertyType,
597 actualPropertyType);
598}
599
shrikar34563642023-02-14 02:57:17 +0000600TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLocationCharacterizationConfig) {
601 verifyProperty(VehicleProperty::LOCATION_CHARACTERIZATION, VehiclePropertyAccess::READ,
602 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
603 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
604}
605
Eva Chen544b24b2023-12-05 00:13:53 -0800606TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorPositionConfig) {
607 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_POSITION, VehiclePropertyAccess::READ,
608 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
609 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
610}
611
Eva Chen9e226e52023-12-06 00:23:18 -0800612TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorOrientationConfig) {
613 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_ORIENTATION, VehiclePropertyAccess::READ,
614 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
615 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
616}
617
Eva Chen727aa3f2023-12-06 01:13:29 -0800618TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorFieldOfViewConfig) {
619 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_FIELD_OF_VIEW, VehiclePropertyAccess::READ,
620 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
621 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
622}
623
Eva Chen968bf442023-12-06 01:21:51 -0800624TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorDetectionRangeConfig) {
625 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_DETECTION_RANGE, VehiclePropertyAccess::READ,
626 VehiclePropertyChangeMode::STATIC, VehiclePropertyGroup::SYSTEM,
627 VehicleArea::VENDOR, VehiclePropertyType::INT32_VEC);
628}
629
Eva Chendf05df52023-12-06 01:42:55 -0800630TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorSupportedRangesConfig) {
631 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_SUPPORTED_RANGES,
632 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::STATIC,
633 VehiclePropertyGroup::SYSTEM, VehicleArea::VENDOR,
634 VehiclePropertyType::INT32_VEC);
635}
636
Eva Chen75661732023-12-06 01:51:40 -0800637TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyUltrasonicsSensorMeasuredDistanceConfig) {
638 verifyProperty(VehicleProperty::ULTRASONICS_SENSOR_MEASURED_DISTANCE,
639 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::CONTINUOUS,
640 VehiclePropertyGroup::SYSTEM, VehicleArea::VENDOR,
641 VehiclePropertyType::INT32_VEC);
642}
643
shrikar668df362022-12-20 22:08:17 +0000644TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEmergencyLaneKeepAssistEnabledConfig) {
645 verifyProperty(VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_ENABLED,
646 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
647 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
648}
649
shrikar80cc0c52023-01-30 16:56:53 +0000650TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEmergencyLaneKeepAssistStateConfig) {
651 verifyProperty(VehicleProperty::EMERGENCY_LANE_KEEP_ASSIST_STATE, VehiclePropertyAccess::READ,
652 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
653 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
654}
655
shrikar5d1b8162023-01-25 19:31:23 +0000656TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlEnabledConfig) {
657 verifyProperty(VehicleProperty::CRUISE_CONTROL_ENABLED, VehiclePropertyAccess::READ_WRITE,
658 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
659 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
shrikar808a2942022-12-21 17:07:32 +0000660}
661
shrikard440ed42023-01-31 00:25:14 +0000662TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlTypeConfig) {
663 verifyProperty(VehicleProperty::CRUISE_CONTROL_TYPE, VehiclePropertyAccess::READ_WRITE,
664 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
665 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
666}
667
shrikar2753b9e2023-01-31 00:25:14 +0000668TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlStateConfig) {
669 verifyProperty(VehicleProperty::CRUISE_CONTROL_STATE, VehiclePropertyAccess::READ,
670 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
671 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
672}
673
shrikar5df0f952023-02-02 00:15:39 +0000674TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlCommandConfig) {
675 verifyProperty(VehicleProperty::CRUISE_CONTROL_COMMAND, VehiclePropertyAccess::WRITE,
676 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
677 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
678}
679
shrikarfde8c242023-02-02 01:10:33 +0000680TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCruiseControlTargetSpeedConfig) {
681 verifyProperty(VehicleProperty::CRUISE_CONTROL_TARGET_SPEED, VehiclePropertyAccess::READ,
682 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
683 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
684}
685
shrikarb9661d32023-02-02 19:22:50 +0000686TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAdaptiveCruiseControlTargetTimeGapConfig) {
687 verifyProperty(VehicleProperty::ADAPTIVE_CRUISE_CONTROL_TARGET_TIME_GAP,
688 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
689 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
690}
691
shrikarf62d7472023-02-03 00:20:04 +0000692TEST_P(VtsHalAutomotiveVehicleTargetTest,
693 verifyAdaptiveCruiseControlLeadVehicleMeasuredDistanceConfig) {
694 verifyProperty(VehicleProperty::ADAPTIVE_CRUISE_CONTROL_LEAD_VEHICLE_MEASURED_DISTANCE,
695 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::CONTINUOUS,
696 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
697}
698
shrikar37833e12022-12-15 20:13:14 +0000699TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionEnabledConfig) {
700 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_ENABLED, VehiclePropertyAccess::READ_WRITE,
701 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
702 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
703}
704
shrikar6d88bf52023-01-17 17:04:21 +0000705TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionDriverStateConfig) {
706 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_DRIVER_STATE, VehiclePropertyAccess::READ,
707 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
708 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
709}
710
shrikara6785992023-01-18 23:07:06 +0000711TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHandsOnDetectionWarningConfig) {
712 verifyProperty(VehicleProperty::HANDS_ON_DETECTION_WARNING, VehiclePropertyAccess::READ,
713 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
714 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
715}
716
Eva Chenbbb7b6d2023-11-21 00:07:14 -0800717TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionSystemEnabledConfig) {
718 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_SYSTEM_ENABLED,
719 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
720 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
721}
722
Eva Chen9f1d8c02023-11-28 16:50:14 -0800723TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionStateConfig) {
724 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_STATE, VehiclePropertyAccess::READ,
725 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
726 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
727}
728
Eva Chen6ec790b2023-12-01 23:37:29 -0800729TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionWarningEnabledConfig) {
730 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING_ENABLED,
731 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
732 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
733}
734
Eva Chen05c548c2023-12-02 01:20:10 -0800735TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDrowsinessAttentionWarningConfig) {
736 verifyProperty(VehicleProperty::DRIVER_DROWSINESS_ATTENTION_WARNING,
737 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
738 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
739}
740
Eva Chen51770b02023-12-02 15:27:31 -0800741TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionSystemEnabledConfig) {
742 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_SYSTEM_ENABLED,
743 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
744 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
745}
746
Eva Chena342b722023-12-04 00:40:45 -0800747TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionStateConfig) {
748 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_STATE, VehiclePropertyAccess::READ,
749 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
750 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
751}
752
Eva Chenc62166e2023-12-04 02:17:36 -0800753TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionWarningEnabledConfig) {
754 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_WARNING_ENABLED,
755 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
756 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
757}
758
Eva Chen9a0925e2023-12-04 03:52:23 -0800759TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDriverDistractionWarningConfig) {
760 verifyProperty(VehicleProperty::DRIVER_DISTRACTION_WARNING, VehiclePropertyAccess::READ,
761 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
762 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
763}
764
Aaqib Ismailc69e9682022-11-22 12:50:00 -0800765TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvBrakeRegenerationLevelConfig) {
766 verifyProperty(VehicleProperty::EV_BRAKE_REGENERATION_LEVEL,
767 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
768 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
769}
770
shrikar2dae80f2022-12-21 23:50:17 +0000771TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvStoppingModeConfig) {
772 verifyProperty(VehicleProperty::EV_STOPPING_MODE, VehiclePropertyAccess::READ_WRITE,
773 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
774 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
775}
776
Aaqib Ismailaec678a2022-12-07 16:22:42 -0800777TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvCurrentBatteryCapacityConfig) {
778 verifyProperty(VehicleProperty::EV_CURRENT_BATTERY_CAPACITY, VehiclePropertyAccess::READ,
779 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
780 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
781}
782
shrikar83914472022-12-16 20:28:47 +0000783TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEngineIdleAutoStopEnabledConfig) {
784 verifyProperty(VehicleProperty::ENGINE_IDLE_AUTO_STOP_ENABLED,
785 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
786 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
787}
788
Aaqib Ismail20486702022-10-27 16:58:50 -0700789TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyDoorChildLockEnabledConfig) {
790 verifyProperty(VehicleProperty::DOOR_CHILD_LOCK_ENABLED, VehiclePropertyAccess::READ_WRITE,
791 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
792 VehicleArea::DOOR, VehiclePropertyType::BOOLEAN);
793}
794
Aaqib Ismail63d52d12023-01-30 12:35:10 -0800795TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersPeriodConfig) {
796 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_PERIOD, VehiclePropertyAccess::READ,
797 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
798 VehicleArea::WINDOW, VehiclePropertyType::INT32);
799}
800
Aaqib Ismail732a1d72023-01-31 10:25:45 -0800801TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersStateConfig) {
802 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_STATE, VehiclePropertyAccess::READ,
803 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
804 VehicleArea::WINDOW, VehiclePropertyType::INT32);
805}
806
Aaqib Ismailc37a2112023-02-02 11:30:08 -0800807TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyWindshieldWipersSwitchConfig) {
808 verifyProperty(VehicleProperty::WINDSHIELD_WIPERS_SWITCH, VehiclePropertyAccess::READ_WRITE,
809 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
810 VehicleArea::WINDOW, VehiclePropertyType::INT32);
811}
812
Aaqib Ismail7f941b42022-11-04 14:55:13 -0700813TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelDepthPosConfig) {
814 verifyProperty(VehicleProperty::STEERING_WHEEL_DEPTH_POS, VehiclePropertyAccess::READ_WRITE,
815 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
816 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
817}
818
Aaqib Ismail34fe92f2022-11-04 21:41:23 -0700819TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelDepthMoveConfig) {
820 verifyProperty(VehicleProperty::STEERING_WHEEL_DEPTH_MOVE, VehiclePropertyAccess::READ_WRITE,
821 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
822 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
823}
824
Aaqib Ismail53b81c92022-11-07 17:47:04 -0800825TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelHeightPosConfig) {
826 verifyProperty(VehicleProperty::STEERING_WHEEL_HEIGHT_POS, VehiclePropertyAccess::READ_WRITE,
827 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
828 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
829}
830
Aaqib Ismail6c4bf192022-11-08 15:00:32 -0800831TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelHeightMoveConfig) {
832 verifyProperty(VehicleProperty::STEERING_WHEEL_HEIGHT_MOVE, VehiclePropertyAccess::READ_WRITE,
833 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
834 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
835}
836
Aaqib Ismail8d051182022-11-09 13:28:48 -0800837TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelTheftLockEnabledConfig) {
838 verifyProperty(VehicleProperty::STEERING_WHEEL_THEFT_LOCK_ENABLED,
839 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
840 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
841}
842
Aaqib Ismail68d3f122022-11-09 14:43:32 -0800843TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLockedConfig) {
844 verifyProperty(VehicleProperty::STEERING_WHEEL_LOCKED, VehiclePropertyAccess::READ_WRITE,
845 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
846 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
847}
848
Aaqib Ismaild4d6adf2022-11-09 16:59:47 -0800849TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelEasyAccessEnabledConfig) {
850 verifyProperty(VehicleProperty::STEERING_WHEEL_EASY_ACCESS_ENABLED,
851 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
852 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
853}
854
Aaqib Ismail0dc7ba02022-11-10 14:28:09 -0800855TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLightsStateConfig) {
856 verifyProperty(VehicleProperty::STEERING_WHEEL_LIGHTS_STATE, VehiclePropertyAccess::READ,
857 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
858 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
859}
860
Aaqib Ismail4b8688f2022-11-15 15:13:35 -0800861TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySteeringWheelLightsSwitchConfig) {
862 verifyProperty(VehicleProperty::STEERING_WHEEL_LIGHTS_SWITCH, VehiclePropertyAccess::READ_WRITE,
863 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
864 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
865}
866
Arati Gerdesd86c7fd2022-12-19 12:32:29 -0800867TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyGloveBoxDoorPosConfig) {
868 verifyProperty(VehicleProperty::GLOVE_BOX_DOOR_POS, VehiclePropertyAccess::READ_WRITE,
869 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
870 VehicleArea::SEAT, VehiclePropertyType::INT32);
871}
872
Aaqib Ismail57be4032023-02-02 14:15:03 -0800873TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyGloveBoxLockedConfig) {
874 verifyProperty(VehicleProperty::GLOVE_BOX_LOCKED, VehiclePropertyAccess::READ_WRITE,
875 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
876 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
877}
878
shrikara1367212022-11-02 16:07:35 +0000879TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyMirrorAutoFoldEnabledConfig) {
880 verifyProperty(VehicleProperty::MIRROR_AUTO_FOLD_ENABLED, VehiclePropertyAccess::READ_WRITE,
881 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
882 VehicleArea::MIRROR, VehiclePropertyType::BOOLEAN);
883}
884
885TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyMirrorAutoTiltEnabledConfig) {
886 verifyProperty(VehicleProperty::MIRROR_AUTO_TILT_ENABLED, VehiclePropertyAccess::READ_WRITE,
887 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
888 VehicleArea::MIRROR, VehiclePropertyType::BOOLEAN);
889}
890
Aaqib Ismail4e6144c2022-12-15 15:32:18 -0800891TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatHeadrestHeightPosV2Config) {
892 verifyProperty(VehicleProperty::SEAT_HEADREST_HEIGHT_POS_V2, VehiclePropertyAccess::READ_WRITE,
893 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
894 VehicleArea::SEAT, VehiclePropertyType::INT32);
895}
896
shrikar6ae79162022-12-16 03:03:25 +0000897TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatWalkInPosConfig) {
898 verifyProperty(VehicleProperty::SEAT_WALK_IN_POS, VehiclePropertyAccess::READ_WRITE,
899 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
900 VehicleArea::SEAT, VehiclePropertyType::INT32);
901}
902
shrikarfb65ae52022-11-03 23:12:51 +0000903TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatFootwellLightsStateConfig) {
904 verifyProperty(VehicleProperty::SEAT_FOOTWELL_LIGHTS_STATE, VehiclePropertyAccess::READ,
905 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
906 VehicleArea::SEAT, VehiclePropertyType::INT32);
907}
908
shrikar93cf1be2022-11-30 15:00:52 -0800909TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatFootwellLightsSwitchConfig) {
910 verifyProperty(VehicleProperty::SEAT_FOOTWELL_LIGHTS_SWITCH, VehiclePropertyAccess::READ_WRITE,
911 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
912 VehicleArea::SEAT, VehiclePropertyType::INT32);
913}
914
shrikar3326de02022-11-07 23:51:20 +0000915TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatEasyAccessEnabledConfig) {
916 verifyProperty(VehicleProperty::SEAT_EASY_ACCESS_ENABLED, VehiclePropertyAccess::READ_WRITE,
917 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
918 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
919}
920
shrikarb96e3762022-11-08 16:49:58 -0800921TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatAirbagEnabledConfig) {
922 verifyProperty(VehicleProperty::SEAT_AIRBAG_ENABLED, VehiclePropertyAccess::READ_WRITE,
923 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
924 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
925}
926
shrikar802ecb52022-11-09 18:27:06 +0000927TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatCushionSideSupportPosConfig) {
928 verifyProperty(VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_POS,
929 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
930 VehiclePropertyGroup::SYSTEM, VehicleArea::SEAT, VehiclePropertyType::INT32);
931}
932
shrikar1f0ce0d2022-11-11 17:46:06 +0000933TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatCushionSideSupportMoveConfig) {
934 verifyProperty(VehicleProperty::SEAT_CUSHION_SIDE_SUPPORT_MOVE,
935 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
936 VehiclePropertyGroup::SYSTEM, VehicleArea::SEAT, VehiclePropertyType::INT32);
937}
938
shrikareff71b22022-11-11 11:02:43 -0800939TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatLumbarVerticalPosConfig) {
940 verifyProperty(VehicleProperty::SEAT_LUMBAR_VERTICAL_POS, VehiclePropertyAccess::READ_WRITE,
941 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
942 VehicleArea::SEAT, VehiclePropertyType::INT32);
943}
944
shrikar2a081c52022-11-11 16:49:58 -0800945TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatLumbarVerticalMoveConfig) {
946 verifyProperty(VehicleProperty::SEAT_LUMBAR_VERTICAL_MOVE, VehiclePropertyAccess::READ_WRITE,
947 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
948 VehicleArea::SEAT, VehiclePropertyType::INT32);
949}
950
Aaqib Ismail5d53aa32022-12-13 22:30:23 +0000951TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAutomaticEmergencyBrakingEnabledConfig) {
952 verifyProperty(VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_ENABLED,
953 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
954 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
955}
956
Aaqib Ismail28ee23c2023-01-04 23:04:46 -0800957TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyAutomaticEmergencyBrakingStateConfig) {
958 verifyProperty(VehicleProperty::AUTOMATIC_EMERGENCY_BRAKING_STATE, VehiclePropertyAccess::READ,
959 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
960 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
961}
962
Aaqib Ismaila2513672022-12-15 00:55:27 +0000963TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyForwardCollisionWarningEnabledConfig) {
964 verifyProperty(VehicleProperty::FORWARD_COLLISION_WARNING_ENABLED,
965 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
966 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
967}
968
Aaqib Ismail0a1ab292023-01-19 21:33:56 +0000969TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyForwardCollisionWarningStateConfig) {
970 verifyProperty(VehicleProperty::FORWARD_COLLISION_WARNING_STATE, VehiclePropertyAccess::READ,
971 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
972 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
973}
974
Aaqib Ismail3f7177a2022-12-17 09:20:00 -0800975TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyBlindSpotWarningEnabledConfig) {
976 verifyProperty(VehicleProperty::BLIND_SPOT_WARNING_ENABLED, VehiclePropertyAccess::READ_WRITE,
977 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
978 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
979}
980
Aaqib Ismail5fc97bb2023-01-10 17:07:47 -0800981TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyBlindSpotWarningStateConfig) {
982 verifyProperty(VehicleProperty::BLIND_SPOT_WARNING_STATE, VehiclePropertyAccess::READ,
983 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
984 VehicleArea::MIRROR, VehiclePropertyType::INT32);
985}
986
Aaqib Ismail7a46cef2022-12-17 10:00:59 -0800987TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneDepartureWarningEnabledConfig) {
988 verifyProperty(VehicleProperty::LANE_DEPARTURE_WARNING_ENABLED,
989 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
990 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
991}
992
Aaqib Ismail8462db52023-01-27 19:59:49 -0800993TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneDepartureWarningStateConfig) {
994 verifyProperty(VehicleProperty::LANE_DEPARTURE_WARNING_STATE, VehiclePropertyAccess::READ,
995 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
996 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
997}
998
Aaqib Ismail20cc66a2022-12-22 05:38:28 -0800999TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneKeepAssistEnabledConfig) {
1000 verifyProperty(VehicleProperty::LANE_KEEP_ASSIST_ENABLED, VehiclePropertyAccess::READ_WRITE,
1001 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1002 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1003}
1004
Aaqib Ismail78db2ca2023-01-10 17:34:28 -08001005TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneKeepAssistStateConfig) {
1006 verifyProperty(VehicleProperty::LANE_KEEP_ASSIST_STATE, VehiclePropertyAccess::READ,
1007 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1008 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1009}
1010
Aaqib Ismailb1680a72022-12-14 23:28:49 +00001011TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistEnabledConfig) {
1012 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_ENABLED,
1013 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1014 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1015}
1016
Aaqib Ismail0ffd39c2023-01-11 12:19:10 -08001017TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistCommandConfig) {
1018 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_COMMAND, VehiclePropertyAccess::WRITE,
1019 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1020 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1021}
1022
Aaqib Ismaildb034442023-01-10 18:14:28 -08001023TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLaneCenteringAssistStateConfig) {
1024 verifyProperty(VehicleProperty::LANE_CENTERING_ASSIST_STATE, VehiclePropertyAccess::READ,
1025 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1026 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1027}
1028
Yuncheol Heo8fbbfd12023-09-27 15:43:59 -07001029TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyClusterHeartbeatConfig) {
1030 verifyProperty(VehicleProperty::CLUSTER_HEARTBEAT, VehiclePropertyAccess::WRITE,
1031 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1032 VehicleArea::GLOBAL, VehiclePropertyType::MIXED);
1033}
1034
shrikard6f9f8e2023-11-02 22:35:28 +00001035TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyVehicleDrivingAutomationCurrentLevelConfig) {
1036 verifyProperty(VehicleProperty::VEHICLE_DRIVING_AUTOMATION_CURRENT_LEVEL,
1037 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1038 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1039}
1040
shrikar420b31d2023-11-07 16:15:35 +00001041TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatAirbagsDeployedConfig) {
1042 verifyProperty(VehicleProperty::SEAT_AIRBAGS_DEPLOYED, VehiclePropertyAccess::READ,
1043 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1044 VehicleArea::SEAT, VehiclePropertyType::INT32);
1045}
1046
shrikar7717aa82023-11-07 21:05:46 +00001047TEST_P(VtsHalAutomotiveVehicleTargetTest, verifySeatBeltPretensionerDeployedConfig) {
1048 verifyProperty(VehicleProperty::SEAT_BELT_PRETENSIONER_DEPLOYED, VehiclePropertyAccess::READ,
1049 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1050 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
1051}
1052
shrikard816e042023-11-08 20:12:55 +00001053TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyImpactDetectedConfig) {
1054 verifyProperty(VehicleProperty::IMPACT_DETECTED, VehiclePropertyAccess::READ,
1055 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1056 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1057}
1058
shrikara492e7d2023-11-09 00:27:54 +00001059TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyEvBatteryAverageTemperatureConfig) {
1060 verifyProperty(VehicleProperty::EV_BATTERY_AVERAGE_TEMPERATURE, VehiclePropertyAccess::READ,
1061 VehiclePropertyChangeMode::CONTINUOUS, VehiclePropertyGroup::SYSTEM,
1062 VehicleArea::GLOBAL, VehiclePropertyType::FLOAT);
1063}
1064
shrikar45df34b2023-11-10 21:14:17 +00001065TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedCollisionWarningEnabledConfig) {
1066 verifyProperty(VehicleProperty::LOW_SPEED_COLLISION_WARNING_ENABLED,
1067 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1068 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1069}
1070
shrikar858c4e12023-11-14 17:33:11 +00001071TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedCollisionWarningStateConfig) {
1072 verifyProperty(VehicleProperty::LOW_SPEED_COLLISION_WARNING_STATE, VehiclePropertyAccess::READ,
1073 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1074 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1075}
1076
shrikar84866f72023-11-27 00:30:59 +00001077TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyValetModeEnabledConfig) {
1078 verifyProperty(VehicleProperty::VALET_MODE_ENABLED, VehiclePropertyAccess::READ_WRITE,
1079 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1080 VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1081}
1082
shrikar33a33692023-11-30 01:38:01 +00001083TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyElectronicStabilityControlEnabledConfig) {
1084 verifyProperty(VehicleProperty::ELECTRONIC_STABILITY_CONTROL_ENABLED,
1085 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1086 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1087}
1088
shrikara45d1cf2023-11-27 17:40:46 +00001089TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyElectronicStabilityControlStateConfig) {
1090 verifyProperty(VehicleProperty::ELECTRONIC_STABILITY_CONTROL_STATE, VehiclePropertyAccess::READ,
1091 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1092 VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1093}
1094
shrikar7fde8f52023-11-27 22:47:53 +00001095TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCrossTrafficMonitoringEnabledConfig) {
1096 verifyProperty(VehicleProperty::CROSS_TRAFFIC_MONITORING_ENABLED,
1097 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1098 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1099}
1100
shrikar813ba7c2023-11-28 18:35:34 +00001101TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyCrossTrafficMonitoringWarningStateConfig) {
1102 verifyProperty(VehicleProperty::CROSS_TRAFFIC_MONITORING_WARNING_STATE,
1103 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1104 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1105}
1106
shrikar55559892023-12-01 23:35:06 +00001107TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyHeadUpDisplayEnabledConfig) {
1108 verifyProperty(VehicleProperty::HEAD_UP_DISPLAY_ENABLED, VehiclePropertyAccess::READ_WRITE,
1109 VehiclePropertyChangeMode::ON_CHANGE, VehiclePropertyGroup::SYSTEM,
1110 VehicleArea::SEAT, VehiclePropertyType::BOOLEAN);
1111}
1112
shrikard11b9f82023-12-04 17:39:28 +00001113TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedAutomaticEmergencyBrakingEnabledConfig) {
1114 verifyProperty(VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_ENABLED,
1115 VehiclePropertyAccess::READ_WRITE, VehiclePropertyChangeMode::ON_CHANGE,
1116 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::BOOLEAN);
1117}
1118
shrikarbd6ab732023-12-04 19:07:26 +00001119TEST_P(VtsHalAutomotiveVehicleTargetTest, verifyLowSpeedAutomaticEmergencyBrakingStateConfig) {
1120 verifyProperty(VehicleProperty::LOW_SPEED_AUTOMATIC_EMERGENCY_BRAKING_STATE,
1121 VehiclePropertyAccess::READ, VehiclePropertyChangeMode::ON_CHANGE,
1122 VehiclePropertyGroup::SYSTEM, VehicleArea::GLOBAL, VehiclePropertyType::INT32);
1123}
1124
Yu Shan0ebd8762023-10-11 11:31:04 -07001125bool VtsHalAutomotiveVehicleTargetTest::checkIsSupported(int32_t propertyId) {
Yu Shanec5d5b02023-10-09 14:43:36 -07001126 auto result = mVhalClient->getPropConfigs({propertyId});
Yu Shan0ebd8762023-10-11 11:31:04 -07001127 return result.ok();
Yu Shanec5d5b02023-10-09 14:43:36 -07001128}
1129
Yu Shan726d51a2022-02-22 17:37:21 -08001130std::vector<ServiceDescriptor> getDescriptors() {
1131 std::vector<ServiceDescriptor> descriptors;
1132 for (std::string name : getAidlHalInstanceNames(IVehicle::descriptor)) {
1133 descriptors.push_back({
1134 .name = name,
1135 .isAidlService = true,
1136 });
1137 }
1138 for (std::string name : getAllHalInstanceNames(IVehicle::descriptor)) {
1139 descriptors.push_back({
1140 .name = name,
1141 .isAidlService = false,
1142 });
1143 }
1144 return descriptors;
1145}
1146
1147GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(VtsHalAutomotiveVehicleTargetTest);
1148
1149INSTANTIATE_TEST_SUITE_P(PerInstance, VtsHalAutomotiveVehicleTargetTest,
1150 testing::ValuesIn(getDescriptors()),
1151 [](const testing::TestParamInfo<ServiceDescriptor>& info) {
1152 std::string name = "";
1153 if (info.param.isAidlService) {
1154 name += "aidl_";
1155 } else {
1156 name += "hidl_";
1157 }
1158 name += info.param.name;
1159 return Sanitize(name);
1160 });
1161
1162int main(int argc, char** argv) {
1163 ::testing::InitGoogleTest(&argc, argv);
1164 ABinderProcess_setThreadPoolMaxThreadCount(1);
1165 return RUN_ALL_TESTS();
1166}