Combine the HAL TCs into one file
[platform/core/connectivity/net-config.git] / unittest / wifi_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();
 }