enum hal_common_backend_compatibility compatibility;
int ret;
- /* mock systemd generator context */
- setenv("SYSTEMD_SCOPE", "system", 1);
set_compatibility_result_path(g_compatibility_result_path);
ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
unlink(g_compatibility_result_path);
unset_compatibility_result_path();
reset_compatibility_info();
- unsetenv("SYSTEMD_SCOPE");
-}
-
-TEST_F(HalccObjectTest, hal_create_result_file_fail)
-{
- enum hal_common_backend_compatibility compatibility;
- int ret;
-
- set_compatibility_result_path(g_compatibility_result_path);
-
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- unset_compatibility_result_path();
- reset_compatibility_info();
-}
-
-TEST_F(HalccObjectTest, hal_check_compatibility_on_generator_context)
-{
- enum hal_common_backend_compatibility compatibility;
- int ret;
-
- setenv("SYSTEMD_SCOPE", "system", 1);
- set_compatibility_result_path(g_compatibility_result_path);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 0); /* compatible with 1.2 */
- mock_hal_backend_data_set_version(HAL_MODULE_TDM, 5, 0); /* compatible with 5.5 */
-
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, 0);
-
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_TDM, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_unset_version(HAL_MODULE_DEVICE_DISPLAY);
- mock_hal_backend_data_unset_version(HAL_MODULE_TDM);
-
- unlink(g_compatibility_result_path);
- unset_compatibility_result_path();
- reset_compatibility_info();
- unsetenv("SYSTEMD_SCOPE");
-}
-
-TEST_F(HalccObjectTest, hal_check_compatibility_not_on_generator_context)
-{
- /**
- * As it is not on generator context and there is no result file, it parses
- * manifest file for every call for hal_api_cc_check_backend_compatibility(),
- * dlopen backend and derive compatibility by comparing their version.
- *
- * However, this test driver, technically, won't dlopen but instead modify memory
- * of dlopened backend data. This has effect of changing HAL image with specified
- * version, make testing various HAL backend version handy.
- */
- enum hal_common_backend_compatibility compatibility;
- int ret;
-
- set_compatibility_result_path(g_compatibility_result_path);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 1);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 1);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 2);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 3);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 2, 0);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 2, 1);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 2, 2);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 3, 0);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 3, 1);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 4, 0);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_TDM, 5, 5);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_TDM, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_COMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_TDM, 5, 6);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_TDM, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- mock_hal_backend_data_set_version(HAL_MODULE_TDM, 6, 5);
- ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_TDM, &compatibility);
- ASSERT_EQ(ret, 0);
- ASSERT_EQ(compatibility, HAL_COMMON_BACKEND_COMPATIBILITY_INCOMPATIBLE);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- mock_hal_backend_data_unset_version(HAL_MODULE_DEVICE_DISPLAY);
- mock_hal_backend_data_unset_version(HAL_MODULE_TDM);
- unset_compatibility_result_path();
-}
-
-TEST_F(HalccObjectTest, hal_get_backend_without_generator_without_result_file)
-{
- int ret;
- void *funcs;
-
- set_compatibility_result_path(g_compatibility_result_path);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- funcs = malloc(10000);
- ASSERT_NE(funcs, nullptr);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 1);
- ret = hal_common_get_backend(HAL_MODULE_DEVICE_DISPLAY, (void **) funcs);
- ASSERT_EQ(ret, 0);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- free(funcs);
- funcs = NULL;
-
- mock_hal_backend_data_unset_version(HAL_MODULE_DEVICE_DISPLAY);
- unset_compatibility_result_path();
- reset_compatibility_info();
-}
-
-TEST_F(HalccObjectTest, hal_get_backend_with_generator_without_result_file)
-{
- int ret;
- void *funcs;
-
- setenv("SYSTEMD_SCOPE", "system", 1);
- set_compatibility_result_path(g_compatibility_result_path);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- funcs = malloc(10000);
- ASSERT_NE(funcs, nullptr);
-
- mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 1);
- ret = hal_common_get_backend(HAL_MODULE_DEVICE_DISPLAY, (void **) funcs);
- ASSERT_EQ(ret, 0);
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- /**
- * FIXME:
- * Temporarily allow incompatible version until all of hal modules specify
- * their manifest.
- *
- * mock_hal_backend_data_set_version(HAL_MODULE_DEVICE_DISPLAY, 1, 5);
- * ret = hal_common_get_backend(HAL_MODULE_DEVICE_DISPLAY, (void **) funcs);
- * ASSERT_EQ(ret, -EINVAL);
- */
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- free(funcs);
- funcs = NULL;
-
- mock_hal_backend_data_unset_version(HAL_MODULE_DEVICE_DISPLAY);
- unset_compatibility_result_path();
- unsetenv("SYSTEMD_SCOPE");
}
TEST_F(HalccObjectTest, hal_get_manifest_version_success_with_result_file)
enum hal_common_backend_compatibility compatibility;
struct versions_info vi = { 0 , };
- setenv("SYSTEMD_SCOPE", "system", 1);
set_compatibility_result_path(g_compatibility_result_path);
ret = hal_api_cc_check_backend_compatibility(HAL_MODULE_DEVICE_DISPLAY, &compatibility);
unlink(g_compatibility_result_path);
unset_compatibility_result_path();
reset_compatibility_info();
- unsetenv("SYSTEMD_SCOPE");
-}
-
-TEST_F(HalccObjectTest, hal_get_manifest_version_success_without_result_file)
-{
- int ret;
- struct versions_info vi = { 0 , };
-
- ret = access(g_compatibility_result_path, F_OK | ACCESS_DO_NOT_HOOK);
- ASSERT_EQ(ret, -1);
-
- ret = hal_common_get_supported_interface_versions(HAL_MODULE_DEVICE_DISPLAY,
- &vi.major_versions, &vi.minor_versions, &vi.num_versions);
- ASSERT_EQ(ret, 0);
-
- ASSERT_THAT(&vi, HasExactVersionArray("1.2"));
- ASSERT_THAT(&vi, HasExactVersionArray("2.1"));
- ASSERT_THAT(&vi, HasExactVersionArray("3.0"));
-
- free(vi.major_versions);
- vi.major_versions = NULL;
-
- free(vi.minor_versions);
- vi.minor_versions = NULL;
-
- reset_compatibility_info();
}