[UTC][url-download][NonACR][Cancel the download when timeout time is reached]
authorSeonah Moon <seonah1.moon@samsung.com>
Thu, 17 Aug 2017 10:07:27 +0000 (19:07 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Thu, 17 Aug 2017 10:51:34 +0000 (19:51 +0900)
Change-Id: Id764c5fa2b501c413e2cb93cd39fa33762811143
Signed-off-by: Seonah Moon <seonah1.moon@samsung.com>
12 files changed:
src/utc/url-download/utc-download-cancel.c
src/utc/url-download/utc-download-common.h
src/utc/url-download/utc-download-get-content-name.c
src/utc/url-download/utc-download-get-content-size.c
src/utc/url-download/utc-download-get-downloaded-file-path.c
src/utc/url-download/utc-download-get-etag.c
src/utc/url-download/utc-download-get-http-status.c
src/utc/url-download/utc-download-get-mime-type.c
src/utc/url-download/utc-download-get-temp-path.c
src/utc/url-download/utc-download-pause.c
src/utc/url-download/utc-download-set-temp-file-path.c
src/utc/url-download/utc-download-start.c

index d5a3a58..24e4e28 100755 (executable)
 
 //& set: utc-download-cancel
 
+#define TEST_URL "http://download.tizen.org/tct/2.2.1/Manual/Native_TBT_2.2.1_User_Guide_v1.0.pdf"
+
 static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
+static int id = -1;
 static int is_started = false;
 static bool is_error = false;
+static bool is_canceled = false;
 
-#define TEST_URL "http://download.tizen.org/tct/2.2.1/Manual/Native_TBT_2.2.1_User_Guide_v1.0.pdf"
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
-    if (state == DOWNLOAD_STATE_COMPLETED){
+    if (state == DOWNLOAD_STATE_COMPLETED) {
         g_main_loop_quit(gloop);
     } else if (state == DOWNLOAD_STATE_DOWNLOADING) {
         is_started = true;
@@ -38,7 +48,10 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
     } else if (state == DOWNLOAD_STATE_FAILED) {
         is_error = true;
         g_main_loop_quit(gloop);
-    }
+    } else if (state == DOWNLOAD_STATE_CANCELED) {
+               is_canceled = true;
+               g_main_loop_quit(gloop);
+       }
 }
 
 /**
@@ -49,8 +62,9 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
  */
 void utc_download_cancel_startup(void)
 {
-    g_type_init();
-    gloop = g_main_loop_new(NULL, 0);
+       g_type_init();
+       gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
 
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
 }
@@ -63,6 +77,7 @@ void utc_download_cancel_startup(void)
  */
 void utc_download_cancel_cleanup(void)
 {
+       g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
 }
@@ -75,7 +90,6 @@ void utc_download_cancel_cleanup(void)
 int utc_download_cancel_p1(void)
 {
     int retcode = 0;
-    int id = 0;
        download_state_e state;
 
        if (g_bIsDownloadFeatureSupported) {
@@ -97,11 +111,11 @@ int utc_download_cancel_p1(void)
                }
                assert_eq(is_error, false);
 
-               if (is_started) {
+               if (is_started && !is_canceled) {
                        retcode = download_cancel(id);
                        assert_eq(retcode, DOWNLOAD_ERROR_NONE);
                } else {
-                       assert_eq(is_started, true);
+                       assert_eq((is_started | is_canceled), true);
                }
                download_unset_state_changed_cb(id);
                sleep(1);
index 8454740..43e6fc6 100755 (executable)
@@ -19,6 +19,8 @@
 
 #include <system_info.h>
 
+#define DOWNLOAD_TIMEOUT 20000
+
 #define DOWNLOAD_FEATURE    "tizen.org/feature/download"
 #define TELEPHONY_FEATURE   "tizen.org/feature/network.telephony"
 #define WIFI_FEATURE        "tizen.org/feature/network.wifi"
index 94da616..d61ff9b 100755 (executable)
 
 //& set: utc-download-get-content-name
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
+static int id = -1;
+
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
@@ -48,9 +58,17 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
  */
 void utc_download_get_content_name_startup(void)
 {
+       int retcode = 0;
+
     g_type_init();
     gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
+
+       retcode = download_create(&id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
 }
 
 /**
@@ -61,6 +79,11 @@ void utc_download_get_content_name_startup(void)
  */
 void utc_download_get_content_name_cleanup(void)
 {
+       int retcode = download_destroy(id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
+
+       g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
 }
@@ -74,15 +97,11 @@ int utc_download_get_content_name_p1(void)
 {
     int retcode = 0;
     char *output = NULL;
-    int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_get_content_name(id, &output);
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
        } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-
                retcode = download_set_url(id, TEST_URL);
                assert_eq(retcode, DOWNLOAD_ERROR_NONE);
 
@@ -135,19 +154,13 @@ int utc_download_get_content_name_n1(void)
 int utc_download_get_content_name_n2(void)
 {
     int retcode = 0;
-    int id = 0;
     char *output = NULL;
 
-       if (!g_bIsDownloadFeatureSupported) {
-               retcode = download_get_content_name(id, &output);
+       retcode = download_get_content_name(id, NULL);
+       if (!g_bIsDownloadFeatureSupported)
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
-       } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-               retcode = download_get_content_name(id, NULL);
-               download_destroy(id);
+       else
                assert_eq(retcode, DOWNLOAD_ERROR_INVALID_PARAMETER);
-       }
 
        return 0;
 }
index 08f6e9a..58b3cbd 100755 (executable)
 
 //& set: utc-download-get-content-size
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId;
+
 static bool is_error = false;
+static int id = -1;
+
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
@@ -48,9 +58,17 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
  */
 void utc_download_get_content_size_startup(void)
 {
+       int retcode = 0;
+
     g_type_init();
-    gloop = g_main_loop_new(NULL, 0);
+       gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
+
+       retcode = download_create(&id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
 }
 
 /**
@@ -61,7 +79,12 @@ void utc_download_get_content_size_startup(void)
  */
 void utc_download_get_content_size_cleanup(void)
 {
-    g_main_loop_unref(gloop);
+       int retcode = download_destroy(id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
+
+       g_source_remove(gTimeoutId);
+       g_main_loop_unref(gloop);
     gloop = NULL;
 }
 
@@ -74,15 +97,11 @@ int utc_download_get_content_size_p1(void)
 {
     int retcode = 0;
     unsigned long long output = 0;
-    int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_get_content_size(id, &output);
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
        } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-
                retcode = download_set_url(id, TEST_URL);
                assert_eq(retcode, DOWNLOAD_ERROR_NONE);
 
@@ -96,10 +115,7 @@ int utc_download_get_content_size_p1(void)
                assert_eq(is_error, false);
 
                retcode = download_get_content_size(id, &output);
-
                download_unset_state_changed_cb(id);
-               download_destroy(id);
-
                assert_eq(retcode, DOWNLOAD_ERROR_NONE);
                assert_gt((int)output, 0);
        }
@@ -136,20 +152,13 @@ int utc_download_get_content_size_n1(void)
 int utc_download_get_content_size_n2(void)
 {
     int retcode = 0;
-    int id = 0;
     unsigned long long output = 0;
 
-       if (!g_bIsDownloadFeatureSupported) {
-               retcode = download_get_content_size(id, &output);
+       retcode = download_get_content_size(id, NULL);
+       if (!g_bIsDownloadFeatureSupported)
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
-       } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-               retcode = download_get_content_size(id, NULL);
-               download_destroy(id);
-
+       else
                assert_eq(retcode, DOWNLOAD_ERROR_INVALID_PARAMETER);
-       }
 
     return 0;
 }
index 8c766ff..ffe4ae8 100755 (executable)
 
 //& set: utc-download-get-downloaded-file-path
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
 static int id = -1;
 
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
+
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
     int retcode = 0;
@@ -53,6 +62,8 @@ void utc_download_get_downloaded_file_path_startup(void)
 
     g_type_init();
        gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
        is_error = false;
 
@@ -90,6 +101,7 @@ void utc_download_get_downloaded_file_path_cleanup(void)
 
        id = -1;
 
+    g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
 }
index 0c6dd4b..d21d6af 100755 (executable)
 
 //& set: utc-download-get-etag
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/2.2.1/Manual/Native_TBT_2.2.1_User_Guide_v1.0.pdf"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
+static int id = -1;
+
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
@@ -48,9 +58,17 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
  */
 void utc_download_get_etag_startup(void)
 {
+       int retcode = 0;
+
     g_type_init();
-    gloop = g_main_loop_new(NULL, 0);
+       gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
+
+       retcode = download_create(&id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Startup error at %s:%d\n", __FILE__, __LINE__);
 }
 
 /**
@@ -61,8 +79,13 @@ void utc_download_get_etag_startup(void)
  */
 void utc_download_get_etag_cleanup(void)
 {
-    g_main_loop_unref(gloop);
-    gloop = NULL;
+       int retcode = download_destroy(id);
+       if (retcode != DOWNLOAD_ERROR_NONE)
+               fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
+
+       g_source_remove(gTimeoutId);
+       g_main_loop_unref(gloop);
+       gloop = NULL;
 }
 
 /**
@@ -74,15 +97,11 @@ int utc_download_get_etag_p1(void)
 {
     int retcode = 0;
     char *etag = NULL;
-    int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_get_etag(id, &etag);
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
        } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-
                retcode = download_set_url(id, TEST_URL);
                assert_eq(retcode, DOWNLOAD_ERROR_NONE);
 
@@ -98,8 +117,6 @@ int utc_download_get_etag_p1(void)
                retcode = download_get_etag(id, &etag);
                download_unset_state_changed_cb(id);
                download_cancel(id);
-               download_destroy(id);
-
                assert_eq(retcode, DOWNLOAD_ERROR_NONE);
                assert(etag);
                free(etag);
@@ -137,18 +154,13 @@ int utc_download_get_etag_n1(void)
 int utc_download_get_etag_n2(void)
 {
     int retcode = 0;
-    int id = 0;
     char *etag = NULL;
 
-       if (!g_bIsDownloadFeatureSupported) {
-               retcode = download_get_etag(id, &etag);
+       retcode = download_get_etag(id, NULL);
+       if (!g_bIsDownloadFeatureSupported)
                assert_eq(retcode, DOWNLOAD_ERROR_NOT_SUPPORTED);
-       } else {
-               retcode = download_create(&id);
-               assert_eq(retcode, DOWNLOAD_ERROR_NONE);
-               retcode = download_get_etag(id, NULL);
-               download_destroy(id);
+       else
                assert_eq(retcode, DOWNLOAD_ERROR_INVALID_PARAMETER);
-       }
+
     return 0;
 }
index 1e257e0..373c0c8 100755 (executable)
 
 //& set: utc-download-get-http-status
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
-static bool is_timeout = false;
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static int id = -1;
 
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
+
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
-    if (state == DOWNLOAD_STATE_FAILED ||
-               state == DOWNLOAD_STATE_COMPLETED) {
-        g_main_loop_quit(gloop);
-    }
+       if (state == DOWNLOAD_STATE_COMPLETED ||
+                       state == DOWNLOAD_STATE_FAILED ||
+                       state == DOWNLOAD_STATE_CANCELED)
+               g_main_loop_quit(gloop);
 }
 
 /**
@@ -45,6 +53,7 @@ void utc_download_get_http_status_startup(void)
        int retcode = 0;
        g_type_init();
        gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
 
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
        retcode = download_create(&id);
@@ -69,12 +78,7 @@ void utc_download_get_http_status_startup(void)
  */
 void utc_download_get_http_status_cleanup(void)
 {
-       int retcode = 0;
-
-       g_main_loop_unref(gloop);
-       gloop = NULL;
-
-       retcode = download_unset_state_changed_cb(id);
+       int retcode = download_unset_state_changed_cb(id);
        if (retcode != DOWNLOAD_ERROR_NONE)
                fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
 
@@ -83,6 +87,10 @@ void utc_download_get_http_status_cleanup(void)
                fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
 
        id = -1;
+
+    g_source_remove(gTimeoutId);
+       g_main_loop_unref(gloop);
+       gloop = NULL;
 }
 
 /**
index f22a319..53fe5fb 100755 (executable)
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
 
 static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
 static int id = -1;
 
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
+
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
     int retcode = 0;
@@ -52,6 +60,8 @@ void utc_download_get_mime_type_startup(void)
 {
     g_type_init();
     gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
     is_error = false;
 
@@ -69,10 +79,11 @@ void utc_download_get_mime_type_startup(void)
 void utc_download_get_mime_type_cleanup(void)
 {
        download_unset_state_changed_cb(id);
-    download_destroy(id);
+       download_destroy(id);
 
-    g_main_loop_unref(gloop);
-    gloop = NULL;
+       g_source_remove(gTimeoutId);
+       g_main_loop_unref(gloop);
+       gloop = NULL;
 }
 
 /**
index bde76dc..baabc19 100755 (executable)
 
 //& set: utc-download-get-temp-path
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
 static int id = -1;
 
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
+
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
     int retcode = 0;
@@ -53,6 +62,7 @@ void utc_download_get_temp_path_startup(void)
 
     g_type_init();
     gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
 
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
     is_error = false;
@@ -88,6 +98,7 @@ void utc_download_get_temp_path_cleanup(void)
                        fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
        id = -1;
 
+       g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
 }
index 4da16db..3898691 100755 (executable)
 
 //& set: utc-download-pause
 
+#define TEST_URL "http://download.tizen.org/tct/2.3/2.3_r1/NATIVE_TCT/Tizen2.3_TBT_User_Guide.pdf"
+
 static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
+static int id = -1;
 static int is_pause_success = false;
 static int is_started = false;
 static bool is_error = false;
 static bool is_changed = false;
 
-#define TEST_URL "http://download.tizen.org/tct/2.3/2.3_r1/NATIVE_TCT/Tizen2.3_TBT_User_Guide.pdf"
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
@@ -58,9 +67,10 @@ void utc_download_pause_startup(void)
 {
     g_type_init();
     gloop = g_main_loop_new(NULL, 0);
-    is_pause_success = false;
+    gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
 
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
+       is_pause_success = false;
 }
 
 /**
@@ -72,6 +82,7 @@ void utc_download_pause_startup(void)
 void utc_download_pause_cleanup(void)
 {
        is_pause_success = true;
+       g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
 }
@@ -85,7 +96,6 @@ void utc_download_pause_cleanup(void)
 int utc_download_pause_p1(void)
 {
     int retcode = 0;
-    int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_pause(id);
index be83b5d..0c513de 100755 (executable)
 
 //& set: utc-download-set-temp-file-path
 
-static GMainLoop* gloop = NULL;
 #define TEST_URL "http://download.tizen.org/tct/2.2.1/Manual/Native_TBT_2.2.1_User_Guide_v1.0.pdf"
+
+static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static bool is_error = false;
 static int id = -1;
 
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
+
 static void state_cb(int download_id, download_state_e state, void *user_data)
 {
     int retcode = 0;
@@ -53,8 +62,10 @@ static void state_cb(int download_id, download_state_e state, void *user_data)
 void utc_download_set_temp_path_startup(void)
 {
        int retcode = 0;
-    g_type_init();
-    gloop = g_main_loop_new(NULL, 0);
+       g_type_init();
+       gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
+
        g_bIsDownloadFeatureSupported = download_check_feature(DOWNLOAD_SUPPORTED_FEATURE_DOWNLOAD);
 
        retcode = download_create(&id);
@@ -74,6 +85,7 @@ void utc_download_set_temp_path_cleanup(void)
        if (retcode != DOWNLOAD_ERROR_NONE)
                fprintf(stderr, "Cleanup error at %s:%d\n", __FILE__, __LINE__);
 
+    g_source_remove(gTimeoutId);
     g_main_loop_unref(gloop);
     gloop = NULL;
        id = -1;
index bcb7bad..410469c 100755 (executable)
 
 //& set: utc-download-start
 
-//static url_download_h handle = NULL;
+#define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+
 static GMainLoop* gloop = NULL;
+static guint gTimeoutId = -1;
+
 static int is_download_success = true;
 static int is_download_failed = 0;
+static int id = -1;
 static bool is_error = false;
 
-#define TEST_URL "http://download.tizen.org/tct/tct-download-tizen-tests-image-lq.png"
+static gboolean download_timeout_callback(gpointer data)
+{
+       download_cancel(id);
+       return false;
+}
 
 static void state_n_cb(int download_id, download_state_e state, void *user_data)
 {
@@ -53,7 +61,10 @@ static void state_p_cb (int download_id, download_state_e state, void *user_data
     if (state == DOWNLOAD_STATE_COMPLETED || state == DOWNLOAD_STATE_DOWNLOADING) {
         is_download_success = true;
         g_main_loop_quit(gloop);
-    } else
+    } else if (state == DOWNLOAD_STATE_CANCELED) {
+               is_download_success = false;
+               g_main_loop_quit(gloop);
+       } else
         is_download_success = false;
 
     retcode = download_get_error(download_id, &err);
@@ -76,8 +87,9 @@ static void state_p_cb (int download_id, download_state_e state, void *user_data
  */
 void utc_download_start_startup(void)
 {
-    g_type_init();
-    gloop = g_main_loop_new(NULL, 0);
+       g_type_init();
+       gloop = g_main_loop_new(NULL, 0);
+       gTimeoutId = g_timeout_add(DOWNLOAD_TIMEOUT, download_timeout_callback, gloop);
     is_download_success = true;
     is_download_failed = false;
 
@@ -94,6 +106,7 @@ void utc_download_start_cleanup(void)
 {
     is_download_failed = false;
     is_download_success = false;
+    g_source_remove(gTimeoutId);
     g_main_loop_quit(gloop);
     g_main_loop_unref(gloop);
     gloop = NULL;
@@ -107,7 +120,6 @@ void utc_download_start_cleanup(void)
 int utc_download_start_p1(void)
 {
     int retcode = 0;
-    int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_start(id);
@@ -151,7 +163,6 @@ int utc_download_start_p1(void)
 int utc_download_start_n1(void)
 {
     int retcode = 0;
-       int id = 0;
 
        if (!g_bIsDownloadFeatureSupported) {
                retcode = download_start(id);