Update test console app
[platform/core/api/maps-service.git] / test / maps_test.c
1
2 #include <glib.h>
3
4 #include "maps_test.h"
5 #include "maps_test_search_place.h"
6 #include "maps_test_search_route.h"
7 #include "maps_test_geocode.h"
8 #include "maps_test_util.h"
9
10 ////////////////////////////////////////////////////////////
11
12 #define DEFAULT_PROVIDER_NAME ""
13 #define DEFAULT_PROVIDER_KEY  ""
14
15 maps_test_logging_type g_logging_type = MAPS_TEST_LOGGING_CONSOLE;
16
17 ////////////////////////////////////////////////////////////
18
19 maps_service_h maps_svc = NULL;
20 maps_view_h maps_view = NULL;
21 maps_test_state_type maps_test_state = MAPS_TEST_STATE_MAIN;
22 maps_preference_h maps_pref = NULL;
23
24 #define PROVIDER_NAME_LEN       512
25 #define PROVIDER_KEY_LEN        1024
26
27 char g_provider_name[PROVIDER_NAME_LEN+1] = DEFAULT_PROVIDER_NAME;
28 char g_provider_key[PROVIDER_KEY_LEN+1] = DEFAULT_PROVIDER_KEY;
29 char g_buffer[128];
30
31
32 static int scanf_safety(const char *format, ...)
33 {
34         char line[256];
35         if (fgets(line, sizeof(line), stdin) == NULL)
36                 return -1;
37
38         va_list args;
39         va_start(args, format);
40         int ret = vsscanf(line, format, args);
41         va_end(args);
42
43         return ret;
44 }
45
46 int maps_test_set_configuration()
47 {
48         printf("Input provider name. [%s] : ", g_provider_name);
49         scanf_safety("%s", &g_provider_name);
50
51         bool hide_key = (strlen(DEFAULT_PROVIDER_KEY) > 0 &&
52                                         !strncmp(g_provider_key, DEFAULT_PROVIDER_KEY, strlen(DEFAULT_PROVIDER_KEY)));
53         printf("Input provider key. [%s] : ", hide_key ? "*****" : g_provider_key);
54         scanf_safety("%s", &g_provider_key);
55
56         printf("Input how to print log [%s] (0:Off, 1:Console, 2:SDB, 3:All): ", get_logging_type_string(g_logging_type));
57         scanf_safety("%s", &g_buffer);
58         if (strlen(g_buffer) > 0)
59                 g_logging_type = atoi(g_buffer);
60
61         return MAPS_ERROR_NONE;
62 }
63
64 int maps_test_create_maps_service()
65 {
66         if (maps_svc)
67                 return MAPS_ERROR_INVALID_OPERATION;
68         int ret = maps_service_create_without_user_consent(g_provider_name, &maps_svc);
69         if (ret == MAPS_ERROR_NONE) {
70                 maps_service_set_user_consent(maps_svc, true);
71                 ret = maps_service_set_provider_key(maps_svc, g_provider_key);
72         }
73         return ret;
74 }
75
76 int maps_test_destroy_maps_service()
77 {
78         int ret = maps_service_destroy(maps_svc);
79         if (ret == MAPS_ERROR_NONE)
80                 maps_svc = NULL;
81         return ret;
82 }
83
84 static bool __maps_service_provider_info_cb(char *maps_provider, void *user_data)
85 {
86         int *number = (int*)user_data;
87         printf("%d : %s\n", ++*number, maps_provider);
88         return true;
89 }
90
91 int maps_test_show_list_of_providers()
92 {
93         int number = 0;
94         return maps_service_foreach_provider(__maps_service_provider_info_cb, &number);
95 }
96
97 void print_menu()
98 {
99         printf("========================================\n");
100         printf(" Maps Native API Tester\n");
101         printf("----------------------------------------\n");
102         printf("  a\t - Show list of Providers\n");
103         printf("  b\t - Set configuration\n");
104         printf("  c\t - Create Maps service\n");
105         printf("  d\t - Destroy Maps service\n");
106         printf("----------------------------------------\n");
107         printf("  1\t - Search Place\n");
108         printf("  2\t - Search Place By Address\n");
109         printf("  3\t - Search Place By Area\n");
110         printf("  4\t - Search Place List\n");
111         printf("  5\t - Search Place & Cancel\n");
112         printf("  6\t - Geocode\n");
113         printf("  7\t - Reverse Geocode\n");
114         printf("  8\t - Multi-reverse Geocode\n");
115         printf("  9\t - Route\n");
116         printf("----------------------------------------\n");
117         printf("  A\t - Stress Test - Search Place\n");
118         printf("  B\t - Stress Test - Geocode\n");
119         printf("  E\t - Stress Test - Route\n");
120         printf("----------------------------------------\n");
121         printf("  x\t - Exit\n");
122         printf("========================================\n");
123 }
124
125 int maps_test_startup()
126 {
127         print_menu();
128         return 0;
129 }
130
131 int maps_test_finish()
132 {
133         int ret = 0;
134         if (maps_svc) {
135                 ret = maps_service_destroy(maps_svc);
136                 maps_svc = NULL;
137         }
138         print_result(ret);
139         return ret;
140 }
141
142 bool run_command(char cmd)
143 {
144         int ret = 0, i;
145
146         switch ((int)maps_test_state) {
147         case MAPS_TEST_STATE_MAIN:
148                 switch (cmd) {
149                 case 'a': ret = maps_test_show_list_of_providers(); break;
150                 case 'b': ret = maps_test_set_configuration(); break;
151                 case 'c': ret = maps_test_create_maps_service(); break;
152                 case 'd': ret = maps_test_destroy_maps_service(); break;
153
154                 case '1': ret = maps_test_search_place(maps_svc); break;
155                 case '2': ret = maps_test_search_place_by_address(maps_svc); break;
156                 case '3': ret = maps_test_search_place_by_area(maps_svc); break;
157                 case '4': ret = maps_test_search_place_list(maps_svc); break;
158                 case '5': ret = maps_test_search_place_cancel(maps_svc); break;
159                 case '6': ret = maps_test_geocode(maps_svc); break;
160                 case '7': ret = maps_test_reverse_geocode(maps_svc); break;
161                 case '8': ret = maps_test_multi_reverse_geocode(maps_svc); break;
162                 case '9': ret = maps_test_search_route(maps_svc); break;
163
164                 case 'A':
165                         for (i = 0 ; i < 100; i++) {
166                                 ret = maps_test_search_place(maps_svc);
167                                 g_usleep(100000);
168                         }
169                         break;
170                 case 'B':
171                         for (i = 0 ; i < 100; i++) {
172                                 ret = maps_test_geocode(maps_svc);
173                                 g_usleep(100000);
174                         }
175                         break;
176                 case 'E':
177                         for (i = 0 ; i < 100; i++) {
178                                 ret = maps_test_search_route(maps_svc);
179                                 g_usleep(100000);
180                         }
181                         break;
182                 case 'x': return false;
183                 case '\0': print_menu(); break;
184                 default: printf("Unknown command\n"); break;
185                 }
186                 break;
187         }
188         print_result(ret);
189         return true;
190 }
191
192 void *test_thread(void *data)
193 {
194         maps_test_startup();
195
196         while (1) {
197                 char input[256] = "";
198                 scanf_safety("%s", &input);
199                 if (run_command(input[0]) == false)
200                         break;
201         };
202
203         maps_test_finish();
204         g_main_loop_quit(data);
205         g_main_loop_unref(data);
206         return NULL;
207 }
208
209
210 int main(int argc, char **argv)
211 {
212         GMainLoop *mainloop;
213 #if !GLIB_CHECK_VERSION(2, 36, 0)
214         g_type_init();
215 #endif
216         mainloop = g_main_loop_new(NULL, FALSE);
217         g_thread_new("capi-maps-service-test", &test_thread, mainloop);
218         g_main_loop_run(mainloop);
219
220         return 0;
221 }