2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include <gtest/gtest.h>
20 #include <gmock/gmock.h>
25 #include "hal-common.h"
26 #include "hal-common-interface.h"
28 #include "../../src/hal-api-conf.h"
29 #include "../../src/common.h"
36 extern "C" const char *tzplatform_mkpath(
37 enum tzplatform_variable id, const char *path) {
38 return "../../hal-api.json";
41 class CommonHaltest : public testing::Test {
44 virtual ~CommonHaltest() {}
45 virtual void SetUp() {}
46 virtual void TearDown() {}
49 TEST(CommonHaltest, test_symbol_name_invalid_module) {
50 char ret_unknown[MAX_BUFF] = {0, };
51 char ret_end[MAX_BUFF] = {0, };
54 ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_unknown, MAX_BUFF);
55 EXPECT_TRUE(ret != TIZEN_ERROR_NONE);
57 ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_end, MAX_BUFF);
58 EXPECT_TRUE(ret != TIZEN_ERROR_NONE);
61 TEST(CommonHaltest, test_check_backend_abi_version_invalid_parameter) {
64 ret = hal_common_check_backend_abi_version(HAL_MODULE_UNKNOWN, HAL_ABI_VERSION_TIZEN_6_5);
65 EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER);
67 ret = hal_common_check_backend_abi_version(HAL_MODULE_END, HAL_ABI_VERSION_TIZEN_6_5);
68 EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER);
70 ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_UNKNOWN);
71 EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER);
73 ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_END);
74 EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER);
77 TEST(CommonHaltest, get_backend_library_name_unknown) {
78 char ret_name[MAX_BUFF] = {0, };
79 int ret = hal_common_get_backend_library_name(HAL_MODULE_UNKNOWN, ret_name, MAX_BUFF);
80 EXPECT_TRUE(ret != TIZEN_ERROR_NONE);
85 enum hal_module module_;
86 enum hal_group group_;
87 enum hal_license license_;
88 const char *module_name_;
89 const char *library_name_;
90 const char *library_name_64bit_;
91 const char *symbol_name_;
92 vector<struct hal_abi_version_match> versions_;
94 HalInfo(enum hal_module module, enum hal_group group, enum hal_license license,
95 const char *module_name, const char *library_name, const char *library_name_64bit,
96 const char *symbol_name, vector<struct hal_abi_version_match> versions) :
97 module_(module), group_(group), license_(license),
98 module_name_(module_name), library_name_(library_name),
99 library_name_64bit_(library_name_64bit), symbol_name_(symbol_name),
100 versions_(versions) {}
103 class HalInfoMatchedTest : public ::testing::TestWithParam<HalInfo> {};
105 INSTANTIATE_TEST_CASE_P(CommonHaltest,
108 HalInfo(HAL_MODULE_TBM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT,
109 "HAL_MODULE_TBM", "/hal/lib/libhal-backend-tbm.so",
110 "/hal/lib64/libhal-backend-tbm.so", "hal_backend_tbm_data",
111 vector<struct hal_abi_version_match>{{
112 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
113 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
117 HalInfo(HAL_MODULE_TDM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT,
118 "HAL_MODULE_TDM", "/hal/lib/libhal-backend-tdm.so",
119 "/hal/lib64/libhal-backend-tdm.so", "hal_backend_tdm_data",
120 vector<struct hal_abi_version_match>{{
121 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
122 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
126 HalInfo(HAL_MODULE_COREGL, HAL_GROUP_GRAPHICS, HAL_LICENSE_UNKNOWN,
127 "HAL_MODULE_COREGL", "", "", "", {}),
129 HalInfo(HAL_MODULE_INPUT, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT,
130 "HAL_MODULE_INPUT", "", "", "", {}),
132 HalInfo(HAL_MODULE_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
133 "HAL_MODULE_AUDIO", "/hal/lib/libhal-backend-audio.so",
134 "/hal/lib64/libhal-backend-audio.so", "hal_backend_audio_data",
135 vector<struct hal_abi_version_match>{{
136 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
137 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
141 HalInfo(HAL_MODULE_CAMERA, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
142 "HAL_MODULE_CAMERA", "/hal/lib/libhal-backend-camera.so",
143 "/hal/lib64/libhal-backend-camera.so", "hal_backend_camera_data",
144 vector<struct hal_abi_version_match>{{
145 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
146 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
150 HalInfo(HAL_MODULE_RADIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
151 "HAL_MODULE_RADIO", "/hal/lib/libhal-backend-radio.so",
152 "/hal/lib64/libhal-backend-radio.so", "hal_backend_radio_data",
153 vector<struct hal_abi_version_match>{{
154 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
155 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
159 HalInfo(HAL_MODULE_CODEC, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
160 "HAL_MODULE_CODEC", "", "", "", {}),
162 HalInfo(HAL_MODULE_USB_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
163 "HAL_MODULE_USB_AUDIO", "", "", "", {}),
165 HalInfo(HAL_MODULE_ALSAUCM, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0,
166 "HAL_MODULE_ALSAUCM", "", "", "", {}),
168 HalInfo(HAL_MODULE_BLUETOOTH, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
169 "HAL_MODULE_BLUETOOTH", "/hal/lib/libhal-backend-bluetooth.so",
170 "/hal/lib64/libhal-backend-bluetooth.so", "hal_backend_bluetooth_data",
171 vector<struct hal_abi_version_match>{{
172 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
173 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
177 HalInfo(HAL_MODULE_WIFI, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
178 "HAL_MODULE_WIFI", "/hal/lib/libhal-backend-wifi.so",
179 "/hal/lib64/libhal-backend-wifi.so", "hal_backend_wifi_data",
180 vector<struct hal_abi_version_match>{{
181 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
182 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
186 HalInfo(HAL_MODULE_NAN, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
187 "HAL_MODULE_NAN", "", "", "", {}),
189 HalInfo(HAL_MODULE_NFC, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
190 "HAL_MODULE_NFC", "/hal/lib/libhal-backend-nfc.so",
191 "/hal/lib64/libhal-backend-nfc.so", "hal_backend_nfc_data",
192 vector<struct hal_abi_version_match>{{
193 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
194 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
198 HalInfo(HAL_MODULE_ZIGBEE, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
199 "HAL_MODULE_ZIGBEE", "/hal/lib/libhal-backend-zigbee.so",
200 "/hal/lib64/libhal-backend-zigbee.so", "hal_backend_zigbee_data",
201 vector<struct hal_abi_version_match>{{
202 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
203 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
207 HalInfo(HAL_MODULE_UWB, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
208 "HAL_MODULE_UWB", "/hal/lib/libhal-backend-uwb.so",
209 "/hal/lib64/libhal-backend-uwb.so", "hal_backend_uwb_data",
210 vector<struct hal_abi_version_match>{{
211 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
212 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
216 HalInfo(HAL_MODULE_MTP, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0,
217 "HAL_MODULE_MTP", "", "", "", {}),
219 HalInfo(HAL_MODULE_TELEPHONY, HAL_GROUP_TELEPHONY, HAL_LICENSE_APACHE_2_0,
220 "HAL_MODULE_TELEPHONY", "", "", "", {}),
222 HalInfo(HAL_MODULE_LOCATION, HAL_GROUP_LOCATION, HAL_LICENSE_APACHE_2_0,
223 "HAL_MODULE_LOCATION", "/hal/lib/libhal-backend-location.so",
224 "/hal/lib64/libhal-backend-location.so", "hal_backend_location_data",
225 vector<struct hal_abi_version_match>{{
226 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
227 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
231 HalInfo(HAL_MODULE_COMMON, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
232 "HAL_MODULE_COMMON", "", "", "", {}),
234 HalInfo(HAL_MODULE_POWER, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
235 "HAL_MODULE_POWER", "/hal/lib/libhal-backend-power.so",
236 "/hal/lib64/libhal-backend-power.so", "hal_backend_power_data",
237 vector<struct hal_abi_version_match>{{
238 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
239 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
243 HalInfo(HAL_MODULE_SENSOR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
244 "HAL_MODULE_SENSOR", "/hal/lib/libhal-backend-sensor.so",
245 "/hal/lib64/libhal-backend-sensor.so", "hal_backend_sensor_data",
246 vector<struct hal_abi_version_match>{{
247 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
248 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
252 HalInfo(HAL_MODULE_PERIPHERAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
253 "HAL_MODULE_PERIPHERAL", "", "", "", {}),
255 HalInfo(HAL_MODULE_DEVICE_BATTERY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
256 "HAL_MODULE_DEVICE_BATTERY", "/hal/lib/libhal-backend-device-battery.so",
257 "/hal/lib64/libhal-backend-device-battery.so", "hal_backend_device_battery_data",
258 vector<struct hal_abi_version_match>{{
259 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
260 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
264 HalInfo(HAL_MODULE_DEVICE_BEZEL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
265 "HAL_MODULE_DEVICE_BEZEL", "/hal/lib/libhal-backend-device-bezel.so",
266 "/hal/lib64/libhal-backend-device-bezel.so", "hal_backend_device_bezel_data",
267 vector<struct hal_abi_version_match>{{
268 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
269 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
273 HalInfo(HAL_MODULE_DEVICE_DISPLAY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
274 "HAL_MODULE_DEVICE_DISPLAY", "/hal/lib/libhal-backend-device-display.so",
275 "/hal/lib64/libhal-backend-device-display.so", "hal_backend_device_display_data",
276 vector<struct hal_abi_version_match>{{
277 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
278 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
282 HalInfo(HAL_MODULE_DEVICE_IR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
283 "HAL_MODULE_DEVICE_IR", "/hal/lib/libhal-backend-device-ir.so",
284 "/hal/lib64/libhal-backend-device-ir.so", "hal_backend_device_ir_data",
285 vector<struct hal_abi_version_match>{{
286 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
287 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
291 HalInfo(HAL_MODULE_DEVICE_TOUCHSCREEN, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
292 "HAL_MODULE_DEVICE_TOUCHSCREEN", "/hal/lib/libhal-backend-device-touchscreen.so",
293 "/hal/lib64/libhal-backend-device-touchscreen.so", "hal_backend_device_touchscreen_data",
294 vector<struct hal_abi_version_match>{{
295 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
296 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
300 HalInfo(HAL_MODULE_DEVICE_LED, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
301 "HAL_MODULE_DEVICE_LED", "/hal/lib/libhal-backend-device-led.so",
302 "/hal/lib64/libhal-backend-device-led.so", "hal_backend_device_led_data",
303 vector<struct hal_abi_version_match>{{
304 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
305 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
309 HalInfo(HAL_MODULE_DEVICE_BOARD, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
310 "HAL_MODULE_DEVICE_BOARD", "/hal/lib/libhal-backend-device-board.so",
311 "/hal/lib64/libhal-backend-device-board.so", "hal_backend_device_board_data",
312 vector<struct hal_abi_version_match>{{
313 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
314 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
318 HalInfo(HAL_MODULE_DEVICE_EXTERNAL_CONNECTION, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
319 "HAL_MODULE_DEVICE_EXTERNAL_CONNECTION", "/hal/lib/libhal-backend-device-external-connection.so",
320 "/hal/lib64/libhal-backend-device-external-connection.so", "hal_backend_device_external_connection_data",
321 vector<struct hal_abi_version_match>{{
322 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
323 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
327 HalInfo(HAL_MODULE_DEVICE_THERMAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
328 "HAL_MODULE_DEVICE_THERMAL", "/hal/lib/libhal-backend-device-thermal.so",
329 "/hal/lib64/libhal-backend-device-thermal.so", "hal_backend_device_thermal_data",
330 vector<struct hal_abi_version_match>{{
331 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
332 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
336 HalInfo(HAL_MODULE_DEVICE_USB_GADGET, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
337 "HAL_MODULE_DEVICE_USB_GADGET", "/hal/lib/libhal-backend-device-usb-gadget.so",
338 "/hal/lib64/libhal-backend-device-usb-gadget.so", "hal_backend_device_usb_gadget_data",
339 vector<struct hal_abi_version_match>{{
340 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
341 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
345 HalInfo(HAL_MODULE_DEVICE_HAPTIC, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0,
346 "HAL_MODULE_DEVICE_HAPTIC", "/hal/lib/libhal-backend-device-haptic.so",
347 "/hal/lib64/libhal-backend-device-haptic.so", "hal_backend_device_haptic_data",
348 vector<struct hal_abi_version_match>{{
349 .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5,
350 .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5
355 TEST_P(HalInfoMatchedTest, get_backend_library_name) {
356 char ret_library_name[MAX_BUFF] = {0, };
358 auto info = GetParam();
360 ret = hal_common_get_backend_library_name(info.module_, ret_library_name, MAX_BUFF);
361 EXPECT_TRUE(ret == TIZEN_ERROR_NONE);
362 #if defined(__aarch64__)
363 EXPECT_STREQ(info.library_name_64bit_, ret_library_name) << "module name is " << info.module_name_;
365 EXPECT_STREQ(info.library_name_, ret_library_name) << "module name is " << info.module_name_;
369 TEST_P(HalInfoMatchedTest, test_symbol_name_module_matching) {
370 char ret_symbol_name[MAX_BUFF] = {0, };
372 auto info = GetParam();
374 ret = hal_common_get_backend_symbol_name(info.module_, ret_symbol_name, MAX_BUFF);
375 EXPECT_TRUE(ret == TIZEN_ERROR_NONE);
376 EXPECT_STREQ(ret_symbol_name, info.symbol_name_) << "module name is " << info.module_name_;
379 TEST_P(HalInfoMatchedTest, test_group_module_matching) {
380 struct __hal_module_info *info = NULL;
382 auto result_info = GetParam();
384 _hal_api_conf_init();
385 info = _hal_api_conf_get_module_info(result_info.module_);
386 ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_;
387 EXPECT_EQ(info->group, result_info.group_) << "module name is " << result_info.module_name_;
388 _hal_api_conf_exit();
391 TEST_P(HalInfoMatchedTest, test_license_module_matching) {
392 struct __hal_module_info *info = NULL;
394 auto result_info = GetParam();
396 _hal_api_conf_init();
397 info = _hal_api_conf_get_module_info(result_info.module_);
398 ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_;
399 EXPECT_EQ(info->license, result_info.license_) << "module name is " << result_info.module_name_;
400 _hal_api_conf_exit();
403 TEST_P(HalInfoMatchedTest, test_module_name_matching) {
404 struct __hal_module_info *info = NULL;
406 auto result_info = GetParam();
408 _hal_api_conf_init();
409 info = _hal_api_conf_get_module_info(result_info.module_);
410 ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_;
411 EXPECT_STREQ(info->module_name, result_info.module_name_) << "module name is " << result_info.module_name_;
412 _hal_api_conf_exit();
415 TEST_P(HalInfoMatchedTest, test_check_backend_abi_version) {
416 struct __hal_module_info *info = NULL;
417 auto result_info = GetParam();
419 _hal_api_conf_init();
420 info = _hal_api_conf_get_module_info(result_info.module_);
421 ASSERT_TRUE(info != nullptr);
423 vector<struct hal_abi_version_match> versions = result_info.versions_;
424 struct hal_abi_version_match *meta_versions = info->abi_versions;
426 for (unsigned int i = 0; i < versions.size(); i++) {
427 struct hal_abi_version_match tmp_version = versions[i];
429 int ret = hal_common_check_backend_abi_version(result_info.module_, tmp_version.platform_abi_version);
430 EXPECT_EQ(ret, TIZEN_ERROR_NONE) << "module name is " << result_info.module_name_;
431 EXPECT_EQ(meta_versions[i].platform_abi_version, tmp_version.platform_abi_version) << "module name is " << result_info.module_name_;;
432 EXPECT_EQ(meta_versions[i].backend_min_abi_version, tmp_version.backend_min_abi_version) << "module name is " << result_info.module_name_;;
434 _hal_api_conf_exit();