media_svc_plugin_test: Remove invalid )
[platform/core/multimedia/libmedia-service.git] / test / plugin / media_svc_plugin_test.c
1 /*
2  * libmedia-service
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Hyunjun Ko <zzoon.ko@samsung.com>, Haejeong Kim <backto.kim@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 #include <stdlib.h>
23 #include <stdio.h>
24 #include <dlfcn.h>
25 #include <stdbool.h>
26 #include <media-svc.h>
27
28 #include <tzplatform_config.h>
29
30 #define PLUGIN_SO_FILE_NAME  "/usr/lib/libmedia-content-plugin.so"
31 #define MEDIA_ROOT_PATH_SDCARD  tzplatform_mkpath(TZ_SYS_STORAGE, "sdcard")
32 void *funcHandle = NULL;
33
34 static void msg_print(int line, char *msg);
35
36 int (*svc_connect)(void **handle, char **err_msg);
37 int (*svc_disconnect)(void *handle, char **err_msg);
38 int (*svc_check_item_exist)(void *handle, const char *file_path, bool *modified, char **err_msg);
39 int (*svc_insert_item_immediately)(void *handle, const char *file_path, int storage_type, const char *mime_type, char **err_msg);
40 int (*svc_set_folder_item_validity)(void *handle, const char *folder_path, int validity, int recursive, char **err_msg);
41 int (*svc_delete_all_invalid_items_in_folder)(void *handle, const char *folder_path, char **err_msg);
42
43 int __load_functions()
44 {
45         msg_print(__LINE__, "__load_functions");
46
47         funcHandle = dlopen(PLUGIN_SO_FILE_NAME, RTLD_LAZY);
48         if (!funcHandle) {
49                 fprintf(stderr, "error: %s\n", dlerror());
50         }
51
52         svc_connect                     = dlsym(funcHandle, "connect");
53         svc_disconnect          = dlsym(funcHandle, "disconnect");
54         svc_check_item_exist    = dlsym(funcHandle, "check_item_exist");
55         svc_insert_item_immediately     = dlsym(funcHandle, "insert_item_immediately");
56         svc_set_folder_item_validity    = dlsym(funcHandle, "set_folder_item_validity");
57         svc_delete_all_invalid_items_in_folder  = dlsym(funcHandle, "delete_all_invalid_items_in_folder");
58
59         if (!svc_connect ||
60             !svc_disconnect ||
61             !svc_insert_item_immediately ||
62             !svc_set_folder_item_validity ||
63             !svc_delete_all_invalid_items_in_folder ||
64             !svc_check_item_exist) {
65                 fprintf(stderr, "error: %s\n", dlerror());
66                 return -1;
67         }
68
69         return 0;
70 }
71
72 int __unload_functions(void)
73 {
74         msg_print(__LINE__, "__unload_functions");
75
76         if (funcHandle) {
77                 dlclose(funcHandle);
78         }
79
80         return 0;
81 }
82
83 int main()
84 {
85         int ret = 0;
86         MediaSvcHandle *db_handle = NULL;
87         char *err_msg = NULL;
88         char path[1024] = {0, };
89         char type[1024] = {0, };
90
91         ret = __load_functions();
92         if (ret < 0) {
93                 msg_print(__LINE__, "__load_functions error");
94                 return -1;
95         } else {
96                 msg_print(__LINE__, "__load_functions success");
97         }
98
99         /*db open ================================================== */
100         ret = svc_connect(&db_handle, &err_msg);
101         if (ret < 0) {
102                 msg_print(__LINE__, "svc_connect error");
103                 if (err_msg != NULL) {
104                         printf("err_msg[%s]\n", err_msg);
105                         free(err_msg);
106                         err_msg = NULL;
107                 }
108                 __unload_functions();
109                 return -1;
110         } else {
111                 msg_print(__LINE__, "svc_connect success");
112         }
113
114 #if 1
115         ret = media_svc_create_table(db_handle);
116         if (ret < 0) {
117                 msg_print(__LINE__, "table already exists");
118         } else {
119                 msg_print(__LINE__, "table create success");
120         }
121 #endif
122
123 #if 1
124         while (1) {
125
126                 printf("Enter path and mimetype ( ex. %s image ) : ", tzplatform_mkpath(TZ_USER_CONTENT, "a.jpg"));
127                 scanf("%s %s", path, type);
128                 bool modified = false;
129                 /*check_item_exist ============================================ */
130                 ret = svc_check_item_exist(db_handle, path, &modified, &err_msg);
131                 if (ret < 0) {
132                         msg_print(__LINE__, "svc_check_item_exist error");
133                         if (err_msg != NULL) {
134                                 printf("err_msg[%s]\n", err_msg);
135                                 free(err_msg);
136                                 err_msg = NULL;
137                         }
138                         /*__unload_functions(); */
139                         /*return -1; */
140                 } else {
141                         if (modified)
142                                 msg_print(__LINE__, "svc_check_item_exist success. Modified");
143                         else
144                                 msg_print(__LINE__, "svc_check_item_exist success. Not modified");
145                 }
146
147                 /* svc_check_item_exist ============================================ */
148                 ret = svc_insert_item_immediately(db_handle, path, 0, type, &err_msg);
149                 if (ret < 0) {
150                         msg_print(__LINE__, "svc_insert_item_immediately error");
151                         if (err_msg != NULL) {
152                                 printf("err_msg[%s]\n", err_msg);
153                                 free(err_msg);
154                                 err_msg = NULL;
155                         }
156                         /*__unload_functions(); */
157                         /*return -1; */
158                 } else {
159                         msg_print(__LINE__, "svc_insert_item_immediately success");
160                 }
161         } /* End of While */
162
163         ret = media_svc_insert_folder(db_handle, 0,  path);
164         if (ret < 0) {
165                 msg_print(__LINE__, "media_svc_insert_folder error ");
166         } else {
167                 msg_print(__LINE__, "media_svc_insert_folder success");
168         }
169 #endif
170
171         /*folder test ================================================== */
172         char *folder_path = tzplatform_mkpath(TZ_USER_CONTENT, "Sounds");
173         ret = svc_set_folder_item_validity(db_handle, folder_path, 0, 1, &err_msg);
174         if (ret < 0) {
175         msg_print(__LINE__, "svc_set_folder_item_validity error");
176                 if (err_msg != NULL) {
177                         printf("err_msg[%s]\n", err_msg);
178                         free(err_msg);
179                         err_msg = NULL;
180                 }
181         } else {
182                 msg_print(__LINE__, "svc_insert_item_immediately success");
183         }
184
185         ret = svc_delete_all_invalid_items_in_folder(db_handle, folder_path, &err_msg);
186         if (ret < 0) {
187         msg_print(__LINE__, "svc_delete_all_invalid_items_in_folder error");
188                 if (err_msg != NULL) {
189                         printf("err_msg[%s]\n", err_msg);
190                         free(err_msg);
191                         err_msg = NULL;
192                 }
193         } else {
194                 msg_print(__LINE__, "svc_insert_item_immediately success");
195         }
196
197         /*db close ================================================== */
198         ret = svc_disconnect(db_handle, &err_msg);
199         if (ret < 0) {
200         msg_print(__LINE__, "svc_disconnect error");
201                 if (err_msg != NULL) {
202                         printf("err_msg[%s]\n", err_msg);
203                         free(err_msg);
204                         err_msg = NULL;
205                 }
206                 __unload_functions();
207                 return -1;
208         } else {
209                 msg_print(__LINE__, "svc_disconnect success");
210         }
211
212         __unload_functions();
213
214         return 0;
215 }
216
217
218 static void msg_print(int line, char *msg)
219 {
220         fprintf(stderr, "[%d]%s\n", line, msg);
221 }
222