Deinitialize when a test is done
authorCheoleun Moon <chleun.moon@samsung.com>
Tue, 7 Apr 2020 08:42:31 +0000 (17:42 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Tue, 7 Apr 2020 08:42:31 +0000 (17:42 +0900)
cts-verifier/cts-verifier-subscribe-test.c
test/wifi-aware-publish-test.c
test/wifi-aware-subscribe-test.c

index 6d208d1..50d18ad 100644 (file)
@@ -171,6 +171,7 @@ static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_
 static void __service_discovered_cb(wifi_aware_session_h session,
                wifi_aware_peer_h peer,
                const unsigned char *service_specific_info, size_t service_specific_info_len,
+               int distance,
                void *user_data)
 {
        printf("Service discovered...\n");
index 409a417..16e0f85 100644 (file)
@@ -91,7 +91,6 @@
 
 enum {
        CMD_QUIT,
-       CMD_FULL_MENU,
 
        CMD_OPEN_UNSOLICITED,
        CMD_OPEN_SOLICITED,
@@ -106,8 +105,6 @@ enum {
 static char *g_menu_str[] = {
        [CMD_QUIT]
                = "Quit",
-       [CMD_FULL_MENU]
-               = "Full Menu",
        [CMD_OPEN_UNSOLICITED]
                = "Open + Unsolicited",
        [CMD_OPEN_SOLICITED]
@@ -125,7 +122,6 @@ static char *g_menu_str[] = {
 };
 
 static GMainLoop *g_main_loop_p;
-static bool g_initialized = false;
 static bool g_ranging = false;
 
 static wifi_aware_session_h g_wifi_aware_session = NULL;
@@ -136,6 +132,17 @@ static wifi_aware_peer_h g_peer = NULL;
 static wifi_aware_publish_type_e g_pub_type;
 static wifi_aware_security_type_e g_security_type;
 
+void test_deinit();
+
+static void __test_finish(int is_validated)
+{
+       if (is_validated)
+               printf(MAKE_GREEN"[TEST RESULT] Wi-Fi Aware validated!"RESET_COLOR"\n");
+       else
+               printf(MAKE_RED"[TEST RESULT] Wi-Fi Aware invalidated!"RESET_COLOR"\n");
+       test_deinit();
+}
+
 static inline void __usage_full()
 {
        int i;
@@ -238,10 +245,12 @@ void test_quit()
 static void __published_cb(wifi_aware_session_h session,
                wifi_aware_error_e error, void *user_data)
 {
-       if (error == WIFI_AWARE_ERROR_NONE)
+       if (error == WIFI_AWARE_ERROR_NONE) {
                PRINT_SUCCESS("[CB][Publish] Requested");
-       else
+       } else {
                PRINT_FAILURE_ERROR("[CB][Publish]", error);
+               __test_finish(0);
+       }
 }
 
 static void __data_path_terminated_cb(wifi_aware_data_path_h data_path,
@@ -252,6 +261,7 @@ static void __data_path_terminated_cb(wifi_aware_data_path_h data_path,
                wifi_aware_data_path_unset_terminated_cb(data_path);
                wifi_aware_data_path_destroy(data_path);
        }
+       __test_finish(1);
 }
 
 static void __open_cb(wifi_aware_data_path_h data_path, wifi_aware_error_e error, void *user_data)
@@ -278,9 +288,11 @@ static void __open_cb(wifi_aware_data_path_h data_path, wifi_aware_error_e error
                        printf("\tPeer's Port: %d\n", port);
                else
                        PRINT_FAILURE_ERROR("\tPeer's Port:", ret);
+               __test_finish(1);
        }
        else {
-               PRINT_FAILURE("[CB][OpenDataPath Requested] Failure(%d:%s) %p", error, __print_error(error), data_path);
+               PRINT_FAILURE("[CB][OpenDataPath] Failure(%d:%s) %p", error, __print_error(error), data_path);
+               __test_finish(0);
        }
 }
 
@@ -289,12 +301,14 @@ static void __open_data_path(wifi_aware_session_h session)
        printf("[OpenDataPath] Request\n");
        if (g_peer == NULL) {
                printf("Peer is NULL\n");
+               __test_finish(0);
                return;
        }
 
        int ret = wifi_aware_data_path_create(session, g_peer, &g_ndp);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tHandle:", ret);
+               __test_finish(0);
                return;
        }
        printf("\tHandle: %p\n", g_ndp);
@@ -302,12 +316,14 @@ static void __open_data_path(wifi_aware_session_h session)
        ret = wifi_aware_data_path_set_terminated_cb(g_ndp, __data_path_terminated_cb, NULL);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSet TerminatedCallback:", ret);
+               __test_finish(0);
                return;
        }
 
        ret = wifi_aware_data_path_set_security(g_ndp, g_security_type);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSecurity Type:", ret);
+               __test_finish(0);
                return;
        }
        printf("\tSecurity Type: ");
@@ -324,27 +340,34 @@ static void __open_data_path(wifi_aware_session_h session)
                break;
        default:
                PRINT_FAILURE("Unknown security type");
+               __test_finish(0);
                return;
        }
 
        ret = wifi_aware_data_path_set_port(g_ndp, PORT);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tPort:", ret);
-       else
+               __test_finish(0);
+       } else {
                printf("\tPort: %d\n", PORT);
+       }
 
        ret = wifi_aware_data_path_open(g_ndp, __open_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[OpenDataPath]", ret);
+               __test_finish(0);
+       }
 }
 
 static void __message_result_cb(wifi_aware_session_h session, wifi_aware_error_e error, void *user_data)
 {
-       if (error == WIFI_AWARE_ERROR_NONE)
+       if (error == WIFI_AWARE_ERROR_NONE) {
                PRINT_SUCCESS("[CB][Send Message] Requested");
-       else
+               __open_data_path(session);
+       } else {
                PRINT_FAILURE_ERROR("[CB][Send Message]", error);
-       __open_data_path(session);
+               __test_finish(0);
+       }
 }
 
 static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_h peer,
@@ -359,6 +382,8 @@ static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_
        ret = wifi_aware_peer_get_mac(peer, &mac);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                printf("\tPeer's NMI: Failure(%d:%s)\n", ret, __print_error(ret));
+               __test_finish(0);
+               return;
        } else {
                printf("\tPeer's NMI: ");
                if (mac != NULL) {
@@ -378,8 +403,10 @@ static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_
        size_t message_len = strlen(MSG_PUB_TO_SUB);
        memcpy(send_message, MSG_PUB_TO_SUB, message_len);
        ret = wifi_aware_session_send_message(session, peer, send_message, message_len, __message_result_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[Send Message]", ret);
+               __test_finish(0);
+       }
 }
 
 static void __session_terminated_cb(wifi_aware_session_h session,
@@ -391,6 +418,7 @@ static void __session_terminated_cb(wifi_aware_session_h session,
                wifi_aware_session_unset_message_received_cb(session);
                wifi_aware_session_destroy(session);
        }
+       __test_finish(0);
 }
 
 static bool __set_publish_config(wifi_aware_publish_h publish)
@@ -456,10 +484,12 @@ static void __enabled_cb(wifi_aware_error_e error, void *user_data)
 
        printf("[Session][Publish] Create\n");
        int ret = wifi_aware_session_create(WIFI_AWARE_SESSION_PUBLISH, &g_wifi_aware_session);
-       if (ret == WIFI_AWARE_ERROR_NONE)
+       if (ret == WIFI_AWARE_ERROR_NONE) {
                printf("\tSession: %p\n", g_wifi_aware_session);
-       else
+       } else {
                PRINT_FAILURE_ERROR("\tSession:", ret);
+               __test_finish(0);
+       }
 
        ret = wifi_aware_publish_create(&g_publish_handle);
        if (ret != WIFI_AWARE_ERROR_NONE)
@@ -467,21 +497,28 @@ static void __enabled_cb(wifi_aware_error_e error, void *user_data)
 
        if (__set_publish_config(g_publish_handle) == false) {
                PRINT_FAILURE("\tPublish Config: Failure");
+               __test_finish(0);
                return;
        }
 
        ret = wifi_aware_session_set_message_received_cb(g_wifi_aware_session, __message_received_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tMessage Received CB:", ret);
+               __test_finish(0);
+       }
 
        ret = wifi_aware_session_set_terminated_cb(g_wifi_aware_session, __session_terminated_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSession Terminated CB:", ret);
+               __test_finish(0);
+       }
 
        printf("[Publish] Request\n");
        ret = wifi_aware_session_publish(g_wifi_aware_session, g_publish_handle, __published_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[Publish]", ret);
+               __test_finish(0);
+       }
 }
 
 void run_common()
@@ -489,9 +526,12 @@ void run_common()
        int ret = 0;
        RET_IF_LOOP_IS_NULL();
 
+       test_init();
        ret = wifi_aware_enable(__enabled_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[Enable]", ret);
+               __test_finish(0);
+       }
 }
 
 void clear_resources()
@@ -583,10 +623,19 @@ void test_init()
                PRINT_FAILURE_ERROR("[Initialize]", ret);
 }
 
+void test_deinit()
+{
+       wifi_aware_disable();
+       int ret = wifi_aware_deinitialize();
+       if (ret == WIFI_AWARE_ERROR_NONE)
+               PRINT_SUCCESS("[Deinitialize] Success");
+       else
+               PRINT_FAILURE_ERROR("[Deinitialize]", ret);
+}
+
 typedef void (*test_func)(void);
 test_func g_menu_func[] = {
        [CMD_QUIT]                              = test_quit,
-       [CMD_FULL_MENU]                 = test_full_menu,
        [CMD_OPEN_UNSOLICITED]  = test_open_unsolicited,
        [CMD_OPEN_SOLICITED]    = test_open_solicited,
        [CMD_PSK_UNSOLICITED]   = test_psk_unsolicited,
@@ -622,17 +671,18 @@ static gboolean __test_terminal_read_std_input(GIOChannel * source,
        static char buf[1024];
        int n;
 
-       if (g_initialized == false) {
-               test_init();
-               g_initialized = true;
-       }
-
        errno = 0;
        n = read(fd, buf, 1024);
        if (n == 0) {
                printf("Error: read() from stdin returns 0.\n");
        } else if (n < 0) {
                printf("input: read, err\n");
+       } else if (buf[0] == '0') {
+               test_deinit();
+               printf(MAKE_GREEN"Test is finished.."RESET_COLOR"\n");
+               exit(1);
+       } else if (buf[0] == '\n' || buf[0] == '\r') {
+               __usage_full();
        } else if (n - 1 > 0 && n < 1024) {
                buf[n - 1] = '\0'; /* remove new line... */
                printf("\n\n");
index 260f61f..077b76b 100644 (file)
@@ -91,7 +91,6 @@
 
 enum {
        CMD_QUIT,
-       CMD_FULL_MENU,
 
        CMD_OPEN_PASSIVE,
        CMD_OPEN_ACTIVE,
@@ -108,8 +107,6 @@ enum {
 static char *g_menu_str[] = {
        [CMD_QUIT]
                = "Quit",
-       [CMD_FULL_MENU]
-               = "Full Menu",
        [CMD_OPEN_PASSIVE]
                = "Open + Passive",
        [CMD_OPEN_ACTIVE]
@@ -146,6 +143,17 @@ static char g_psk[MAX_PSK_LEN + 1];
 
 static bool g_service_discovered = false;
 
+void test_deinit();
+
+static void __test_finish(int is_validated)
+{
+       if (is_validated)
+               printf(MAKE_GREEN"[TEST RESULT] Wi-Fi Aware validated!"RESET_COLOR"\n");
+       else
+               printf(MAKE_RED"[TEST RESULT] Wi-Fi Aware invalidated!"RESET_COLOR"\n");
+       test_deinit();
+}
+
 static inline void __usage_full()
 {
        int i;
@@ -249,11 +257,13 @@ void test_quit()
 static void __subscribed_cb(wifi_aware_session_h session,
                wifi_aware_error_e error, void *user_data)
 {
-       if (error == WIFI_AWARE_ERROR_NONE)
+       if (error == WIFI_AWARE_ERROR_NONE) {
                PRINT_SUCCESS("[CB][Subscribe] Requested");
-       else
+       } else {
                PRINT_FAILURE_ERROR("[CB][Subscribe]", error);
+               __test_finish(0);
        }
+}
 
 static void __data_path_terminated_cb(wifi_aware_data_path_h data_path,
                wifi_aware_termination_reason_e reason, void *user_data)
@@ -263,6 +273,7 @@ static void __data_path_terminated_cb(wifi_aware_data_path_h data_path,
                wifi_aware_data_path_unset_terminated_cb(data_path);
                wifi_aware_data_path_destroy(data_path);
        }
+       __test_finish(1);
 }
 
 static void __open_cb(wifi_aware_data_path_h data_path, wifi_aware_error_e error, void *user_data)
@@ -289,9 +300,11 @@ static void __open_cb(wifi_aware_data_path_h data_path, wifi_aware_error_e error
                        printf("\tPeer's Port: %d\n", port);
                else
                        PRINT_FAILURE_ERROR("\tPeer's Port:", ret);
+               __test_finish(1);
        }
        else {
-               PRINT_FAILURE("[CB][OpenDataPath Requested] Failure(%d:%s) %p", error, __print_error(error), data_path);
+               PRINT_FAILURE("[CB][OpenDataPath] Failure(%d:%s) %p", error, __print_error(error), data_path);
+               __test_finish(0);
        }
 }
 
@@ -300,12 +313,14 @@ static void __open_data_path(wifi_aware_session_h session)
        printf("[OpenDataPath] Request\n");
        if (g_peer == NULL) {
                printf("Peer is NULL\n");
+               __test_finish(0);
                return;
        }
 
        int ret = wifi_aware_data_path_create(session, g_peer, &g_ndp);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tHandle:", ret);
+               __test_finish(0);
                return;
        }
        printf("\tHandle: %p\n", g_ndp);
@@ -313,12 +328,14 @@ static void __open_data_path(wifi_aware_session_h session)
        ret = wifi_aware_data_path_set_terminated_cb(g_ndp, __data_path_terminated_cb, NULL);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSet TerminatedCallback:", ret);
+               __test_finish(0);
                return;
        }
 
        ret = wifi_aware_data_path_set_security(g_ndp, g_security_type);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSecurity Type:", ret);
+               __test_finish(0);
                return;
        }
        printf("\tSecurity Type: ");
@@ -335,21 +352,25 @@ static void __open_data_path(wifi_aware_session_h session)
                break;
        default:
                PRINT_FAILURE("Unknown security type");
+               __test_finish(0);
                return;
        }
 
        ret = wifi_aware_data_path_open(g_ndp, __open_cb, NULL);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[OpenDataPath]", ret);
+               __test_finish(0);
        }
 }
 
 static void __message_result_cb(wifi_aware_session_h session, wifi_aware_error_e error, void *user_data)
 {
-       if (error == WIFI_AWARE_ERROR_NONE)
+       if (error == WIFI_AWARE_ERROR_NONE) {
                PRINT_SUCCESS("[CB][Send Message] Requested");
-       else
+       } else {
                PRINT_FAILURE_ERROR("[CB][Send Message]", error);
+               __test_finish(0);
+       }
 }
 
 static void __message_received_cb(wifi_aware_session_h session, wifi_aware_peer_h peer,
@@ -392,6 +413,8 @@ static void __service_discovered_cb(wifi_aware_session_h session,
        ret = wifi_aware_peer_get_mac(peer, &mac);
        if (ret != WIFI_AWARE_ERROR_NONE) {
                printf("\tPeer's NMI: Failure(%d:%s)\n", ret, __print_error(ret));
+               __test_finish(0);
+               return;
        } else {
                printf("\tPeer's NMI: ");
                if (mac != NULL) {
@@ -412,8 +435,10 @@ static void __service_discovered_cb(wifi_aware_session_h session,
                size_t message_len = strlen(MSG_SUB_TO_PUB);
                memcpy(send_message, MSG_SUB_TO_PUB, message_len);
                int ret = wifi_aware_session_send_message(session, peer, send_message, message_len, __message_result_cb, NULL);
-               if (ret != WIFI_AWARE_ERROR_NONE)
+               if (ret != WIFI_AWARE_ERROR_NONE) {
                        PRINT_FAILURE_ERROR("[Send Message]", ret);
+                       __test_finish(0);
+               }
        }
 }
 
@@ -426,6 +451,7 @@ static void __session_terminated_cb(wifi_aware_session_h session,
                wifi_aware_session_unset_message_received_cb(session);
                wifi_aware_session_destroy(session);
        }
+       __test_finish(0);
 }
 
 static bool __set_subscribe_config(wifi_aware_subscribe_h subscribe)
@@ -503,37 +529,50 @@ static void __enabled_cb(wifi_aware_error_e error, void *user_data)
 
        printf("[Session][Subscribe] Create\n");
        int ret = wifi_aware_session_create(WIFI_AWARE_SESSION_SUBSCRIBE, &g_wifi_aware_session);
-       if (ret == WIFI_AWARE_ERROR_NONE)
+       if (ret == WIFI_AWARE_ERROR_NONE) {
                printf("\tSession: %p\n", g_wifi_aware_session);
-       else
+       } else {
                PRINT_FAILURE_ERROR("\tSession:", ret);
+               __test_finish(0);
+       }
 
        ret = wifi_aware_subscribe_create(&g_subscribe_handle);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSubscribe Config:", ret);
+               __test_finish(0);
+       }
 
        if (__set_subscribe_config(g_subscribe_handle) == false) {
                PRINT_FAILURE("\tSubscribeConfig: Failure");
+               __test_finish(0);
                return;
        }
 
        g_service_discovered = false;
        ret = wifi_aware_session_set_service_discovered_cb(g_wifi_aware_session, __service_discovered_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tService Discovered CB:", ret);
+               __test_finish(0);
+       }
 
        ret = wifi_aware_session_set_message_received_cb(g_wifi_aware_session, __message_received_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tMessage Received CB:", ret);
+               __test_finish(0);
+       }
 
        ret = wifi_aware_session_set_terminated_cb(g_wifi_aware_session, __session_terminated_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("\tSession Terminated CB:", ret);
+               __test_finish(0);
+       }
 
        printf("[Subscribe] Request\n");
        ret = wifi_aware_session_subscribe(g_wifi_aware_session, g_subscribe_handle, __subscribed_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[Subscribe]", ret);
+               __test_finish(0);
+       }
 }
 
 void run_common()
@@ -541,9 +580,12 @@ void run_common()
        int ret = 0;
        RET_IF_LOOP_IS_NULL();
 
+       test_init();
        ret = wifi_aware_enable(__enabled_cb, NULL);
-       if (ret != WIFI_AWARE_ERROR_NONE)
+       if (ret != WIFI_AWARE_ERROR_NONE) {
                PRINT_FAILURE_ERROR("[Enable]", ret);
+               __test_finish(0);
+       }
 }
 
 void clear_resources()
@@ -658,10 +700,19 @@ void test_init()
                PRINT_FAILURE_ERROR("[Initialize]", ret);
 }
 
+void test_deinit()
+{
+       wifi_aware_disable();
+       int ret = wifi_aware_deinitialize();
+       if (ret == WIFI_AWARE_ERROR_NONE)
+               PRINT_SUCCESS("[Deinitialize] Success");
+       else
+               PRINT_FAILURE_ERROR("[Deinitialize]", ret);
+}
+
 typedef void (*test_func)(void);
 test_func g_menu_func[] = {
        [CMD_QUIT]                              = test_quit,
-       [CMD_FULL_MENU]                 = test_full_menu,
        [CMD_OPEN_PASSIVE]              = test_open_passive,
        [CMD_OPEN_ACTIVE]               = test_open_active,
        [CMD_PSK_PASSIVE]               = test_psk_passive,
@@ -699,11 +750,6 @@ static gboolean __test_terminal_read_std_input(GIOChannel * source,
        static char buf[1024];
        int n;
 
-       if (g_initialized == false) {
-               test_init();
-               g_initialized = true;
-       }
-
        errno = 0;
        n = read(fd, buf, 1024);
        if (n == 0) {