From: Jaehyun Kim Date: Thu, 30 Aug 2018 13:16:26 +0000 (+0900) Subject: Change the directory and header file name for HAL TC X-Git-Tag: submit/tizen/20180831.123807^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b81c27fb3061a9587e854cc4bf362361bdd647da;p=platform%2Fcore%2Fconnectivity%2Fnet-config.git Change the directory and header file name for HAL TC Change-Id: Ib1b701d14d35c9c34a819c12e2c1014660f92101 Signed-off-by: Jaehyun Kim --- diff --git a/CMakeLists.txt b/CMakeLists.txt index e39e645..f187136 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,5 +130,5 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/config/security-network-config.conf DESTINATIO ADD_SUBDIRECTORY(plugin/headed) ADD_SUBDIRECTORY(plugin/telephony) -ADD_SUBDIRECTORY(unittest) +ADD_SUBDIRECTORY(haltests) ADD_SUBDIRECTORY(gtest) diff --git a/haltests/CMakeLists.txt b/haltests/CMakeLists.txt new file mode 100755 index 0000000..30b5be8 --- /dev/null +++ b/haltests/CMakeLists.txt @@ -0,0 +1,38 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(gtest-net-config C CXX) + +SET(GTEST_TEST "gtest-net-config") +ADD_DEFINITIONS("-DUSE_DLOG") + +SET(REQUIRES_LIST ${REQUIRES_LIST} + glib-2.0 + gio-2.0 + gmock + dlog + capi-network-wifi-manager + capi-network-wifi-direct + capi-network-softap + capi-system-info +) + +INCLUDE(FindPkgConfig) +PKG_CHECK_MODULES(GTEST_TEST_PKG REQUIRED ${REQUIRES_LIST}) + +FOREACH(flag ${GTEST_TEST_PKG_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wall -fPIE") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") + +aux_source_directory(. sources) +FOREACH(src ${sources}) + GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) + MESSAGE("${src_name}") + ADD_EXECUTABLE(${src_name} ${src}) + TARGET_LINK_LIBRARIES(${src_name} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} -ldl -lgcov) + INSTALL(TARGETS ${src_name} RUNTIME DESTINATION ${BIN_DIR}) +ENDFOREACH() + diff --git a/haltests/haltests.h b/haltests/haltests.h new file mode 100755 index 0000000..7c56f1d --- /dev/null +++ b/haltests/haltests.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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. + */ +#ifndef __NETCONFIG_UNITTEST_H__ +#define __NETCONFIG_UNITTEST_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define GMAINTIMEOUT 20000 +#define MAX_AP_LENGTH 33 +#define MAX_KEY_LENGTH 64 +#define MAX_PATH_LENGTH 256 + +#define FEATURE_WIFI "http://tizen.org/feature/network.wifi" +#define WIFIDIRECT_FEATURE "http://tizen.org/feature/network.wifi.direct" + +#define WIFI_ADDRESS_PATH "/sys/class/net/wlan0/address" +#define WIFI_P2P_PATH "/sys/class/net/p2p0/address" +#define WIFI_P2P_CONFIG_PATH "/etc/wifi-direct/wifi-direct-manager.conf" +#define WFD_CONF_GROUP_NAME "wfd-manager" + +GMainLoop *g_pMainLoop; +guint g_nTimeoutId; +bool g_bFeatureWifi; +bool g_bFeatureP2P; + +#define RUN_GMAIN_LOOP(callback) {\ + g_pMainLoop = g_main_loop_new(NULL, false);\ + g_nTimeoutId = g_timeout_add(GMAINTIMEOUT, callback, g_pMainLoop);\ + g_main_loop_run(g_pMainLoop);\ + g_source_remove(g_nTimeoutId);\ + g_pMainLoop = NULL;\ +} + +#define QUIT_GMAIN_LOOP {\ + if (g_pMainLoop)\ + g_main_loop_quit(g_pMainLoop);\ +} + +#ifdef __cplusplus +} +#endif + +#endif /* __NETCONFIG_UNITTEST_H__ */ diff --git a/haltests/net-config-haltests.cpp b/haltests/net-config-haltests.cpp new file mode 100755 index 0000000..11ae2a7 --- /dev/null +++ b/haltests/net-config-haltests.cpp @@ -0,0 +1,438 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved + * + * 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 +#include +#include +#include +#include +#include "haltests.h" + +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; + +static char ap_name[MAX_AP_LENGTH]; +static wifi_manager_h wifi = NULL; +static wifi_manager_error_e rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; +wifi_manager_ap_h g_hWifiAP; + +static int rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; +static wifi_direct_device_state_e dev_state = WIFI_DIRECT_DEVICE_STATE_DEACTIVATED; +static char p2p_ifname[MAX_PATH_LENGTH]; + +static softap_h sa = NULL; +static bool g_is_requested; +static softap_error_e g_error; +static softap_disabled_cause_e g_code; + +static bool __check_feature_supported(char *key) +{ + bool value = false; + int ret = system_info_get_platform_bool(key, &value); + + EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed"; + EXPECT_EQ(true, value) << key << " feature is not supported"; + + return value; +} + +static void __test_callback(wifi_manager_error_e result, void* user_data) +{ + rst = result; + QUIT_GMAIN_LOOP; +} + +static gboolean __timeout_callback(gpointer data) +{ + EXPECT_TRUE(0) << "Wi-Fi TC callback timeout!"; + QUIT_GMAIN_LOOP; + return FALSE; +} + +static void __device_state_changed_cb(int error_code, + wifi_direct_device_state_e device_state, void *user_data) +{ + rst_p2p = error_code; + dev_state = device_state; + QUIT_GMAIN_LOOP; +} + +static void __enabled_cb(softap_error_e error, bool is_requested, void *data) +{ + g_error = error; + g_is_requested = is_requested; + QUIT_GMAIN_LOOP; +} + +static void __disabled_cb(softap_error_e error, softap_disabled_cause_e code, void *data) +{ + g_error = error; + g_code = code; + QUIT_GMAIN_LOOP; +} + +static void __set_p2p_ifname(void) +{ + GKeyFile *key_file = NULL; + GError *error = NULL; + char *ifn = NULL; + + key_file = g_key_file_new(); + if (!g_key_file_load_from_file(key_file, WIFI_P2P_CONFIG_PATH, G_KEY_FILE_NONE, &error)) { + g_clear_error(&error); + g_key_file_free(key_file); + key_file = NULL; + return; + } + + ifn = g_key_file_get_string(key_file, WFD_CONF_GROUP_NAME, "p2p_interface", &error); + if (ifn) + g_snprintf(p2p_ifname, MAX_PATH_LENGTH, "/sys/class/net/%s/address", ifn); + + if (error) + g_clear_error(&error); + g_key_file_free(key_file); +} + +static bool __found_ap_callback(wifi_manager_ap_h ap, void *user_data) +{ + char *ap_name = NULL; + char *ap_name_part = (char *)user_data; + size_t ap_name_len = strlen(ap_name_part); + int ret = WIFI_MANAGER_ERROR_NONE; + + if (ap) { + ret = wifi_manager_ap_get_essid(ap, &ap_name); + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Unable to get essid"; + + if (!ap_name) + return true; + + if (!strncmp(ap_name, ap_name_part, ap_name_len)) { + g_free(ap_name); + ret = wifi_manager_ap_clone(&g_hWifiAP, ap); + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Unable to clone the AP handle"; + if (g_hWifiAP) { + rst = WIFI_MANAGER_ERROR_NONE; + return false; + } + } + } + + return true; +} + +TEST(Hal_wifi, Init_p) +{ + g_bFeatureWifi = __check_feature_supported((char*)FEATURE_WIFI); + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int rv = wifi_manager_initialize(&wifi); + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Initialization failure"; +} + +TEST(Hal_wifi, Activate_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int rv; + bool activated; + + rv = wifi_manager_is_activated(wifi, &activated); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to get Wi-Fi device state"; + + if (activated) + goto done; + + rv = wifi_manager_activate(wifi, __test_callback, NULL); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to activate Wi-Fi device"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Activetion failure"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; + +done: + rv = access(WIFI_ADDRESS_PATH, F_OK); + EXPECT_EQ(0, rv) << "Could not access " << WIFI_ADDRESS_PATH; +} + +TEST(Hal_wifi, Scan_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int rv = wifi_manager_scan(wifi, __test_callback, NULL); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to scan"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Scan failure"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; +} + +TEST(Hal_wifi, Connect_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + wifi_manager_connection_state_e connection_state; + int ret = WIFI_MANAGER_ERROR_NONE; + + ret = wifi_manager_get_connection_state(wifi, &connection_state); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to get connection state"; + + if (connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED) + return; + + if (!ap_name[0]) + return; + + ret = wifi_manager_foreach_found_ap(wifi, __found_ap_callback, (char *)ap_name); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Failed to find the AP"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; + + ret = wifi_manager_connect(wifi, g_hWifiAP, __test_callback, NULL); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to connect"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Connection failure"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; +} + +TEST(Hal_wifi, Disconnect_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int ret = WIFI_MANAGER_ERROR_NONE; + wifi_manager_ap_h hAP = NULL; + + ret = wifi_manager_get_connected_ap(wifi, &hAP); + if (ret == WIFI_MANAGER_ERROR_NO_CONNECTION) + return; + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to get connected AP"; + + ret = wifi_manager_disconnect(wifi, hAP, __test_callback, NULL); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to disconnect"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Disconnection failure"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; + + ret = wifi_manager_forget_ap(wifi, hAP); + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to forget AP"; +} + +TEST(Hal_wifi, Deactivate_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int rv = wifi_manager_deactivate(wifi, __test_callback, NULL); + ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to deactivate Wi-Fi device"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Deactivation failure"; + rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; + + rv = access(WIFI_ADDRESS_PATH, F_OK); + EXPECT_EQ(-1, rv) << WIFI_ADDRESS_PATH << " is exist"; +} + +TEST(Hal_wifi, Deinit_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int rv = wifi_manager_deinitialize(wifi); + EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Deinitialization failure"; +} + +TEST(Hal_wifi_direct, Init_p) +{ + g_bFeatureP2P = __check_feature_supported((char*)WIFIDIRECT_FEATURE); + ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; + + int rv = wifi_direct_initialize(); + EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Initialization failure"; +} + +TEST(Hal_wifi_direct, Activate_p) +{ + ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; + + int rv; + wifi_direct_state_e state = WIFI_DIRECT_STATE_ACTIVATED; + + rv = wifi_direct_get_state(&state); + ASSERT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; + + if (state != WIFI_DIRECT_STATE_DEACTIVATED) + goto done; + + rv = wifi_direct_set_device_state_changed_cb(__device_state_changed_cb, NULL); + ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to set activation callback"; + + rv = wifi_direct_activate(); + ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to activate Wi-Fi Direct device"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rst_p2p) << "Activetion failure"; + rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; + + rv = wifi_direct_get_state(&state); + EXPECT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; + EXPECT_EQ(WIFI_DIRECT_STATE_ACTIVATED, state) << "Activetion failure"; + +done: + if (p2p_ifname[0]) + rv = access(p2p_ifname, F_OK); + else + rv = access(WIFI_P2P_PATH, F_OK); + EXPECT_EQ(0, rv) << "Could not access " << WIFI_ADDRESS_PATH; +} + +TEST(Hal_wifi_direct, Deactivate_p) +{ + ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; + + int rv; + + rv = wifi_direct_deactivate(); + ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to deactivate Wi-Fi Direct"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rst_p2p) << "Deactivation failure"; + rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; + + wifi_direct_state_e state = WIFI_DIRECT_STATE_ACTIVATED; + rv = wifi_direct_get_state(&state); + EXPECT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; + + EXPECT_EQ(WIFI_DIRECT_STATE_DEACTIVATED, state) << "Deactivetion failure"; + + if (p2p_ifname[0]) + rv = access(p2p_ifname, F_OK); + else + rv = access(WIFI_P2P_PATH, F_OK); + EXPECT_EQ(-1, rv) << WIFI_P2P_PATH << " is exist"; + + rv = wifi_direct_unset_device_state_changed_cb(); + EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to unset activation callback"; +} + +TEST(Hal_wifi_direct, Deinit_p) +{ + ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; + + int rv = wifi_direct_deinitialize(); + EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Deinitialization failure"; +} + +TEST(Hal_softap, Init_p) +{ + g_bFeatureWifi = __check_feature_supported((char*)FEATURE_WIFI); + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int ret = SOFTAP_ERROR_NONE; + + ret = softap_create(&sa); + ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Initialization failure"; + + ret = softap_set_enabled_cb(sa, __enabled_cb, NULL); + EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to set enabled callback!!"; + + ret = softap_set_disabled_cb(sa, __disabled_cb, NULL); + EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to set disabled callback!!"; +} + +TEST(Hal_softap, Activate_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int ret = SOFTAP_ERROR_NONE; + bool enabled = false; + + ret = softap_is_enabled(sa, &enabled); + ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to get SoftAP state"; + + if (enabled) + goto done; + + ret = softap_enable(sa); + ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to enable SoftAP"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(SOFTAP_ERROR_NONE, g_error) << "Failed to enable SoftAP"; + EXPECT_EQ(true, g_is_requested) << "Failed to enable SoftAP"; + +done: + ret = access(WIFI_ADDRESS_PATH, F_OK); + EXPECT_EQ(0, ret) << "Could not access " << WIFI_ADDRESS_PATH; +} + +TEST(Hal_softap, Deactivate_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int ret = SOFTAP_ERROR_NONE; + + ret = softap_disable(sa); + ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to disable SoftAP"; + + RUN_GMAIN_LOOP(__timeout_callback); + + EXPECT_EQ(SOFTAP_ERROR_NONE, g_error) << "Failed to disable SoftAP" << g_code; + + ret = access(WIFI_ADDRESS_PATH, F_OK); + EXPECT_EQ(-1, ret) << WIFI_ADDRESS_PATH << " is exist"; +} + +TEST(Hal_softap, Deinit_p) +{ + ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; + + int ret = SOFTAP_ERROR_NONE; + + ret = softap_unset_enabled_cb(sa); + EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to unset enabled callback!!"; + + ret = softap_unset_disabled_cb(sa); + EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to unset disabled callback!!"; + + ret = softap_destroy(sa); + EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Deinitialization failure"; +} + +int main(int argc, char **argv) +{ + if (argc > 1 && argv[argc - 1][0] != '-') { + g_strlcpy(ap_name, argv[argc - 1], MAX_AP_LENGTH); + argc--; + } + + __set_p2p_ifname(); + InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt deleted file mode 100755 index 30b5be8..0000000 --- a/unittest/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(gtest-net-config C CXX) - -SET(GTEST_TEST "gtest-net-config") -ADD_DEFINITIONS("-DUSE_DLOG") - -SET(REQUIRES_LIST ${REQUIRES_LIST} - glib-2.0 - gio-2.0 - gmock - dlog - capi-network-wifi-manager - capi-network-wifi-direct - capi-network-softap - capi-system-info -) - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(GTEST_TEST_PKG REQUIRED ${REQUIRES_LIST}) - -FOREACH(flag ${GTEST_TEST_PKG_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wall -fPIE") -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") - -aux_source_directory(. sources) -FOREACH(src ${sources}) - GET_FILENAME_COMPONENT(src_name ${src} NAME_WE) - MESSAGE("${src_name}") - ADD_EXECUTABLE(${src_name} ${src}) - TARGET_LINK_LIBRARIES(${src_name} ${GTEST_TEST_LDFLAGS} ${GTEST_TEST_PKG_LDFLAGS} -ldl -lgcov) - INSTALL(TARGETS ${src_name} RUNTIME DESTINATION ${BIN_DIR}) -ENDFOREACH() - diff --git a/unittest/net-config-haltests.cpp b/unittest/net-config-haltests.cpp deleted file mode 100755 index c8ff764..0000000 --- a/unittest/net-config-haltests.cpp +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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 -#include -#include -#include -#include -#include "unittest.h" - -using ::testing::InitGoogleTest; -using ::testing::Test; -using ::testing::TestCase; - -static char ap_name[MAX_AP_LENGTH]; -static wifi_manager_h wifi = NULL; -static wifi_manager_error_e rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; -wifi_manager_ap_h g_hWifiAP; - -static int rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; -static wifi_direct_device_state_e dev_state = WIFI_DIRECT_DEVICE_STATE_DEACTIVATED; -static char p2p_ifname[MAX_PATH_LENGTH]; - -static softap_h sa = NULL; -static bool g_is_requested; -static softap_error_e g_error; -static softap_disabled_cause_e g_code; - -static bool __check_feature_supported(char *key) -{ - bool value = false; - int ret = system_info_get_platform_bool(key, &value); - - EXPECT_EQ(SYSTEM_INFO_ERROR_NONE, ret) << "system_info_get_platform_bool failed"; - EXPECT_EQ(true, value) << key << " feature is not supported"; - - return value; -} - -static void __test_callback(wifi_manager_error_e result, void* user_data) -{ - rst = result; - QUIT_GMAIN_LOOP; -} - -static gboolean __timeout_callback(gpointer data) -{ - EXPECT_TRUE(0) << "Wi-Fi TC callback timeout!"; - QUIT_GMAIN_LOOP; - return FALSE; -} - -static void __device_state_changed_cb(int error_code, - wifi_direct_device_state_e device_state, void *user_data) -{ - rst_p2p = error_code; - dev_state = device_state; - QUIT_GMAIN_LOOP; -} - -static void __enabled_cb(softap_error_e error, bool is_requested, void *data) -{ - g_error = error; - g_is_requested = is_requested; - QUIT_GMAIN_LOOP; -} - -static void __disabled_cb(softap_error_e error, softap_disabled_cause_e code, void *data) -{ - g_error = error; - g_code = code; - QUIT_GMAIN_LOOP; -} - -static void __set_p2p_ifname(void) -{ - GKeyFile *key_file = NULL; - GError *error = NULL; - char *ifn = NULL; - - key_file = g_key_file_new(); - if (!g_key_file_load_from_file(key_file, WIFI_P2P_CONFIG_PATH, G_KEY_FILE_NONE, &error)) { - g_clear_error(&error); - g_key_file_free(key_file); - key_file = NULL; - return; - } - - ifn = g_key_file_get_string(key_file, WFD_CONF_GROUP_NAME, "p2p_interface", &error); - if (ifn) - g_snprintf(p2p_ifname, MAX_PATH_LENGTH, "/sys/class/net/%s/address", ifn); - - if (error) - g_clear_error(&error); - g_key_file_free(key_file); -} - -static bool __found_ap_callback(wifi_manager_ap_h ap, void *user_data) -{ - char *ap_name = NULL; - char *ap_name_part = (char *)user_data; - size_t ap_name_len = strlen(ap_name_part); - int ret = WIFI_MANAGER_ERROR_NONE; - - if (ap) { - ret = wifi_manager_ap_get_essid(ap, &ap_name); - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Unable to get essid"; - - if (!ap_name) - return true; - - if (!strncmp(ap_name, ap_name_part, ap_name_len)) { - g_free(ap_name); - ret = wifi_manager_ap_clone(&g_hWifiAP, ap); - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Unable to clone the AP handle"; - if (g_hWifiAP) { - rst = WIFI_MANAGER_ERROR_NONE; - return false; - } - } - } - - return true; -} - -TEST(Hal_wifi, Init_p) -{ - g_bFeatureWifi = __check_feature_supported((char*)FEATURE_WIFI); - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int rv = wifi_manager_initialize(&wifi); - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Initialization failure"; -} - -TEST(Hal_wifi, Activate_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int rv; - bool activated; - - rv = wifi_manager_is_activated(wifi, &activated); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to get Wi-Fi device state"; - - if (activated) - goto done; - - rv = wifi_manager_activate(wifi, __test_callback, NULL); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to activate Wi-Fi device"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Activetion failure"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; - -done: - rv = access(WIFI_ADDRESS_PATH, F_OK); - EXPECT_EQ(0, rv) << "Could not access " << WIFI_ADDRESS_PATH; -} - -TEST(Hal_wifi, Scan_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int rv = wifi_manager_scan(wifi, __test_callback, NULL); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to scan"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Scan failure"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; -} - -TEST(Hal_wifi, Connect_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - wifi_manager_connection_state_e connection_state; - int ret = WIFI_MANAGER_ERROR_NONE; - - ret = wifi_manager_get_connection_state(wifi, &connection_state); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to get connection state"; - - if (connection_state == WIFI_MANAGER_CONNECTION_STATE_CONNECTED) - return; - - if (!ap_name[0]) - return; - - ret = wifi_manager_foreach_found_ap(wifi, __found_ap_callback, (char *)ap_name); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Failed to find the AP"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; - - ret = wifi_manager_connect(wifi, g_hWifiAP, __test_callback, NULL); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to connect"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Connection failure"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; -} - -TEST(Hal_wifi, Disconnect_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int ret = WIFI_MANAGER_ERROR_NONE; - wifi_manager_ap_h hAP = NULL; - - ret = wifi_manager_get_connected_ap(wifi, &hAP); - if (ret == WIFI_MANAGER_ERROR_NO_CONNECTION) - return; - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to get connected AP"; - - ret = wifi_manager_disconnect(wifi, hAP, __test_callback, NULL); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to disconnect"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Disconnection failure"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; - - ret = wifi_manager_forget_ap(wifi, hAP); - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, ret) << "Failed to forget AP"; -} - -TEST(Hal_wifi, Deactivate_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int rv = wifi_manager_deactivate(wifi, __test_callback, NULL); - ASSERT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Failed to deactivate Wi-Fi device"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rst) << "Deactivation failure"; - rst = WIFI_MANAGER_ERROR_NOT_SUPPORTED; - - rv = access(WIFI_ADDRESS_PATH, F_OK); - EXPECT_EQ(-1, rv) << WIFI_ADDRESS_PATH << " is exist"; -} - -TEST(Hal_wifi, Deinit_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int rv = wifi_manager_deinitialize(wifi); - EXPECT_EQ(WIFI_MANAGER_ERROR_NONE, rv) << "Deinitialization failure"; -} - -TEST(Hal_wifi_direct, Init_p) -{ - g_bFeatureP2P = __check_feature_supported((char*)WIFIDIRECT_FEATURE); - ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; - - int rv = wifi_direct_initialize(); - EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Initialization failure"; -} - -TEST(Hal_wifi_direct, Activate_p) -{ - ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; - - int rv; - wifi_direct_state_e state = WIFI_DIRECT_STATE_ACTIVATED; - - rv = wifi_direct_get_state(&state); - ASSERT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; - - if (state != WIFI_DIRECT_STATE_DEACTIVATED) - goto done; - - rv = wifi_direct_set_device_state_changed_cb(__device_state_changed_cb, NULL); - ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to set activation callback"; - - rv = wifi_direct_activate(); - ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to activate Wi-Fi Direct device"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rst_p2p) << "Activetion failure"; - rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; - - rv = wifi_direct_get_state(&state); - EXPECT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; - EXPECT_EQ(WIFI_DIRECT_STATE_ACTIVATED, state) << "Activetion failure"; - -done: - if (p2p_ifname[0]) - rv = access(p2p_ifname, F_OK); - else - rv = access(WIFI_P2P_PATH, F_OK); - EXPECT_EQ(0, rv) << "Could not access " << WIFI_ADDRESS_PATH; -} - -TEST(Hal_wifi_direct, Deactivate_p) -{ - ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; - - int rv; - - rv = wifi_direct_deactivate(); - ASSERT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to deactivate Wi-Fi Direct"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rst_p2p) << "Deactivation failure"; - rst_p2p = WIFI_DIRECT_ERROR_OPERATION_FAILED; - - wifi_direct_state_e state = WIFI_DIRECT_STATE_ACTIVATED; - rv = wifi_direct_get_state(&state); - EXPECT_EQ(0, rv) << "Failed to get Wi-Fi Direct device state"; - - EXPECT_EQ(WIFI_DIRECT_STATE_DEACTIVATED, state) << "Deactivetion failure"; - - if (p2p_ifname[0]) - rv = access(p2p_ifname, F_OK); - else - rv = access(WIFI_P2P_PATH, F_OK); - EXPECT_EQ(-1, rv) << WIFI_P2P_PATH << " is exist"; - - rv = wifi_direct_unset_device_state_changed_cb(); - EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Failed to unset activation callback"; -} - -TEST(Hal_wifi_direct, Deinit_p) -{ - ASSERT_EQ(true, g_bFeatureP2P) << WIFIDIRECT_FEATURE << " feature is not supported"; - - int rv = wifi_direct_deinitialize(); - EXPECT_EQ(WIFI_DIRECT_ERROR_NONE, rv) << "Deinitialization failure"; -} - -TEST(Hal_softap, Init_p) -{ - g_bFeatureWifi = __check_feature_supported((char*)FEATURE_WIFI); - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int ret = SOFTAP_ERROR_NONE; - - ret = softap_create(&sa); - ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Initialization failure"; - - ret = softap_set_enabled_cb(sa, __enabled_cb, NULL); - EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to set enabled callback!!"; - - ret = softap_set_disabled_cb(sa, __disabled_cb, NULL); - EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to set disabled callback!!"; -} - -TEST(Hal_softap, Activate_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int ret = SOFTAP_ERROR_NONE; - bool enabled = false; - - ret = softap_is_enabled(sa, &enabled); - ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to get SoftAP state"; - - if (enabled) - goto done; - - ret = softap_enable(sa); - ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to enable SoftAP"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(SOFTAP_ERROR_NONE, g_error) << "Failed to enable SoftAP"; - EXPECT_EQ(true, g_is_requested) << "Failed to enable SoftAP"; - -done: - ret = access(WIFI_ADDRESS_PATH, F_OK); - EXPECT_EQ(0, ret) << "Could not access " << WIFI_ADDRESS_PATH; -} - -TEST(Hal_softap, Deactivate_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int ret = SOFTAP_ERROR_NONE; - - ret = softap_disable(sa); - ASSERT_EQ(SOFTAP_ERROR_NONE, ret) << "Failed to disable SoftAP"; - - RUN_GMAIN_LOOP(__timeout_callback); - - EXPECT_EQ(SOFTAP_ERROR_NONE, g_error) << "Failed to disable SoftAP" << g_code; - - ret = access(WIFI_ADDRESS_PATH, F_OK); - EXPECT_EQ(-1, ret) << WIFI_ADDRESS_PATH << " is exist"; -} - -TEST(Hal_softap, Deinit_p) -{ - ASSERT_EQ(true, g_bFeatureWifi) << FEATURE_WIFI << " feature is not supported"; - - int ret = SOFTAP_ERROR_NONE; - - ret = softap_unset_enabled_cb(sa); - EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to unset enabled callback!!"; - - ret = softap_unset_disabled_cb(sa); - EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Fail to unset disabled callback!!"; - - ret = softap_destroy(sa); - EXPECT_EQ(SOFTAP_ERROR_NONE, ret) << "Deinitialization failure"; -} - -int main(int argc, char **argv) -{ - if (argc > 1 && argv[argc - 1][0] != '-') { - g_strlcpy(ap_name, argv[argc - 1], MAX_AP_LENGTH); - argc--; - } - - __set_p2p_ifname(); - InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/unittest/unittest.h b/unittest/unittest.h deleted file mode 100755 index 7c56f1d..0000000 --- a/unittest/unittest.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2018 Samsung Electronics Co., Ltd All Rights Reserved - * - * 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. - */ -#ifndef __NETCONFIG_UNITTEST_H__ -#define __NETCONFIG_UNITTEST_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define GMAINTIMEOUT 20000 -#define MAX_AP_LENGTH 33 -#define MAX_KEY_LENGTH 64 -#define MAX_PATH_LENGTH 256 - -#define FEATURE_WIFI "http://tizen.org/feature/network.wifi" -#define WIFIDIRECT_FEATURE "http://tizen.org/feature/network.wifi.direct" - -#define WIFI_ADDRESS_PATH "/sys/class/net/wlan0/address" -#define WIFI_P2P_PATH "/sys/class/net/p2p0/address" -#define WIFI_P2P_CONFIG_PATH "/etc/wifi-direct/wifi-direct-manager.conf" -#define WFD_CONF_GROUP_NAME "wfd-manager" - -GMainLoop *g_pMainLoop; -guint g_nTimeoutId; -bool g_bFeatureWifi; -bool g_bFeatureP2P; - -#define RUN_GMAIN_LOOP(callback) {\ - g_pMainLoop = g_main_loop_new(NULL, false);\ - g_nTimeoutId = g_timeout_add(GMAINTIMEOUT, callback, g_pMainLoop);\ - g_main_loop_run(g_pMainLoop);\ - g_source_remove(g_nTimeoutId);\ - g_pMainLoop = NULL;\ -} - -#define QUIT_GMAIN_LOOP {\ - if (g_pMainLoop)\ - g_main_loop_quit(g_pMainLoop);\ -} - -#ifdef __cplusplus -} -#endif - -#endif /* __NETCONFIG_UNITTEST_H__ */