Merge "Added support to set private-key password." into tizen accepted/tizen/unified/20180830.060928 submit/tizen/20180829.082616
authorJaehyun Kim <jeik01.kim@samsung.com>
Fri, 24 Aug 2018 05:15:03 +0000 (05:15 +0000)
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>
Fri, 24 Aug 2018 05:15:03 +0000 (05:15 +0000)
12 files changed:
gtest/network_state.cpp
gtest/network_state.h
gtest/unittest.cpp
gtest/wifi.cpp
gtest/wifi.h
packaging/net-config.spec
src/main.c
src/signal-handler.c
src/wifi-agent.c
unittest/hostap_hal_tc.cpp [deleted file]
unittest/net-config-haltests.cpp [moved from unittest/wifi_hal_tc.cpp with 50% similarity]
unittest/wifi_direct_hal_tc.cpp [deleted file]

index b0e0f11..4fad5c8 100755 (executable)
@@ -34,7 +34,7 @@ NetworkState::~NetworkState()
 }
 
 error_e NetworkState::AddRoute(const char *ip, const char *mask, const char *interface,
-const char *gateway, int family, bool *result)
+const char *gateway, int family, gboolean *result)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -59,7 +59,7 @@ const char *gateway, int family, bool *result)
 }
 
 error_e NetworkState::RemoveRoute(const char *ip, const char *mask, const char *interface,
-const char *gateway, int family, bool *result)
+const char *gateway, int family, gboolean *result)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -212,7 +212,7 @@ error_e NetworkState::DevicePolicyGetWifiProfile(int *state)
 
        return ERROR_NONE;
 }
-error_e NetworkState::GetMeteredInfo(bool *state)
+error_e NetworkState::GetMeteredInfo(gboolean *state)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -256,7 +256,7 @@ error_e NetworkState::PreferredIpv6Address(const char *profile, char *address)
 
        return ERROR_NONE;
 }
-error_e NetworkState::GetTCPDumpState(bool *state)
+error_e NetworkState::GetTCPDumpState(gboolean *state)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
index 8d51d2a..7e33fb2 100755 (executable)
@@ -24,18 +24,18 @@ public:
        NetworkState();
        ~NetworkState();
        error_e AddRoute(const char *ip, const char *mask, const char *interface,
-                       const char *gateway, int family, bool *result);
+                       const char *gateway, int family, gboolean *result);
        error_e RemoveRoute(const char *ip, const char *mask, const char *interface,
-                       const char *gateway, int family, bool *result);
+                       const char *gateway, int family, gboolean *result);
        error_e EthernetCableState(int *state);
        error_e LaunchMdns(const char *name);
        error_e DevicePolicySetWifi(int state);
        error_e DevicePolicyGetWifi(int *state);
        error_e DevicePolicySetWifiProfile(int state);
        error_e DevicePolicyGetWifiProfile(int *state);
-       error_e GetMeteredInfo(bool *state);
+       error_e GetMeteredInfo(gboolean *state);
        error_e PreferredIpv6Address(const char *profile, char *address);
-       error_e GetTCPDumpState(bool *state);
+       error_e GetTCPDumpState(gboolean *state);
        error_e StartTCPDump();
        error_e StopTCPDump();
 };
index 7db3ff9..679b8a8 100755 (executable)
@@ -154,7 +154,7 @@ TEST(NetworkState, AddRoute_p)
        const char *mask = "255.255.255.0";
        const char *interface = "lo";
        const char *gateway = "192.168.11.1";
-       bool result;
+       gboolean result;
 
        ret = mgr.AddRoute(ip, mask, interface, gateway,
                        AF_INET, &result);
@@ -170,7 +170,7 @@ TEST(NetworkState, RemoveRoute_p)
        const char *mask = "255.255.255.0";
        const char *interface = "lo";
        const char *gateway = "192.168.11.1";
-       bool result;
+       gboolean result;
 
        ret = mgr.RemoveRoute(ip, mask, interface, gateway,
                        AF_INET, &result);
@@ -183,7 +183,7 @@ TEST(NetworkState, RemoveRoute_n)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool result;
+       gboolean result;
 
        ret = mgr.RemoveRoute(NULL, NULL, NULL, NULL,
                        -1, &result);
@@ -306,7 +306,7 @@ TEST(NetworkState, GetMeteredInfo_p)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.GetMeteredInfo(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -316,7 +316,7 @@ TEST(NetworkState, GetMeteredInfo_n)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.GetMeteredInfo(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -326,7 +326,7 @@ TEST(NetworkState, GetTCPDumpState_p)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.GetTCPDumpState(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -345,7 +345,7 @@ TEST(NetworkState, StartTCPDump_p)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.StartTCPDump();
        EXPECT_EQ(ERROR_NONE, ret);
@@ -361,7 +361,7 @@ TEST(NetworkState, StartTCPDump_n)
        error_e ret = ERROR_NONE;
        NetworkState mgr;
        Wifi wifi_mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.StartTCPDump();
        EXPECT_EQ(ERROR_NONE, ret);
@@ -378,7 +378,7 @@ TEST(NetworkState, StopTCPDump_p)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.StopTCPDump();
        EXPECT_EQ(ERROR_NONE, ret);
@@ -393,7 +393,7 @@ TEST(NetworkState, StopTCPDump_n)
 {
        error_e ret = ERROR_NONE;
        NetworkState mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.StopTCPDump();
        EXPECT_EQ(ERROR_NONE, ret);
@@ -696,7 +696,7 @@ TEST(WifiTest, IsIpConflictDetectEnabled_p)
 {
        error_e ret = ERROR_NONE;
        Wifi mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.IsIpConflictDetectEnabled(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -718,7 +718,7 @@ TEST(WifiTest, GetAutoscan_p)
 {
        error_e ret = ERROR_NONE;
        Wifi mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.GetAutoscan(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -1035,7 +1035,7 @@ TEST(WifiTest, IpConflictSetEnable_p)
 {
        error_e ret = ERROR_NONE;
        Wifi mgr;
-       bool state;
+       gboolean state;
 
        ret = mgr.IsIpConflictDetectEnabled(&state);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -1050,7 +1050,7 @@ TEST(WifiTest, ReqSimAuth_p)
        Wifi mgr;
        const unsigned char *rand_data =  (unsigned char *)"0123456789012345";
        unsigned int length = 16;
-       bool result;
+       gboolean result;
 
        ret = mgr.ReqSimAuth(rand_data, length, &result);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -1064,7 +1064,7 @@ TEST(WifiTest, ReqSimAuth_n)
        unsigned char rand[5] = {0, };
        const unsigned char *rand_data =  (unsigned char *)rand;
        unsigned int length = 5;
-       bool result;
+       gboolean result;
 
        ret = mgr.ReqSimAuth(rand_data, length, &result);
        EXPECT_NE(ERROR_NONE, ret);
@@ -1082,7 +1082,7 @@ TEST(WifiTest, ReqAkaAuth_p)
        const unsigned char *rand_data =  (unsigned char *)rand;
        const unsigned char *auth_data =  (unsigned char *)auth;
        int length = 16;
-       bool result;
+       gboolean result;
 
        ret = mgr.ReqAkaAuth(rand_data, length, auth_data, length, &result);
        EXPECT_EQ(ERROR_NONE, ret);
@@ -1098,7 +1098,7 @@ TEST(WifiTest, ReqAkaAuth_n)
        const unsigned char *rand_data =  (unsigned char *)rand;
        const unsigned char *auth_data =  (unsigned char *)auth;
        int length = 5;
-       bool result;
+       gboolean result;
 
        ret = mgr.ReqAkaAuth(rand_data, length, auth_data, length, &result);
        EXPECT_NE(ERROR_NONE, ret);
@@ -1112,7 +1112,7 @@ TEST(WifiTest, CheckBlackList_p)
        const char *name = "gtest";
        const char *sec_type = "gtest";
        const char *eap = "gtest";
-       bool allowed;
+       gboolean allowed;
 
        ret = mgr.CheckBlackList(name, sec_type, eap, &allowed);
        EXPECT_EQ(ERROR_NONE, ret);
index 613c05e..261feb3 100755 (executable)
@@ -57,7 +57,7 @@ error_e Wifi::GetWifiState(char *state)
        return ERROR_NONE;
 }
 
-error_e Wifi::IsIpConflictDetectEnabled(bool *state)
+error_e Wifi::IsIpConflictDetectEnabled(gboolean *state)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -102,7 +102,7 @@ error_e Wifi::SetBgscan(int scan_mode)
        return ERROR_NONE;
 }
 
-error_e Wifi::GetAutoscan(bool *state)
+error_e Wifi::GetAutoscan(gboolean *state)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -617,7 +617,7 @@ error_e Wifi::GetSimImsi(char *imsi)
 }
 
 error_e Wifi::ReqSimAuth(const unsigned char *rand_data, unsigned int length,
-       bool *result)
+       gboolean *result)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -649,7 +649,7 @@ error_e Wifi::ReqSimAuth(const unsigned char *rand_data, unsigned int length,
 }
 
 error_e Wifi::ReqAkaAuth(const unsigned char *rand_data, int rand_length,
-       const unsigned char *autn_data, int auth_length, bool *result)
+       const unsigned char *autn_data, int auth_length, gboolean *result)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
@@ -717,7 +717,7 @@ error_e Wifi::GetSimAuth(const unsigned char *auth_data, unsigned int length)
 }
 
 error_e Wifi::CheckBlackList(const char *name, const char *sec_type,
-               const char *eap, bool *allowed)
+               const char *eap, gboolean *allowed)
 {
        GVariant *message = NULL;
        error_e error = ERROR_NONE;
index ef0200c..17d3b7a 100755 (executable)
@@ -25,9 +25,9 @@ public:
        ~Wifi();
 
 error_e GetWifiState(char *state);
-error_e IsIpConflictDetectEnabled(bool *state);
+error_e IsIpConflictDetectEnabled(gboolean *state);
 error_e SetBgscan(int scan_mode);
-error_e GetAutoscan(bool *state);
+error_e GetAutoscan(gboolean *state);
 error_e GetIpConflictState(int *state);
 error_e GetIpConflictPeriod(int *period);
 error_e GetAutoscanmode(int *autoscanmode);
@@ -52,12 +52,12 @@ error_e DeleteEapConfig(const char *profile_name);
 error_e IpConflictSetEnable(bool detect);
 error_e GetSimImsi(char *imsi);
 error_e ReqSimAuth(const unsigned char *rand_data, unsigned int length,
-       bool *result);
+       gboolean *result);
 error_e ReqAkaAuth(const unsigned char *rand_data, int rand_length,
-       const unsigned char *auth_data, int auth_length, bool *result);
+       const unsigned char *auth_data, int auth_length, gboolean *result);
 error_e GetSimAuth(const unsigned char *auth_data, unsigned int length);
 error_e CheckBlackList(const char *name, const char *sec_type,
-               const char *eap, bool *allowed);
+               const char *eap, gboolean *allowed);
 error_e TdlsDisconnect(const char *peer_mac_address, int *result);
 error_e TdlsConnectedPeer(char *peer_mac_address);
 error_e TdlsConnect(const char *peer_mac_address, int *result);
index 64e1b56..46fd7de 100755 (executable)
@@ -1,6 +1,6 @@
 Name:          net-config
 Summary:       TIZEN Network Configuration service
-Version:       1.1.135
+Version:       1.1.136
 Release:       3
 Group:         System/Network
 License:       Apache-2.0
@@ -82,7 +82,7 @@ TIZEN Network Configuration service extension for HAL test.
 cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} \
        -DTIZEN_WLAN_PASSPOINT=1 \
        -DTIZEN_WLAN_USE_P2P_INTERFACE=1 \
-       -DTIZEN_DEBUG_ENABLE=1 \
+       -DTIZEN_DEBUG_ENABLE=0 \
        -DTIZEN_WEARABLE=1 \
        -DTIZEN_CAPTIVE_PORTAL=1 \
        -DLIB_PATH=%{_lib} \
@@ -253,5 +253,5 @@ mv net-config.wearable net-config
 
 %files haltests
 %manifest net-config.manifest
-%{_bindir}/*hal_tc
+%{_bindir}/*haltests
 
index 2089dcb..6c4c648 100755 (executable)
@@ -129,7 +129,9 @@ int main(int argc, char *argv[])
        netconfig_dpm_init();
 
        /* Start tcpdump if dump state is on */
+#if defined TIZEN_DEBUG_ENABLE
        check_dump_state_and_start();
+#endif
 
        if (TIZEN_WLAN_BOARD_SPRD)
                wifi_firmware_download();
index fc0b1cf..e1cd52e 100755 (executable)
@@ -291,10 +291,8 @@ static void _technology_signal_cb(GDBusConnection *conn,
                        /* Tethering state */
                        wifi_state_set_tech_state(NETCONFIG_WIFI_TECH_TETHERED);
                }
-               if (key)
-                       g_free(key);
-               if (var)
-                       g_variant_unref(var);
+               g_free(key);
+               g_variant_unref(var);
        }
 }
 
@@ -536,8 +534,7 @@ static void _service_signal_cb(GDBusConnection *conn,
                g_free(property);
        }
 done:
-       if (sigvalue)
-               g_free(sigvalue);
+       g_free(sigvalue);
 
        if (variant)
                g_variant_unref(variant);
@@ -563,12 +560,9 @@ static void _dbus_name_changed_cb(GDBusConnection *conn,
 
                connman_register_agent();
        }
-       if (name)
-               g_free(name);
-       if (old)
-               g_free(old);
-       if (new)
-               g_free(new);
+       g_free(name);
+       g_free(old);
+       g_free(new);
 
        return;
 }
index b8926d2..e66ffa4 100755 (executable)
@@ -299,13 +299,13 @@ gboolean handle_set_field(NetConnmanAgent *connman_agent,
                }
        }
 
+       g_variant_iter_free(iter);
+
        if (updated == TRUE) {
                reply = netconfig_invoke_dbus_method_nonblock(CONNMAN_SERVICE,
                                service, CONNMAN_SERVICE_INTERFACE, "Connect",
                                NULL, __netconfig_wifi_connect_reply);
-               if (reply == TRUE) {
-                       g_dbus_method_invocation_return_value(context, NULL);
-               } else {
+               if (reply != TRUE) {
                        ERR("Fail to connect Wi-Fi");
                        __netconfig_agent_clear_fields();
                        error = g_error_new(G_DBUS_ERROR,
@@ -314,22 +314,21 @@ gboolean handle_set_field(NetConnmanAgent *connman_agent,
 
                        g_dbus_method_invocation_return_gerror(context, error);
                        g_clear_error(&error);
+                       return TRUE;
                }
        } else {
+               ERR("Fail to connect Wi-Fi");
+               __netconfig_agent_clear_fields();
+
                error = g_error_new(G_DBUS_ERROR,
                                G_DBUS_ERROR_AUTH_FAILED,
                                CONNMAN_ERROR_INTERFACE ".InvalidArguments");
 
                g_dbus_method_invocation_return_gerror(context, error);
                g_clear_error(&error);
+               return TRUE;
        }
 
-       if (reply != TRUE) {
-               ERR("Fail to connect Wi-Fi");
-               __netconfig_agent_clear_fields();
-       }
-       g_variant_iter_free(iter);
-
        net_connman_agent_complete_set_field(connman_agent, context);
        return TRUE;
 }
diff --git a/unittest/hostap_hal_tc.cpp b/unittest/hostap_hal_tc.cpp
deleted file mode 100755 (executable)
index 342c623..0000000
+++ /dev/null
@@ -1,148 +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 <stdio.h>
-#include <stdlib.h>
-#include <iostream>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <unistd.h>
-#include <system_info.h>
-#include <softap.h>
-#include "unittest.h"
-
-using ::testing::InitGoogleTest;
-using ::testing::Test;
-using ::testing::TestCase;
-
-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 gboolean __timeout_callback(gpointer data)
-{
-       EXPECT_TRUE(0) << "SoftAP callback timeout!";
-       QUIT_GMAIN_LOOP;
-       return FALSE;
-}
-
-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;
-}
-
-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)
-{
-       InitGoogleTest(&argc, argv);
-       return RUN_ALL_TESTS();
-}
similarity index 50%
rename from unittest/wifi_hal_tc.cpp
rename to unittest/net-config-haltests.cpp
index 8b92569..c8ff764 100755 (executable)
@@ -21,6 +21,8 @@
 #include <gtest/gtest.h>
 #include <unistd.h>
 #include <wifi-manager.h>
+#include <wifi-direct.h>
+#include <softap.h>
 #include <system_info.h>
 #include "unittest.h"
 
@@ -33,6 +35,14 @@ 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)
 {
@@ -53,11 +63,56 @@ static void __test_callback(wifi_manager_error_e result, void* user_data)
 
 static gboolean __timeout_callback(gpointer data)
 {
-       EXPECT_TRUE(0) << "Wi-Fi Manager callback timeout!";
+       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;
@@ -211,6 +266,165 @@ TEST(Hal_wifi, Deinit_p)
        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] != '-') {
@@ -218,6 +432,7 @@ int main(int argc, char **argv)
                argc--;
        }
 
+       __set_p2p_ifname();
        InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
 }
diff --git a/unittest/wifi_direct_hal_tc.cpp b/unittest/wifi_direct_hal_tc.cpp
deleted file mode 100755 (executable)
index bcfb5a9..0000000
+++ /dev/null
@@ -1,174 +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 <stdio.h>
-#include <stdlib.h>
-#include <iostream>
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-#include <unistd.h>
-#include <wifi-direct.h>
-#include <system_info.h>
-#include "unittest.h"
-
-using ::testing::InitGoogleTest;
-using ::testing::Test;
-using ::testing::TestCase;
-
-static int rst = 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 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 gboolean __timeout_callback(gpointer data)
-{
-       EXPECT_TRUE(0) << "Wi-Fi Direct 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 = error_code;
-       dev_state = device_state;
-       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);
-}
-
-
-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) << "Activetion failure";
-       rst = 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) << "Deactivation failure";
-       rst = 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";
-}
-
-int main(int argc, char **argv)
-{
-       __set_p2p_ifname();
-
-       InitGoogleTest(&argc, argv);
-       return RUN_ALL_TESTS();
-}