From: Seungha Son Date: Tue, 2 Feb 2021 10:22:20 +0000 (+0900) Subject: haltests: Add hal-common-haltests skeleton code X-Git-Tag: submit/tizen/20210216.032529~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F04%2F252804%2F5;p=platform%2Fhal%2Fapi%2Fcommon.git haltests: Add hal-common-haltests skeleton code This is a commit to separate hal-common-haltests and uniittests for testing in the target. After the commit is applied, unittest is verified at gbs build time. The hal-common-haltest verifies the function running on the target and is packaged in rpm to generate the result. Change-Id: I6d298e4940370188c8890b4331e7fa952a20fd1b Signed-off-by: Seungha Son --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 5409058..60a8c50 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,4 +52,4 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc DESTINATION ${LIBDIR}/pkgconfig) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/hal-api.json DESTINATION /etc/hal) -ADD_SUBDIRECTORY(haltests) +ADD_SUBDIRECTORY(tests) diff --git a/haltests/CMakeLists.txt b/haltests/CMakeLists.txt deleted file mode 100644 index 2ed429c..0000000 --- a/haltests/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -ENABLE_TESTING() -SET(HAL_COMMON_UNITTEST "common-unittest") - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Werror") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14 -Wall -Werror") - -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src UNITTEST_SRCS) -ADD_EXECUTABLE(${HAL_COMMON_UNITTEST} ${UNITTEST_SRCS}) - -TARGET_INCLUDE_DIRECTORIES(${HAL_COMMON_UNITTEST} PUBLIC - "${CMAKE_CURRENT_SOURCE_DIR}/../include" -) - -INCLUDE(FindPkgConfig) -pkg_check_modules(hal_common_unittest_pkgs REQUIRED gmock) - -FOREACH(flag ${hal_common_unittest_pkgs_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") -ENDFOREACH(flag) - -TARGET_LINK_LIBRARIES(${HAL_COMMON_UNITTEST} ${hal_common_unittest_pkgs_LDFLAGS} ${PROJECT_NAME}) -SET_TARGET_PROPERTIES(${HAL_COMMON_UNITTEST} PROPERTIES COMPILE_FLAGS "-fPIE -fvisibility=default") -SET_TARGET_PROPERTIES(${HAL_COMMON_UNITTEST} PROPERTIES LINK_FLAGS "-pie") - -ADD_TEST( - NAME ${HAL_COMMON_UNITTEST} - COMMAND ${HAL_COMMON_UNITTEST} -) diff --git a/haltests/src/test_hal.cc b/haltests/src/test_hal.cc deleted file mode 100644 index ddadc56..0000000 --- a/haltests/src/test_hal.cc +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include -#include - -#include -#include - -#include "hal-common.h" -#include "hal-common-interface.h" - -#include "../../src/hal-api-conf.h" -#include "../../src/common.h" - -#define MAX_BUFF 128 - -using namespace std; - - -extern "C" const char *tzplatform_mkpath( - enum tzplatform_variable id, const char *path) { - return "../hal-api.json"; -} - -class CommonHaltest : public testing::Test { - public: - CommonHaltest() {} - virtual ~CommonHaltest() {} - virtual void SetUp() {} - virtual void TearDown() {} -}; - -TEST(CommonHaltest, test_symbol_name_invalid_module) { - char ret_unknown[MAX_BUFF] = {0, }; - char ret_end[MAX_BUFF] = {0, }; - int ret; - - ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_unknown, MAX_BUFF); - EXPECT_TRUE(ret != TIZEN_ERROR_NONE); - - ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_end, MAX_BUFF); - EXPECT_TRUE(ret != TIZEN_ERROR_NONE); -} - -TEST(CommonHaltest, test_check_backend_abi_version_invalid_parameter) { - int ret; - - ret = hal_common_check_backend_abi_version(HAL_MODULE_UNKNOWN, HAL_ABI_VERSION_TIZEN_6_5); - EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); - - ret = hal_common_check_backend_abi_version(HAL_MODULE_END, HAL_ABI_VERSION_TIZEN_6_5); - EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); - - ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_UNKNOWN); - EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); - - ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_END); - EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); -} - -TEST(CommonHaltest, get_backend_library_name_unknown) { - char ret_name[MAX_BUFF] = {0, }; - int ret = hal_common_get_backend_library_name(HAL_MODULE_UNKNOWN, ret_name, MAX_BUFF); - EXPECT_TRUE(ret != TIZEN_ERROR_NONE); -} - -class HalInfo { -public: - enum hal_module module_; - enum hal_group group_; - enum hal_license license_; - const char *module_name_; - const char *library_name_; - const char *library_name_64bit_; - const char *symbol_name_; - vector versions_; - - HalInfo(enum hal_module module, enum hal_group group, enum hal_license license, - const char *module_name, const char *library_name, const char *library_name_64bit, - const char *symbol_name, vector versions) : - module_(module), group_(group), license_(license), - module_name_(module_name), library_name_(library_name), - library_name_64bit_(library_name_64bit), symbol_name_(symbol_name), - versions_(versions) {} -}; - -class HalInfoMatchedTest : public ::testing::TestWithParam {}; - -INSTANTIATE_TEST_CASE_P(CommonHaltest, - HalInfoMatchedTest, - ::testing::Values( - HalInfo(HAL_MODULE_TBM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, - "HAL_MODULE_TBM", "/hal/lib/libhal-backend-tbm.so", - "/hal/lib64/libhal-backend-tbm.so", "hal_backend_tbm_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_TDM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, - "HAL_MODULE_TDM", "/hal/lib/libhal-backend-tdm.so", - "/hal/lib64/libhal-backend-tdm.so", "hal_backend_tdm_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_COREGL, HAL_GROUP_GRAPHICS, HAL_LICENSE_UNKNOWN, - "HAL_MODULE_COREGL", "", "", "", {}), - - HalInfo(HAL_MODULE_INPUT, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, - "HAL_MODULE_INPUT", "", "", "", {}), - - HalInfo(HAL_MODULE_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_AUDIO", "/hal/lib/libhal-backend-audio.so", - "/hal/lib64/libhal-backend-audio.so", "hal_backend_audio_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_CAMERA, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_CAMERA", "/hal/lib/libhal-backend-camera.so", - "/hal/lib64/libhal-backend-camera.so", "hal_backend_camera_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_RADIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_RADIO", "/hal/lib/libhal-backend-radio.so", - "/hal/lib64/libhal-backend-radio.so", "hal_backend_radio_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_CODEC, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_CODEC", "", "", "", {}), - - HalInfo(HAL_MODULE_USB_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_USB_AUDIO", "", "", "", {}), - - HalInfo(HAL_MODULE_ALSAUCM, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_ALSAUCM", "", "", "", {}), - - HalInfo(HAL_MODULE_BLUETOOTH, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_BLUETOOTH", "/hal/lib/libhal-backend-bluetooth.so", - "/hal/lib64/libhal-backend-bluetooth.so", "hal_backend_bluetooth_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_WIFI, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_WIFI", "/hal/lib/libhal-backend-wifi.so", - "/hal/lib64/libhal-backend-wifi.so", "hal_backend_wifi_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_NAN, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_NAN", "", "", "", {}), - - HalInfo(HAL_MODULE_NFC, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_NFC", "/hal/lib/libhal-backend-nfc.so", - "/hal/lib64/libhal-backend-nfc.so", "hal_backend_nfc_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_ZIGBEE, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_ZIGBEE", "/hal/lib/libhal-backend-zigbee.so", - "/hal/lib64/libhal-backend-zigbee.so", "hal_backend_zigbee_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_UWB, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_UWB", "/hal/lib/libhal-backend-uwb.so", - "/hal/lib64/libhal-backend-uwb.so", "hal_backend_uwb_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_MTP, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_MTP", "", "", "", {}), - - HalInfo(HAL_MODULE_TELEPHONY, HAL_GROUP_TELEPHONY, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_TELEPHONY", "", "", "", {}), - - HalInfo(HAL_MODULE_LOCATION, HAL_GROUP_LOCATION, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_LOCATION", "/hal/lib/libhal-backend-location.so", - "/hal/lib64/libhal-backend-location.so", "hal_backend_location_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_COMMON, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_COMMON", "", "", "", {}), - - HalInfo(HAL_MODULE_POWER, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_POWER", "/hal/lib/libhal-backend-power.so", - "/hal/lib64/libhal-backend-power.so", "hal_backend_power_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_SENSOR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_SENSOR", "/hal/lib/libhal-backend-sensor.so", - "/hal/lib64/libhal-backend-sensor.so", "hal_backend_sensor_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_PERIPHERAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_PERIPHERAL", "", "", "", {}), - - HalInfo(HAL_MODULE_DEVICE_BATTERY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_BATTERY", "/hal/lib/libhal-backend-device-battery.so", - "/hal/lib64/libhal-backend-device-battery.so", "hal_backend_device_battery_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_BEZEL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_BEZEL", "/hal/lib/libhal-backend-device-bezel.so", - "/hal/lib64/libhal-backend-device-bezel.so", "hal_backend_device_bezel_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_DISPLAY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_DISPLAY", "/hal/lib/libhal-backend-device-display.so", - "/hal/lib64/libhal-backend-device-display.so", "hal_backend_device_display_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_IR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_IR", "/hal/lib/libhal-backend-device-ir.so", - "/hal/lib64/libhal-backend-device-ir.so", "hal_backend_device_ir_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_TOUCHSCREEN, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_TOUCHSCREEN", "/hal/lib/libhal-backend-device-touchscreen.so", - "/hal/lib64/libhal-backend-device-touchscreen.so", "hal_backend_device_touchscreen_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_LED, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_LED", "/hal/lib/libhal-backend-device-led.so", - "/hal/lib64/libhal-backend-device-led.so", "hal_backend_device_led_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_BOARD, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_BOARD", "/hal/lib/libhal-backend-device-board.so", - "/hal/lib64/libhal-backend-device-board.so", "hal_backend_device_board_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_EXTERNAL_CONNECTION, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_EXTERNAL_CONNECTION", "/hal/lib/libhal-backend-device-external-connection.so", - "/hal/lib64/libhal-backend-device-external-connection.so", "hal_backend_device_external_connection_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_THERMAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_THERMAL", "/hal/lib/libhal-backend-device-thermal.so", - "/hal/lib64/libhal-backend-device-thermal.so", "hal_backend_device_thermal_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_USB_GADGET, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_USB_GADGET", "/hal/lib/libhal-backend-device-usb-gadget.so", - "/hal/lib64/libhal-backend-device-usb-gadget.so", "hal_backend_device_usb_gadget_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ), - - HalInfo(HAL_MODULE_DEVICE_HAPTIC, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, - "HAL_MODULE_DEVICE_HAPTIC", "/hal/lib/libhal-backend-device-haptic.so", - "/hal/lib64/libhal-backend-device-haptic.so", "hal_backend_device_haptic_data", - vector{{ - .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, - .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 - }} - ) -)); - -TEST_P(HalInfoMatchedTest, get_backend_library_name) { - char ret_library_name[MAX_BUFF] = {0, }; - int ret; - auto info = GetParam(); - - ret = hal_common_get_backend_library_name(info.module_, ret_library_name, MAX_BUFF); - EXPECT_TRUE(ret == TIZEN_ERROR_NONE); -#if defined(__aarch64__) - EXPECT_STREQ(info.library_name_64bit_, ret_library_name) << "module name is " << info.module_name_; -#else - EXPECT_STREQ(info.library_name_, ret_library_name) << "module name is " << info.module_name_; -#endif -} - -TEST_P(HalInfoMatchedTest, test_symbol_name_module_matching) { - char ret_symbol_name[MAX_BUFF] = {0, }; - int ret; - auto info = GetParam(); - - ret = hal_common_get_backend_symbol_name(info.module_, ret_symbol_name, MAX_BUFF); - EXPECT_TRUE(ret == TIZEN_ERROR_NONE); - EXPECT_STREQ(ret_symbol_name, info.symbol_name_) << "module name is " << info.module_name_; -} - -TEST_P(HalInfoMatchedTest, test_group_module_matching) { - struct __hal_module_info *info = NULL; - - auto result_info = GetParam(); - - _hal_api_conf_init(); - info = _hal_api_conf_get_module_info(result_info.module_); - ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; - EXPECT_EQ(info->group, result_info.group_) << "module name is " << result_info.module_name_; - _hal_api_conf_exit(); -} - -TEST_P(HalInfoMatchedTest, test_license_module_matching) { - struct __hal_module_info *info = NULL; - - auto result_info = GetParam(); - - _hal_api_conf_init(); - info = _hal_api_conf_get_module_info(result_info.module_); - ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; - EXPECT_EQ(info->license, result_info.license_) << "module name is " << result_info.module_name_; - _hal_api_conf_exit(); -} - -TEST_P(HalInfoMatchedTest, test_module_name_matching) { - struct __hal_module_info *info = NULL; - - auto result_info = GetParam(); - - _hal_api_conf_init(); - info = _hal_api_conf_get_module_info(result_info.module_); - ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; - EXPECT_STREQ(info->module_name, result_info.module_name_) << "module name is " << result_info.module_name_; - _hal_api_conf_exit(); -} - -TEST_P(HalInfoMatchedTest, test_check_backend_abi_version) { - struct __hal_module_info *info = NULL; - auto result_info = GetParam(); - - _hal_api_conf_init(); - info = _hal_api_conf_get_module_info(result_info.module_); - ASSERT_TRUE(info != nullptr); - - vector versions = result_info.versions_; - struct hal_abi_version_match *meta_versions = info->abi_versions; - - for (unsigned int i = 0; i < versions.size(); i++) { - struct hal_abi_version_match tmp_version = versions[i]; - - int ret = hal_common_check_backend_abi_version(result_info.module_, tmp_version.platform_abi_version); - EXPECT_EQ(ret, TIZEN_ERROR_NONE) << "module name is " << result_info.module_name_; - EXPECT_EQ(meta_versions[i].platform_abi_version, tmp_version.platform_abi_version) << "module name is " << result_info.module_name_;; - EXPECT_EQ(meta_versions[i].backend_min_abi_version, tmp_version.backend_min_abi_version) << "module name is " << result_info.module_name_;; - } - _hal_api_conf_exit(); -} diff --git a/haltests/src/test_main.cc b/haltests/src/test_main.cc deleted file mode 100644 index c2eb730..0000000 --- a/haltests/src/test_main.cc +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -int main(int argc, char** argv) { - int ret = -1; - - try { - testing::InitGoogleTest(&argc, argv); - } catch(...) { - std::cout << "Exception occurred" << std::endl; - } - - try { - ret = RUN_ALL_TESTS(); - } catch (const ::testing::internal::GoogleTestFailureException& e) { - ret = -1; - std::cout << "GoogleTestFailureException was thrown:" << e.what() << std::endl; - } - - return ret; -} diff --git a/packaging/hal-api-common.spec b/packaging/hal-api-common.spec index 4f5bfa6..8ef3a81 100644 --- a/packaging/hal-api-common.spec +++ b/packaging/hal-api-common.spec @@ -1,5 +1,6 @@ %define name hal-api-common %define devel_name hal-api-common-devel +%define test_name hal-api-common-haltests ### main package ######### Name: %{name} @@ -33,6 +34,14 @@ Requires: %{name} = %{version}-%{release} %description -n %{devel_name} %{name} Interface for product vendor developer +### test package ######### +%package -n %{test_name} +Summary: tests for hal-api-common +Requires: hal-api-common = %{version} + +%description -n %{test_name} +Haltests for hal-api-common + ### build and install ######### %prep %setup -q @@ -44,7 +53,7 @@ cp %{SOURCE1} . make %{?jobs:-j%jobs} %check -(cd haltests && LD_LIBRARY_PATH=../ ctest -V) +(cd tests/unittest && LD_LIBRARY_PATH=../../ ctest -V) %install rm -rf %{buildroot} @@ -60,7 +69,7 @@ rm -rf %{buildroot} %post /sbin/ldconfig -if [ ! -d %{TZ_SYS_ETC} ] +if [ ! -d %{TZ_SYS_RO_ETC} ] then mkdir -p %{TZ_SYS_RO_ETC}/hal fi @@ -82,3 +91,6 @@ fi %defattr(-,root,root,-) %{_includedir}/hal/*.h %{_libdir}/pkgconfig/*.pc + +%files -n %{test_name} +%{_bindir}/hal/common-haltests diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 0000000..adf4d47 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,2 @@ +ADD_SUBDIRECTORY(unittest) +ADD_SUBDIRECTORY(haltests) diff --git a/tests/haltests/CMakeLists.txt b/tests/haltests/CMakeLists.txt new file mode 100644 index 0000000..0d4cbd4 --- /dev/null +++ b/tests/haltests/CMakeLists.txt @@ -0,0 +1,24 @@ +SET(HAL_COMMON_HALTEST "common-haltests") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Werror") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14 -Wall -Werror") + +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ HALTEST_SRCS) +ADD_EXECUTABLE(${HAL_COMMON_HALTEST} ${HALTEST_SRCS}) + +TARGET_INCLUDE_DIRECTORIES(${HAL_COMMON_HALTEST} PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}/../../include" +) + +INCLUDE(FindPkgConfig) +pkg_check_modules(common-haltests_pkgs REQUIRED gmock) + +FOREACH(flag ${common-haltests_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +TARGET_LINK_LIBRARIES(${HAL_COMMON_HALTEST} ${common-haltests_pkgs_LDFLAGS} ${PROJECT_NAME}) +SET_TARGET_PROPERTIES(${HAL_COMMON_HALTEST} PROPERTIES COMPILE_FLAGS "-fPIE -fvisibility=default") +SET_TARGET_PROPERTIES(${HAL_COMMON_HALTEST} PROPERTIES LINK_FLAGS "-pie") + +INSTALL(TARGETS ${HAL_COMMON_HALTEST} DESTINATION ${EXEC_PREFIX}/hal/) diff --git a/tests/haltests/test_hal.cc b/tests/haltests/test_hal.cc new file mode 100644 index 0000000..685a91c --- /dev/null +++ b/tests/haltests/test_hal.cc @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include + +#include +#include + +#include "hal-common.h" +#include "hal-common-interface.h" + +#include "../../src/hal-api-conf.h" +#include "../../src/common.h" + +using namespace std; + +class CommonHaltest : public testing::Test { + public: + CommonHaltest() {} + virtual ~CommonHaltest() {} + virtual void SetUp() {} + virtual void TearDown() {} +}; + +TEST(CommonHaltest, test_symbol_name_invalid_module) { +} + diff --git a/tests/haltests/test_main.cc b/tests/haltests/test_main.cc new file mode 100644 index 0000000..c2eb730 --- /dev/null +++ b/tests/haltests/test_main.cc @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +int main(int argc, char** argv) { + int ret = -1; + + try { + testing::InitGoogleTest(&argc, argv); + } catch(...) { + std::cout << "Exception occurred" << std::endl; + } + + try { + ret = RUN_ALL_TESTS(); + } catch (const ::testing::internal::GoogleTestFailureException& e) { + ret = -1; + std::cout << "GoogleTestFailureException was thrown:" << e.what() << std::endl; + } + + return ret; +} diff --git a/tests/unittest/CMakeLists.txt b/tests/unittest/CMakeLists.txt new file mode 100644 index 0000000..2ff5c7e --- /dev/null +++ b/tests/unittest/CMakeLists.txt @@ -0,0 +1,28 @@ +ENABLE_TESTING() +SET(HAL_COMMON_UNITTEST "common-unittest") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Werror") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++14 -Wall -Werror") + +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ UNITTEST_SRCS) +ADD_EXECUTABLE(${HAL_COMMON_UNITTEST} ${UNITTEST_SRCS}) + +TARGET_INCLUDE_DIRECTORIES(${HAL_COMMON_UNITTEST} PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}/../../include" +) + +INCLUDE(FindPkgConfig) +pkg_check_modules(hal_common_unittest_pkgs REQUIRED gmock) + +FOREACH(flag ${hal_common_unittest_pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +TARGET_LINK_LIBRARIES(${HAL_COMMON_UNITTEST} ${hal_common_unittest_pkgs_LDFLAGS} ${PROJECT_NAME}) +SET_TARGET_PROPERTIES(${HAL_COMMON_UNITTEST} PROPERTIES COMPILE_FLAGS "-fPIE -fvisibility=default") +SET_TARGET_PROPERTIES(${HAL_COMMON_UNITTEST} PROPERTIES LINK_FLAGS "-pie") + +ADD_TEST( + NAME ${HAL_COMMON_UNITTEST} + COMMAND ${HAL_COMMON_UNITTEST} +) diff --git a/tests/unittest/test_hal.cc b/tests/unittest/test_hal.cc new file mode 100644 index 0000000..c195440 --- /dev/null +++ b/tests/unittest/test_hal.cc @@ -0,0 +1,435 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include +#include + +#include +#include + +#include "hal-common.h" +#include "hal-common-interface.h" + +#include "../../src/hal-api-conf.h" +#include "../../src/common.h" + +#define MAX_BUFF 128 + +using namespace std; + + +extern "C" const char *tzplatform_mkpath( + enum tzplatform_variable id, const char *path) { + return "../../hal-api.json"; +} + +class CommonHaltest : public testing::Test { + public: + CommonHaltest() {} + virtual ~CommonHaltest() {} + virtual void SetUp() {} + virtual void TearDown() {} +}; + +TEST(CommonHaltest, test_symbol_name_invalid_module) { + char ret_unknown[MAX_BUFF] = {0, }; + char ret_end[MAX_BUFF] = {0, }; + int ret; + + ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_unknown, MAX_BUFF); + EXPECT_TRUE(ret != TIZEN_ERROR_NONE); + + ret = hal_common_get_backend_symbol_name(HAL_MODULE_UNKNOWN, ret_end, MAX_BUFF); + EXPECT_TRUE(ret != TIZEN_ERROR_NONE); +} + +TEST(CommonHaltest, test_check_backend_abi_version_invalid_parameter) { + int ret; + + ret = hal_common_check_backend_abi_version(HAL_MODULE_UNKNOWN, HAL_ABI_VERSION_TIZEN_6_5); + EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); + + ret = hal_common_check_backend_abi_version(HAL_MODULE_END, HAL_ABI_VERSION_TIZEN_6_5); + EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); + + ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_UNKNOWN); + EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); + + ret = hal_common_check_backend_abi_version(HAL_MODULE_TBM, HAL_ABI_VERSION_END); + EXPECT_EQ(ret, TIZEN_ERROR_INVALID_PARAMETER); +} + +TEST(CommonHaltest, get_backend_library_name_unknown) { + char ret_name[MAX_BUFF] = {0, }; + int ret = hal_common_get_backend_library_name(HAL_MODULE_UNKNOWN, ret_name, MAX_BUFF); + EXPECT_TRUE(ret != TIZEN_ERROR_NONE); +} + +class HalInfo { +public: + enum hal_module module_; + enum hal_group group_; + enum hal_license license_; + const char *module_name_; + const char *library_name_; + const char *library_name_64bit_; + const char *symbol_name_; + vector versions_; + + HalInfo(enum hal_module module, enum hal_group group, enum hal_license license, + const char *module_name, const char *library_name, const char *library_name_64bit, + const char *symbol_name, vector versions) : + module_(module), group_(group), license_(license), + module_name_(module_name), library_name_(library_name), + library_name_64bit_(library_name_64bit), symbol_name_(symbol_name), + versions_(versions) {} +}; + +class HalInfoMatchedTest : public ::testing::TestWithParam {}; + +INSTANTIATE_TEST_CASE_P(CommonHaltest, + HalInfoMatchedTest, + ::testing::Values( + HalInfo(HAL_MODULE_TBM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, + "HAL_MODULE_TBM", "/hal/lib/libhal-backend-tbm.so", + "/hal/lib64/libhal-backend-tbm.so", "hal_backend_tbm_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_TDM, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, + "HAL_MODULE_TDM", "/hal/lib/libhal-backend-tdm.so", + "/hal/lib64/libhal-backend-tdm.so", "hal_backend_tdm_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_COREGL, HAL_GROUP_GRAPHICS, HAL_LICENSE_UNKNOWN, + "HAL_MODULE_COREGL", "", "", "", {}), + + HalInfo(HAL_MODULE_INPUT, HAL_GROUP_GRAPHICS, HAL_LICENSE_MIT, + "HAL_MODULE_INPUT", "", "", "", {}), + + HalInfo(HAL_MODULE_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_AUDIO", "/hal/lib/libhal-backend-audio.so", + "/hal/lib64/libhal-backend-audio.so", "hal_backend_audio_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_CAMERA, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_CAMERA", "/hal/lib/libhal-backend-camera.so", + "/hal/lib64/libhal-backend-camera.so", "hal_backend_camera_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_RADIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_RADIO", "/hal/lib/libhal-backend-radio.so", + "/hal/lib64/libhal-backend-radio.so", "hal_backend_radio_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_CODEC, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_CODEC", "", "", "", {}), + + HalInfo(HAL_MODULE_USB_AUDIO, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_USB_AUDIO", "", "", "", {}), + + HalInfo(HAL_MODULE_ALSAUCM, HAL_GROUP_MULTIMEDIA, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_ALSAUCM", "", "", "", {}), + + HalInfo(HAL_MODULE_BLUETOOTH, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_BLUETOOTH", "/hal/lib/libhal-backend-bluetooth.so", + "/hal/lib64/libhal-backend-bluetooth.so", "hal_backend_bluetooth_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_WIFI, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_WIFI", "/hal/lib/libhal-backend-wifi.so", + "/hal/lib64/libhal-backend-wifi.so", "hal_backend_wifi_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_NAN, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_NAN", "", "", "", {}), + + HalInfo(HAL_MODULE_NFC, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_NFC", "/hal/lib/libhal-backend-nfc.so", + "/hal/lib64/libhal-backend-nfc.so", "hal_backend_nfc_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_ZIGBEE, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_ZIGBEE", "/hal/lib/libhal-backend-zigbee.so", + "/hal/lib64/libhal-backend-zigbee.so", "hal_backend_zigbee_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_UWB, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_UWB", "/hal/lib/libhal-backend-uwb.so", + "/hal/lib64/libhal-backend-uwb.so", "hal_backend_uwb_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_MTP, HAL_GROUP_CONNECTIVITY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_MTP", "", "", "", {}), + + HalInfo(HAL_MODULE_TELEPHONY, HAL_GROUP_TELEPHONY, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_TELEPHONY", "", "", "", {}), + + HalInfo(HAL_MODULE_LOCATION, HAL_GROUP_LOCATION, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_LOCATION", "/hal/lib/libhal-backend-location.so", + "/hal/lib64/libhal-backend-location.so", "hal_backend_location_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_COMMON, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_COMMON", "", "", "", {}), + + HalInfo(HAL_MODULE_POWER, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_POWER", "/hal/lib/libhal-backend-power.so", + "/hal/lib64/libhal-backend-power.so", "hal_backend_power_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_SENSOR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_SENSOR", "/hal/lib/libhal-backend-sensor.so", + "/hal/lib64/libhal-backend-sensor.so", "hal_backend_sensor_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_PERIPHERAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_PERIPHERAL", "", "", "", {}), + + HalInfo(HAL_MODULE_DEVICE_BATTERY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_BATTERY", "/hal/lib/libhal-backend-device-battery.so", + "/hal/lib64/libhal-backend-device-battery.so", "hal_backend_device_battery_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_BEZEL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_BEZEL", "/hal/lib/libhal-backend-device-bezel.so", + "/hal/lib64/libhal-backend-device-bezel.so", "hal_backend_device_bezel_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_DISPLAY, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_DISPLAY", "/hal/lib/libhal-backend-device-display.so", + "/hal/lib64/libhal-backend-device-display.so", "hal_backend_device_display_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_IR, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_IR", "/hal/lib/libhal-backend-device-ir.so", + "/hal/lib64/libhal-backend-device-ir.so", "hal_backend_device_ir_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_TOUCHSCREEN, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_TOUCHSCREEN", "/hal/lib/libhal-backend-device-touchscreen.so", + "/hal/lib64/libhal-backend-device-touchscreen.so", "hal_backend_device_touchscreen_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_LED, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_LED", "/hal/lib/libhal-backend-device-led.so", + "/hal/lib64/libhal-backend-device-led.so", "hal_backend_device_led_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_BOARD, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_BOARD", "/hal/lib/libhal-backend-device-board.so", + "/hal/lib64/libhal-backend-device-board.so", "hal_backend_device_board_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_EXTERNAL_CONNECTION, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_EXTERNAL_CONNECTION", "/hal/lib/libhal-backend-device-external-connection.so", + "/hal/lib64/libhal-backend-device-external-connection.so", "hal_backend_device_external_connection_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_THERMAL, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_THERMAL", "/hal/lib/libhal-backend-device-thermal.so", + "/hal/lib64/libhal-backend-device-thermal.so", "hal_backend_device_thermal_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_USB_GADGET, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_USB_GADGET", "/hal/lib/libhal-backend-device-usb-gadget.so", + "/hal/lib64/libhal-backend-device-usb-gadget.so", "hal_backend_device_usb_gadget_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ), + + HalInfo(HAL_MODULE_DEVICE_HAPTIC, HAL_GROUP_SYSTEM, HAL_LICENSE_APACHE_2_0, + "HAL_MODULE_DEVICE_HAPTIC", "/hal/lib/libhal-backend-device-haptic.so", + "/hal/lib64/libhal-backend-device-haptic.so", "hal_backend_device_haptic_data", + vector{{ + .platform_abi_version = HAL_ABI_VERSION_TIZEN_6_5, + .backend_min_abi_version = HAL_ABI_VERSION_TIZEN_6_5 + }} + ) +)); + +TEST_P(HalInfoMatchedTest, get_backend_library_name) { + char ret_library_name[MAX_BUFF] = {0, }; + int ret; + auto info = GetParam(); + + ret = hal_common_get_backend_library_name(info.module_, ret_library_name, MAX_BUFF); + EXPECT_TRUE(ret == TIZEN_ERROR_NONE); +#if defined(__aarch64__) + EXPECT_STREQ(info.library_name_64bit_, ret_library_name) << "module name is " << info.module_name_; +#else + EXPECT_STREQ(info.library_name_, ret_library_name) << "module name is " << info.module_name_; +#endif +} + +TEST_P(HalInfoMatchedTest, test_symbol_name_module_matching) { + char ret_symbol_name[MAX_BUFF] = {0, }; + int ret; + auto info = GetParam(); + + ret = hal_common_get_backend_symbol_name(info.module_, ret_symbol_name, MAX_BUFF); + EXPECT_TRUE(ret == TIZEN_ERROR_NONE); + EXPECT_STREQ(ret_symbol_name, info.symbol_name_) << "module name is " << info.module_name_; +} + +TEST_P(HalInfoMatchedTest, test_group_module_matching) { + struct __hal_module_info *info = NULL; + + auto result_info = GetParam(); + + _hal_api_conf_init(); + info = _hal_api_conf_get_module_info(result_info.module_); + ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; + EXPECT_EQ(info->group, result_info.group_) << "module name is " << result_info.module_name_; + _hal_api_conf_exit(); +} + +TEST_P(HalInfoMatchedTest, test_license_module_matching) { + struct __hal_module_info *info = NULL; + + auto result_info = GetParam(); + + _hal_api_conf_init(); + info = _hal_api_conf_get_module_info(result_info.module_); + ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; + EXPECT_EQ(info->license, result_info.license_) << "module name is " << result_info.module_name_; + _hal_api_conf_exit(); +} + +TEST_P(HalInfoMatchedTest, test_module_name_matching) { + struct __hal_module_info *info = NULL; + + auto result_info = GetParam(); + + _hal_api_conf_init(); + info = _hal_api_conf_get_module_info(result_info.module_); + ASSERT_TRUE(info != nullptr) << "module name is " << result_info.module_name_; + EXPECT_STREQ(info->module_name, result_info.module_name_) << "module name is " << result_info.module_name_; + _hal_api_conf_exit(); +} + +TEST_P(HalInfoMatchedTest, test_check_backend_abi_version) { + struct __hal_module_info *info = NULL; + auto result_info = GetParam(); + + _hal_api_conf_init(); + info = _hal_api_conf_get_module_info(result_info.module_); + ASSERT_TRUE(info != nullptr); + + vector versions = result_info.versions_; + struct hal_abi_version_match *meta_versions = info->abi_versions; + + for (unsigned int i = 0; i < versions.size(); i++) { + struct hal_abi_version_match tmp_version = versions[i]; + + int ret = hal_common_check_backend_abi_version(result_info.module_, tmp_version.platform_abi_version); + EXPECT_EQ(ret, TIZEN_ERROR_NONE) << "module name is " << result_info.module_name_; + EXPECT_EQ(meta_versions[i].platform_abi_version, tmp_version.platform_abi_version) << "module name is " << result_info.module_name_;; + EXPECT_EQ(meta_versions[i].backend_min_abi_version, tmp_version.backend_min_abi_version) << "module name is " << result_info.module_name_;; + } + _hal_api_conf_exit(); +} diff --git a/tests/unittest/test_main.cc b/tests/unittest/test_main.cc new file mode 100644 index 0000000..c2eb730 --- /dev/null +++ b/tests/unittest/test_main.cc @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +int main(int argc, char** argv) { + int ret = -1; + + try { + testing::InitGoogleTest(&argc, argv); + } catch(...) { + std::cout << "Exception occurred" << std::endl; + } + + try { + ret = RUN_ALL_TESTS(); + } catch (const ::testing::internal::GoogleTestFailureException& e) { + ret = -1; + std::cout << "GoogleTestFailureException was thrown:" << e.what() << std::endl; + } + + return ret; +}