Add unittests for SessionTerminated signal 17/237217/2
authorCheoleun Moon <chleun.moon@samsung.com>
Fri, 26 Jun 2020 05:09:44 +0000 (14:09 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Fri, 26 Jun 2020 05:12:09 +0000 (14:12 +0900)
Change-Id: I0792f513b8a5842ee0fcd8b2e264c0a08059c771

tests/unittest/mocks/wifi-aware-mock-gdbus-internal.c
tests/unittest/mocks/wifi-aware-mock-gdbus-internal.h
tests/unittest/mocks/wifi-aware-mock-interface.h
tests/unittest/wifi-aware-session-unittest-fixture.h
tests/unittest/wifi-aware-session-unittest.cpp
tests/unittest/wifi-aware-unittest-util.cpp

index 1748b85..a71da00 100644 (file)
@@ -282,6 +282,11 @@ static GVariant *__data_path_open_result()
                        WIFI_AWARE_ERROR_NONE);
 }
 
+static GVariant *__session_terminated()
+{
+       return g_variant_new("(qi)", DUMMY_PUBLISH_ID, WIFI_AWARE_TERMINATION_REASON_UNKNOWN);
+}
+
 struct {
        const gchar *interface_name;
        const gchar *signal_name;
@@ -310,6 +315,13 @@ struct {
                NULL,
                NULL,
        },
+       [SESSION_TERMINATED] = {
+               "net.nan.discovery",
+               "SessionTerminated",
+               __session_terminated,
+               NULL,
+               NULL,
+       },
        {
                NULL,
                NULL,
@@ -322,9 +334,6 @@ struct {
 static gboolean __emit_signal(gpointer data)
 {
        wifi_aware_gdbus_signal_e signal = GPOINTER_TO_INT(data);
-       printf("__emit_signal %d\n", signal);
-       fflush(stdout);
-
        wifi_aware_gdbus_signal_list[signal].callback(_get_dummy_gdbus_connection(),
                        NULL, WIFI_AWARE_INTERFACE, WIFI_AWARE_DISCOVERY_INTERFACE,
                        wifi_aware_gdbus_signal_list[signal].signal_name,
index 6e76a0f..fc2c85a 100644 (file)
@@ -36,6 +36,7 @@ typedef enum {
        SERVICE_DISCOVERED = 0,
        MESSAGE_RECEIVED,
        DATA_PATH_OPENED,
+       SESSION_TERMINATED,
 } wifi_aware_gdbus_signal_e;
 
 GDBusConnection *_get_dummy_gdbus_connection();
index 2b1cae5..2086ef1 100644 (file)
@@ -22,6 +22,8 @@ extern "C" {
 typedef enum {
        SERVICE_DISCOVERED = 0,
        MESSAGE_RECEIVED,
+       DATA_PATH_OPENED,
+       SESSION_TERMINATED,
 } wifi_aware_gdbus_signal_e;
 
 void wifi_aware_mock_emit_gdbus_signal(wifi_aware_gdbus_signal_e signal);
index cdc4242..227a597 100644 (file)
@@ -27,6 +27,7 @@ protected:
                g_subscribed = false;
                g_discovered = false;
                g_message_received = false;
+               g_session_terminated = false;
                WifiAware::SetUp();
                wifi_aware_enable(WifiAware::__enabled_cb, NULL);
                RUN_GMAIN_LOOP;
@@ -51,11 +52,14 @@ protected:
        static void __received_cb(wifi_aware_session_h session,
                        wifi_aware_peer_h peer,
                        const unsigned char *message, size_t len, void *user_data);
+       static void __session_terminated_cb(wifi_aware_session_h session,
+                       wifi_aware_termination_reason_e reason, void *user_data);
 
        static bool g_published;
        static bool g_subscribed;
        static bool g_discovered;
        static bool g_message_received;
+       static bool g_session_terminated;
 
        wifi_aware_publish_h g_publish_config;
        wifi_aware_subscribe_h g_subscribe_config;
index e18df94..9a86e04 100644 (file)
@@ -24,6 +24,7 @@ bool WifiAwareSession::g_published;
 bool WifiAwareSession::g_subscribed;
 bool WifiAwareSession::g_discovered;
 bool WifiAwareSession::g_message_received;
+bool WifiAwareSession::g_session_terminated;
 
 void WifiAwareSession::__published_cb(wifi_aware_session_h session, wifi_aware_error_e error, void *user_data)
 {
@@ -60,6 +61,13 @@ void WifiAwareSession::__received_cb(wifi_aware_session_h session, wifi_aware_pe
        QUIT_GMAIN_LOOP;
 }
 
+void WifiAwareSession::__session_terminated_cb(wifi_aware_session_h session,
+               wifi_aware_termination_reason_e reason, void *user_data)
+{
+       g_session_terminated = true;
+       QUIT_GMAIN_LOOP;
+}
+
 TEST_F(WifiAwareSession, wifi_aware_session_create_p1)
 {
        int ret = 0;
@@ -118,12 +126,17 @@ TEST_F(WifiAwareSession, wifi_aware_session_set_terminated_cb_p)
 {
        int ret = 0;
 
-       wifi_aware_session_create(WIFI_AWARE_SESSION_PUBLISH, &g_session);
+       wifi_aware_session_h session = __create_dummy_session(WIFI_AWARE_SESSION_PUBLISH);
 
-       ret = wifi_aware_session_set_terminated_cb(g_session, NULL, NULL);
+       ret = wifi_aware_session_set_terminated_cb(session, __session_terminated_cb, NULL);
        CHECK_RESULT(WIFI_AWARE_ERROR_NONE, ret, "wifi_aware_session_set_terminated_cb");
 
-       wifi_aware_session_destroy(g_session);
+       wifi_aware_mock_emit_gdbus_signal(SESSION_TERMINATED);
+       RUN_GMAIN_LOOP;
+
+       ASSERT_TRUE(g_session_terminated) << "SessionTerminated signal";
+
+       __destroy_dummy_session(session);
 }
 
 TEST_F(WifiAwareSession, wifi_aware_session_set_terminated_cb_n)
@@ -596,42 +609,29 @@ TEST_F(WifiAwareSession, wifi_aware_session_set_service_discovered_cb_p)
 // wifi_aware_service_discovered_cb is called
 TEST_F(WifiAwareSession, wifi_aware_service_discovered_cb_p)
 {
-       wifi_aware_subscribe_create(&g_subscribe_config);
-       wifi_aware_subscribe_set_service_name(g_subscribe_config, SERVICE_NAME);
-       wifi_aware_session_create(WIFI_AWARE_SESSION_SUBSCRIBE, &g_session);
+       wifi_aware_session_h session = __create_dummy_session(WIFI_AWARE_SESSION_SUBSCRIBE);
 
-       wifi_aware_session_set_service_discovered_cb(g_session, __discovered_cb, NULL);
-       wifi_aware_session_subscribe(g_session, g_subscribe_config, WifiAwareSession::__subscribed_cb, NULL);
-       RUN_GMAIN_LOOP;
+       wifi_aware_session_set_service_discovered_cb(session, __discovered_cb, NULL);
 
        wifi_aware_mock_emit_gdbus_signal(SERVICE_DISCOVERED);
        RUN_GMAIN_LOOP;
 
-       CHECK_RESULT(g_discovered, true, "service_discovered_cb");
+       ASSERT_TRUE(g_discovered) << "ServiceDiscovered signal";
 
-       wifi_aware_session_stop(g_session);
-       wifi_aware_session_destroy(g_session);
-       wifi_aware_subscribe_destroy(g_subscribe_config);
+       __destroy_dummy_session(session);
 }
 
 // wifi_aware_service_discovered_cb is not called
 TEST_F(WifiAwareSession, wifi_aware_service_discovered_cb_n)
 {
-       wifi_aware_subscribe_create(&g_subscribe_config);
-       wifi_aware_subscribe_set_service_name(g_subscribe_config, SERVICE_NAME);
-       wifi_aware_session_create(WIFI_AWARE_SESSION_SUBSCRIBE, &g_session);
-
-       wifi_aware_session_set_service_discovered_cb(g_session, __discovered_cb, NULL);
-       wifi_aware_session_subscribe(g_session, g_subscribe_config, WifiAwareSession::__subscribed_cb, NULL);
-       RUN_GMAIN_LOOP;
+       wifi_aware_session_h session = __create_dummy_session(WIFI_AWARE_SESSION_SUBSCRIBE);
 
+       wifi_aware_session_set_service_discovered_cb(session, __discovered_cb, NULL);
        RUN_GMAIN_LOOP;
 
        CHECK_RESULT(g_discovered, false, "service_discovered_cb");
 
-       wifi_aware_session_stop(g_session);
-       wifi_aware_session_destroy(g_session);
-       wifi_aware_subscribe_destroy(g_subscribe_config);
+       __destroy_dummy_session(session);
 }
 
 TEST_F(WifiAwareSession, wifi_aware_session_set_service_discovered_cb_n1)
@@ -777,7 +777,7 @@ TEST_F(WifiAwareSession, wifi_aware_message_received_cb_p)
        wifi_aware_mock_emit_gdbus_signal(MESSAGE_RECEIVED);
        RUN_GMAIN_LOOP;
 
-       CHECK_RESULT(g_message_received, true, "message_received_cb");
+       ASSERT_TRUE(g_message_received) << "MessageReceived signal";
 
        wifi_aware_session_stop(g_session);
        wifi_aware_session_destroy(g_session);
index bfa9056..d4d023c 100644 (file)
@@ -61,26 +61,26 @@ typedef struct {
 } __wifi_aware_peer_s;
 
 typedef struct {
-    uint16_t ttl;
-    wifi_aware_publish_type_e publish_type;
-    char service_name[MAX_SERVICE_NAME_LEN + 1];
-    uint8_t specific_info[MAX_SERVICE_SPECIFIC_INFO_LEN];
-    uint16_t specific_info_len;
-    uint8_t match_filter[MAX_MATCH_FILTER_LEN];
-    uint16_t match_filter_len;
-    bool enable_ranging;
+       uint16_t ttl;
+       wifi_aware_publish_type_e publish_type;
+       char service_name[MAX_SERVICE_NAME_LEN + 1];
+       uint8_t specific_info[MAX_SERVICE_SPECIFIC_INFO_LEN];
+       uint16_t specific_info_len;
+       uint8_t match_filter[MAX_MATCH_FILTER_LEN];
+       uint16_t match_filter_len;
+       bool enable_ranging;
 } __wifi_aware_publish_request_s;
 
 typedef struct {
-    uint16_t ttl;
-    wifi_aware_subscribe_type_e subscribe_type;
-    char service_name[MAX_SERVICE_NAME_LEN + 1];
-    uint8_t specific_info[MAX_SERVICE_SPECIFIC_INFO_LEN];
-    uint16_t specific_info_len;
-    uint8_t match_filter[MAX_MATCH_FILTER_LEN];
-    uint16_t match_filter_len;
-    int max_distance;
-    int min_distance;
+       uint16_t ttl;
+       wifi_aware_subscribe_type_e subscribe_type;
+       char service_name[MAX_SERVICE_NAME_LEN + 1];
+       uint8_t specific_info[MAX_SERVICE_SPECIFIC_INFO_LEN];
+       uint16_t specific_info_len;
+       uint8_t match_filter[MAX_MATCH_FILTER_LEN];
+       uint16_t match_filter_len;
+       int max_distance;
+       int min_distance;
 } __wifi_aware_subscribe_request_s;
 
 typedef struct {