Fix build error for toolchain upgrade
[platform/core/api/smart-traffic-control.git] / unittest / utc-stc.c
index 18dd7f6..f4de7b3 100755 (executable)
 
 //& set: Stc
 
+static stc_h g_hSTC;
+static bool g_bFeatureSTC;
+static stc_stats_info_e g_eStatsInfo;
+static stc_error_e g_nCallbackRet;
+static stc_stats_rule_h g_hRule;
+
+static GMainLoop *g_pMainLoop;
+static guint g_nTimeoutId;
+
+#define RUN_GMAIN_LOOP {\
+       g_pMainLoop = g_main_loop_new(NULL, false);\
+       g_nTimeoutId = g_timeout_add(GMAINTIMEOUT, stc_callback_timeout, g_pMainLoop);\
+       if (COMMON_DEBUG) {\
+               PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Run mainloop [%p]",\
+                       __LINE__, __FUNCTION__, g_pMainLoop);\
+       }\
+       g_main_loop_run(g_pMainLoop);\
+       g_source_remove(g_nTimeoutId);\
+       g_pMainLoop = NULL;\
+}
+
+#define QUIT_GMAIN_LOOP {\
+       if (COMMON_DEBUG) {\
+               PRINT_LOG(DLOG_INFO, "NativeTCT", "[Line:%5d][%s] Quit mainloop [%p]",\
+                       __LINE__, __FUNCTION__, g_pMainLoop);\
+       }\
+       g_main_loop_quit(g_pMainLoop);\
+}
+
+gboolean stc_callback_timeout(gpointer data)
+{
+       g_nCallbackRet = STC_ERROR_INVALID_OPERATION;
+       PRINT_RETURN("stc_callback_timeout", g_nCallbackRet);
+       QUIT_GMAIN_LOOP;
+       return false;
+}
+
+stc_callback_ret_e stc_stats_info_callback(stc_error_e result,
+               stc_stats_info_h info, void *user_data)
+{
+       g_nCallbackRet = STC_ERROR_NONE;
+
+       int ret = STC_ERROR_NONE;
+
+       switch(g_eStatsInfo) {
+       case STATS_INFO_APPID:
+               {
+                       char *app_id;
+                       ret = stc_stats_info_get_app_id(info, &app_id);
+                       PRINT_RETURN("stc_stats_info_get_app_id", ret);
+               }
+               break;
+       case STATS_INFO_IFACE_NAME:
+               {
+                       char *iface_name;
+                       ret = stc_stats_info_get_iface_name(info, &iface_name);
+                       PRINT_RETURN("stc_stats_info_get_iface_name", ret);
+               }
+               break;
+       case STATS_INFO_TIME_INTERVAL:
+               {
+                       time_t from;
+                       time_t to;
+                       ret = stc_stats_info_get_time_interval(info, &from, &to);
+                       PRINT_RETURN("stc_stats_info_get_time_interval", ret);
+               }
+               break;
+       case STATS_INFO_IFACE_TYPE:
+               {
+                       stc_iface_type_e iface_type;
+                       ret = stc_stats_info_get_iface_type(info, &iface_type);
+                       PRINT_RETURN("stc_stats_info_get_iface_type", ret);
+               }
+               break;
+       case STATS_INFO_COUNTER:
+               {
+                       int64_t incoming;
+                       int64_t outgoing;
+                       ret = stc_stats_info_get_counter(info, &incoming, &outgoing);
+                       PRINT_RETURN("stc_stats_info_get_counter", ret);
+               }
+               break;
+       case STATS_INFO_ROAMING_TYPE:
+               {
+                       stc_roaming_type_e roaming;
+                       ret = stc_stats_info_get_roaming_type(info, &roaming);
+                       PRINT_RETURN("stc_stats_info_get_roaming_type", ret);
+               }
+               break;
+       case STATS_INFO_PROTOCOL_TYPE:
+               {
+                       stc_protocol_type_e prototype;
+                       ret = stc_stats_info_get_protocol_type(info, &prototype);
+                       PRINT_RETURN("stc_stats_info_get_protocol_type", ret);
+               }
+               break;
+       case STATS_INFO_PROCESS_STATE:
+               {
+                       stc_process_state_e procstate;
+                       ret = stc_stats_info_get_process_state(info, &procstate);
+                       PRINT_RETURN("stc_stats_info_get_process_state", ret);
+               }
+               break;
+       case STATS_INFO_CLONE:
+       case STATS_INFO_DESTROY:
+               {
+                       stc_stats_info_h cloned = NULL;
+                       ret = stc_stats_info_clone(info, &cloned);
+                       PRINT_RETURN("stc_stats_info_clone", ret);
+                       if (ret == STC_ERROR_NONE) {
+                               ret = stc_stats_info_destroy(cloned);
+                               PRINT_RETURN("stc_stats_info_destroy", ret);
+                       }
+               }
+               break;
+       case STATS_INFO_FOREACH_ALL:
+               {
+                       PRINT_RETURN("stc_foreach_all_stats", ret);
+               }
+               break;
+       default:
+               PRINT_RETURN("stc_stats_info_callback", ret);
+               break;
+       }
+
+       QUIT_GMAIN_LOOP;
+
+       return STC_CALLBACK_CANCEL;
+}
+
+void stc_get_stats_finished_cb(stc_error_e result,
+               stc_all_stats_info_h info, void *user_data)
+{
+       g_nCallbackRet = STC_ERROR_NONE;
+
+       int ret = STC_ERROR_NONE;
+
+       switch (g_eStatsInfo) {
+       case STATS_INFO_GET_ALL:
+               {
+                       PRINT_RETURN("stc_get_all_stats", result);
+               }
+               break;
+       case STATS_INFO_FOREACH_ALL:
+               {
+                       ret = stc_foreach_all_stats(info, stc_stats_info_callback, user_data);
+                       PRINT_RETURN("stc_foreach_all_stats", ret);
+               }
+               break;
+       default:
+               PRINT_RETURN("stc_get_stats_finished_cb", ret);
+               break;
+       }
+
+       QUIT_GMAIN_LOOP;
+}
+
+stc_error_e stc_get_all_stats_info(stc_stats_info_e e)
+{
+       int ret = STC_ERROR_NONE;
+       time_t from, to;
+
+       ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+       CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+       from = stc_make_time(2000, 1, 1, 1, 1);
+       time(&to);
+       ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+       CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+       g_nCallbackRet = STC_ERROR_OPERATION_FAILED;
+       g_eStatsInfo = e;
+       ret = stc_get_all_stats(g_hSTC, g_hRule, stc_get_stats_finished_cb, NULL);
+       CHECK_RETURN("stc_get_all_stats", ret, STC_ERROR_NONE);
+       RUN_GMAIN_LOOP;
+       CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+       return STC_ERROR_NONE;
+}
+
+stc_error_e stc_get_stats_info(stc_stats_info_e e)
+{
+       int ret = STC_ERROR_NONE;
+       time_t from, to;
+
+       ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+       CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+       from = stc_make_time(2000, 1, 1, 1, 1);
+       time(&to);
+       ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+       CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+       g_nCallbackRet = STC_ERROR_NONE;
+       g_eStatsInfo = e;
+       ret = stc_get_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
+       CHECK_RETURN("stc_get_stats", ret, STC_ERROR_NONE);
+       RUN_GMAIN_LOOP;
+       CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+       return STC_ERROR_NONE;
+}
+
+stc_error_e stc_foreach_stats_info(stc_stats_info_e e)
+{
+       int ret = STC_ERROR_NONE;
+       time_t from, to;
+
+       ret = stc_stats_rule_set_app_id(g_hRule, STC_ALL_APP);
+       CHECK_RETURN("stc_stats_rule_set_app_id", ret, STC_ERROR_NONE);
+
+       from = stc_make_time(2000, 1, 1, 1, 1);
+       time(&to);
+       ret = stc_stats_rule_set_time_interval(g_hRule, from, to);
+       CHECK_RETURN("stc_stats_rule_set_time_interval", ret, STC_ERROR_NONE);
+
+       g_nCallbackRet = STC_ERROR_NONE;
+       g_eStatsInfo = e;
+       ret = stc_foreach_stats(g_hSTC, g_hRule, stc_stats_info_callback, NULL);
+       CHECK_RETURN("stc_foreach_stats", ret, STC_ERROR_NONE);
+       RUN_GMAIN_LOOP;
+       CHECK_RETURN(CALLBACK_RETURN, g_nCallbackRet, STC_ERROR_NONE);
+
+       return STC_ERROR_NONE;
+}
+
 void utc_stc_startup(void)
 {
        int ret = STC_ERROR_NONE;