1. Thumbnail extracting is enabled for burst shot
[platform/core/multimedia/libmedia-service.git] / test / media-service-test.c
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <media-svc.h>
4 #include <media-svc-noti.h>
5
6 GMainLoop *g_loop = NULL;
7 MediaSvcHandle *g_db_handle = NULL;
8
9 void _noti_cb(int pid,
10                 media_item_type_e update_item,
11                 media_item_update_type_e update_type,
12                 char *path,
13                 char *uuid,
14                 media_type_e content_type,
15                 char *mime_type,
16                 void *user_data)
17 {
18         media_svc_debug("Noti from PID(%d)", pid);
19
20         if (update_item == MS_MEDIA_ITEM_FILE) {
21                 media_svc_debug("Noti item : MS_MEDIA_ITEM_FILE");
22         } else if (update_item == MS_MEDIA_ITEM_DIRECTORY) {
23                 media_svc_debug("Noti item : MS_MEDIA_ITEM_DIRECTORY");
24         }
25
26         if (update_type == MS_MEDIA_ITEM_INSERT) {
27                 media_svc_debug("Noti type : MS_MEDIA_ITEM_INSERT");
28         } else if (update_type == MS_MEDIA_ITEM_DELETE) {
29                 media_svc_debug("Noti type : MS_MEDIA_ITEM_DELETE");
30         } else if (update_type == MS_MEDIA_ITEM_UPDATE) {
31                 media_svc_debug("Noti type : MS_MEDIA_ITEM_UPDATE");
32         }
33
34         //media_svc_debug("content type : %d", content_type);
35         printf("content type : %d\n", content_type);
36
37         if (path)
38                 printf("path : %s\n", path);
39         else
40                 printf("path not");
41
42         if (mime_type)
43                 printf("mime_type : %s", mime_type);
44         else
45                 printf("mime not");
46
47     if (user_data) printf("String : %s\n", (char *)user_data);
48         else
49                 printf("user not");
50
51     return;
52 }
53
54 #if 1
55 gboolean _send_noti_batch_operations(gpointer data)
56 {
57     int ret = MEDIA_INFO_ERROR_NONE;
58
59     /* First of all, noti subscription */
60     char *user_str = strdup("hi");
61     media_db_update_subscribe(_noti_cb, (void*)user_str);
62
63     /* 1. media_svc_insert_item_immediately */
64     char *path = "/opt/usr/media/test/image1.jpg";
65
66         media_svc_storage_type_e storage_type;
67
68         ret = media_svc_get_storage_type(path, &storage_type);
69         if (ret < MEDIA_INFO_ERROR_NONE) {
70                 media_svc_error("media_svc_get_storage_type failed : %d (%s)", ret, path);
71         return FALSE;
72         }
73
74         int i;
75         char *file_list[10];
76
77         ret = media_svc_insert_item_begin(g_db_handle, 100, TRUE, getpid());
78         //ret = media_svc_insert_item_begin(g_db_handle, 100);
79         for (i = 0; i < 16; i++) {
80                 char filepath[255] = {0,};
81                 snprintf(filepath, sizeof(filepath), "%s%d.jpg", "/opt/usr/media/test/image", i+1);
82                 media_svc_debug("File : %s\n", filepath);
83                 file_list[i] = strdup(filepath);
84                 ret = media_svc_insert_item_bulk(g_db_handle, storage_type, file_list[i], FALSE);
85                 if (ret != 0) {
86                         media_svc_error("media_svc_insert_item_bulk[%d] failed", i);
87                 } else {
88                         media_svc_debug("media_svc_insert_item_bulk[%d] success", i);
89                 }
90         }
91
92         ret = media_svc_insert_item_end(g_db_handle);
93
94         return FALSE;
95 }
96 #endif
97
98 gboolean _send_noti_operations(gpointer data)
99 {
100         int ret = MEDIA_INFO_ERROR_NONE;
101
102         /* First of all, noti subscription */
103         char *user_str = strdup("hi");
104         media_db_update_subscribe(_noti_cb, (void*)user_str);
105
106         /* 1. media_svc_insert_item_immediately */
107         char *path = "/opt/usr/media/test/image1.jpg";
108         media_svc_storage_type_e storage_type;
109
110         ret = media_svc_get_storage_type(path, &storage_type);
111         if (ret < MEDIA_INFO_ERROR_NONE) {
112                 media_svc_error("media_svc_get_storage_type failed : %d (%s)", ret, path);
113                 return FALSE;
114         }
115
116         ret = media_svc_insert_item_immediately(g_db_handle, storage_type, path);
117         if (ret < MEDIA_INFO_ERROR_NONE) {
118                 media_svc_error("media_svc_insert_item_immediately failed : %d", ret);
119                 return FALSE;
120         }
121
122         media_svc_debug("media_svc_insert_item_immediately success");
123
124         /* 2. media_svc_refresh_item */
125         ret = media_svc_refresh_item(g_db_handle, storage_type, path);
126         if (ret < MEDIA_INFO_ERROR_NONE) {
127                 media_svc_error("media_svc_refresh_item failed : %d", ret);
128                 return FALSE;
129         }
130         media_svc_debug("media_svc_refresh_item success");
131
132         /* 2. media_svc_move_item */
133         const char *dst_path = "/opt/usr/media/test/image11.jpg";
134         ret = media_svc_move_item(g_db_handle, storage_type, path, storage_type, dst_path);
135         if (ret < MEDIA_INFO_ERROR_NONE) {
136                 media_svc_error("media_svc_move_item failed : %d", ret);
137                 return FALSE;
138         }
139         media_svc_debug("media_svc_move_item success");
140
141         ret = media_svc_move_item(g_db_handle, storage_type, dst_path, storage_type, path);
142         if (ret < MEDIA_INFO_ERROR_NONE) {
143                 media_svc_error("media_svc_move_item failed : %d", ret);
144                 return FALSE;
145         }
146         media_svc_debug("media_svc_move_item success");
147
148         /* 4. media_svc_delete_item_by_path */
149         ret = media_svc_delete_item_by_path(g_db_handle, path);
150         if (ret < MEDIA_INFO_ERROR_NONE) {
151                 media_svc_error("media_svc_delete_item_by_path failed : %d", ret);
152                 return FALSE;
153         }
154         media_svc_debug("media_svc_delete_item_by_path success");
155
156         /* Rename folder */
157         const char *src_folder_path = "/opt/usr/media/test";
158         const char *dst_folder_path = "/opt/usr/media/test_test";
159         ret = media_svc_rename_folder(g_db_handle, src_folder_path, dst_folder_path);
160         if (ret < MEDIA_INFO_ERROR_NONE) {
161                 media_svc_error("media_svc_rename_folder failed : %d", ret);
162                 return FALSE;
163         }
164         media_svc_debug("media_svc_rename_folder success");
165
166         /* Rename folder again */
167         ret = media_svc_rename_folder(g_db_handle, dst_folder_path, src_folder_path);
168         if (ret < MEDIA_INFO_ERROR_NONE) {
169                 media_svc_error("media_svc_rename_folder failed : %d", ret);
170                 return FALSE;
171         }
172         media_svc_debug("media_svc_rename_folder success");
173
174         return FALSE;
175 }
176
177 int test_noti()
178 {
179         GSource *source = NULL;
180         GMainContext *context = NULL;
181
182         g_loop = g_main_loop_new(NULL, FALSE);
183         context = g_main_loop_get_context(g_loop);
184         source = g_idle_source_new();
185 #if 0
186         g_source_set_callback (source, _send_noti_operations, NULL, NULL);
187 #else
188         g_source_set_callback (source, _send_noti_batch_operations, NULL, NULL);
189 #endif
190         g_source_attach (source, context);
191
192         g_main_loop_run(g_loop);
193
194         g_main_loop_unref(g_loop);
195     media_db_update_unsubscribe();
196
197         return MEDIA_INFO_ERROR_NONE;
198 }
199
200 int main()
201 {
202         int ret = MEDIA_INFO_ERROR_NONE;
203         ret = media_svc_connect(&g_db_handle);
204         if (ret < MEDIA_INFO_ERROR_NONE) {
205                 media_svc_error("media_svc_connect failed : %d", ret);
206         } else {
207                 media_svc_debug("media_svc_connect success");
208         }
209
210         ret = test_noti();
211         if (ret < MEDIA_INFO_ERROR_NONE) {
212                 media_svc_error("test_noti failed : %d", ret);
213         } else {
214                 media_svc_debug("test_noti success");
215         }
216
217         media_svc_disconnect(g_db_handle);
218         return ret;
219 }
220