maps_service_set_user_consent(maps_svc, true);
ret = maps_service_set_provider_key(maps_svc, g_provider_key);
}
+
+ if (maps_pref == NULL)
+ maps_preference_create(&maps_pref);
+ maps_preference_set_max_results(maps_pref, 5);
+ maps_preference_set_language(maps_pref, "ko-KR");
+
return ret;
}
int maps_test_destroy_maps_service()
{
+ maps_preference_destroy(maps_pref);
+ maps_pref = NULL;
+
int ret = maps_service_destroy(maps_svc);
- if (ret == MAPS_ERROR_NONE)
- maps_svc = NULL;
+ maps_svc = NULL;
return ret;
}
void print_menu()
{
+ printf("\n\n\n");
printf("========================================\n");
printf(" Maps Native API Tester\n");
printf("----------------------------------------\n");
printf(" 8\t - Multi-reverse Geocode\n");
printf(" 9\t - Route\n");
printf("----------------------------------------\n");
- printf(" A\t - Stress Test - Search Place\n");
- printf(" B\t - Stress Test - Geocode\n");
- printf(" E\t - Stress Test - Route\n");
+ printf(" A\t - Search Place x 200\n");
printf("----------------------------------------\n");
printf(" x\t - Exit\n");
printf("========================================\n");
bool run_command(char cmd)
{
- int ret = 0, i;
-
- switch ((int)maps_test_state) {
- case MAPS_TEST_STATE_MAIN:
- switch (cmd) {
- case 'a': ret = maps_test_show_list_of_providers(); break;
- case 'b': ret = maps_test_set_configuration(); break;
- case 'c': ret = maps_test_create_maps_service(); break;
- case 'd': ret = maps_test_destroy_maps_service(); break;
-
- case '1': ret = maps_test_search_place(maps_svc); break;
- case '2': ret = maps_test_search_place_by_address(maps_svc); break;
- case '3': ret = maps_test_search_place_by_area(maps_svc); break;
- case '4': ret = maps_test_search_place_list(maps_svc); break;
- case '5': ret = maps_test_search_place_cancel(maps_svc); break;
- case '6': ret = maps_test_geocode(maps_svc); break;
- case '7': ret = maps_test_reverse_geocode(maps_svc); break;
- case '8': ret = maps_test_multi_reverse_geocode(maps_svc); break;
- case '9': ret = maps_test_search_route(maps_svc); break;
-
- case 'A':
- for (i = 0 ; i < 100; i++) {
- ret = maps_test_search_place(maps_svc);
- g_usleep(100000);
- }
- break;
- case 'B':
- for (i = 0 ; i < 100; i++) {
- ret = maps_test_geocode(maps_svc);
- g_usleep(100000);
- }
- break;
- case 'E':
- for (i = 0 ; i < 100; i++) {
- ret = maps_test_search_route(maps_svc);
- g_usleep(100000);
- }
- break;
- case 'x': return false;
- case '\0': print_menu(); break;
- default: printf("Unknown command\n"); break;
- }
+ int ret = 0;
+
+ switch (cmd) {
+ case 'a': ret = maps_test_show_list_of_providers(); break;
+ case 'b': ret = maps_test_set_configuration(); break;
+ case 'c': ret = maps_test_create_maps_service(); break;
+ case 'd': ret = maps_test_destroy_maps_service(); break;
+
+ case '1': ret = maps_test_search_place(maps_svc, maps_pref); break;
+ case '2': ret = maps_test_search_place_by_address(maps_svc, maps_pref); break;
+ case '3': ret = maps_test_search_place_by_area(maps_svc, maps_pref); break;
+ case '4': ret = maps_test_search_place_list(maps_svc, maps_pref); break;
+ case '5': ret = maps_test_search_place_cancel(maps_svc, maps_pref); break;
+ case '6': ret = maps_test_geocode(maps_svc, maps_pref); break;
+ case '7': ret = maps_test_reverse_geocode(maps_svc, maps_pref); break;
+ case '8': ret = maps_test_multi_reverse_geocode(maps_svc, maps_pref); break;
+ case '9': ret = maps_test_search_route(maps_svc, maps_pref); break;
+
+ case 'A': ret = maps_test_search_place_repeatedly(g_provider_name, g_provider_key, 200); break;
+
+ case 'x': return false;
+ case '\0':
+ print_menu();
break;
+ default: printf("Unknown command\n"); break;
}
print_result(ret);
+
return true;
}
long longval;
} logval_type;
-extern maps_service_h maps_svc;
-extern maps_preference_h maps_pref;
+
#ifndef MIN
-#if 1
-
-#undef LOG_TAG
-#define LOG_TAG "MST_SERVICE"
-#define LOGD(fmt, args...) printf("%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
-#define LOGE(fmt, args...) printf("%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
-#define ENTER_FUNC printf("ENTER FUNC : %s (%d)\n", __FUNCTION__, __LINE__);
-#define EXIT_FUNC printf("EXIT FUNC : %s (%d)\n", __FUNCTION__, __LINE__);
-
-
-#define SEL_STR(name, str) (name && *name ? name : str)
-
-
-
-#define LOG_PREFIX " "
-
-#define LOG_VARIABLES() \
- logval_type lv; lv.strval = NULL; lv.intval = 0; lv.dblval = 0; lv.longval = 0;
-
-#define LOG_START_TITLE(fmt, args...) {\
- printf("\n"); \
- printf("================================================================================\n"); \
- printf(fmt"\n", ##args); \
- printf("--------------------------------------------------------------------------------\n"); \
-}
-
-#define LOG_START(fmt, args...) \
- if (fmt && *fmt && strlen(fmt) > 0) printf(fmt"\n", ##args);
-
-#define LOG_PRINT(fmt, args...) { \
- if (fmt && *fmt) printf(fmt"\n", ##args); \
- if (lv.strval) { free(lv.strval); lv.strval = NULL; } \
- lv.intval = 0; lv.dblval = 0.; lv.longval = 0; }
-
-#define LOG_FINISH(fmt, args...) \
- if (fmt && *fmt) printf(fmt"\n", ##args); \
- if (lv.strval) { free(lv.strval); lv.strval = NULL; } \
- lv.intval = 0; lv.dblval = 0.; lv.longval = 0;
-
-#else
-
#include <dlog.h>
#undef LOG_TAG
+#undef LOGD
+#undef LOGE
#define LOG_TAG "MAPS_TEST"
-//#define LOGD(fmt, args...) log_print(DLOG_DEBUG, LOG_TAG, "%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
-//#define LOGE(fmt, args...) log_print(DLOG_DEBUG, LOG_TAG, "%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
+#define LOGD(fmt, args...) log_print(DLOG_DEBUG, LOG_TAG, "%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
+#define LOGE(fmt, args...) log_print(DLOG_DEBUG, LOG_TAG, "%s(%d) "fmt"\n", __FUNCTION__, __LINE__, ##args)
#define ENTER_FUNC log_print(DLOG_DEBUG, LOG_TAG, "ENTER FUNC : %s (%d)\n", __FUNCTION__, __LINE__);
#define EXIT_FUNC log_print(DLOG_DEBUG, LOG_TAG, "EXIT FUNC : %s (%d)\n", __FUNCTION__, __LINE__);
if (lv.strval) { free(lv.strval); lv.strval = NULL; } \
lv.intval = 0; lv.dblval = 0.; lv.longval = 0; }
+#define LOG_PRINT_NOCR(fmt, args...) { \
+ if (fmt && *fmt) log_print(DLOG_DEBUG, LOG_TAG, fmt, ##args); \
+ if (lv.strval) { free(lv.strval); lv.strval = NULL; } \
+ lv.intval = 0; lv.dblval = 0.; lv.longval = 0; }
+
#define LOG_FINISH(fmt, args...) \
if (fmt && *fmt) log_print(DLOG_DEBUG, LOG_TAG, fmt"\n", ##args); \
if (lv.strval) { free(lv.strval); lv.strval = NULL; } \
lv.intval = 0; lv.dblval = 0.; lv.longval = 0;
-#endif
-
#endif /*MAPS_TEST_H*/
return true;
}
-int maps_test_geocode(maps_service_h maps_svc)
+int maps_test_geocode(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
error = maps_service_geocode(maps_svc, "Berlin", maps_pref, __maps_test_geocode_cb, "Geocoding with Berlin", &request_id);
cleanup_callback(error);
}
-int maps_test_reverse_geocode(maps_service_h maps_svc)
+int maps_test_reverse_geocode(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
error = maps_service_reverse_geocode(maps_svc, 12.944594, 77.554303, maps_pref,
__maps_test_reverse_geocode_cb, "Reverse-geocoding with [12.944594, 77.554303]", &request_id);
return false;
}
- log_address("", address_list);
+ log_address_list("", address_list);
maps_address_list_destroy(address_list);
LOG_FINISH("");
return true;
}
-int maps_test_multi_reverse_geocode(maps_service_h maps_svc)
+int maps_test_multi_reverse_geocode(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h coordinates[3];
maps_coordinates_create(52.5309, 13.3845, &coordinates[0]);
#ifndef __MAPS_TEST_GEOCODE_H__
#define __MAPS_TEST_GEOCODE_H__
-int maps_test_geocode(maps_service_h maps_svc);
-int maps_test_reverse_geocode(maps_service_h maps_svc);
-
-int maps_test_multi_reverse_geocode(maps_service_h maps_svc);
+int maps_test_geocode(maps_service_h maps_svc, maps_preference_h maps_pref);
+int maps_test_reverse_geocode(maps_service_h maps_svc, maps_preference_h maps_pref);
+int maps_test_multi_reverse_geocode(maps_service_h maps_svc, maps_preference_h maps_pref);
#endif /*__MAPS_TEST_GEOCODE_H__*/
LOG_FINISH("%s}", prefix);
}
+
+bool __log_address_list_cb(int index, maps_address_h address, void *user_data)
+{
+ char *prefix = (char*)user_data;
+ log_address(prefix, address);
+ return true;
+}
+
+void log_address_list(char *prefix, maps_address_list_h address_list)
+{
+ maps_address_list_foreach(address_list, __log_address_list_cb, prefix);
+}
+
+
+
void log_area(char *prefix, maps_area_h area)
{
if (!area) return;
LOG_VARIABLES();
- LOG_START("%saddress = {", prefix);
+ LOG_START("%sarea = {", prefix);
maps_area_s *_area = (maps_area_s*)area;
if (_area->type == MAPS_AREA_RECTANGLE) {
va_list args;
va_start(args, format);
if (type == MAPS_TEST_LOGGING_CONSOLE || type == MAPS_TEST_LOGGING_ALL)
- printf(format, args);
- #if 0
+ vprintf(format, args);
if (type == MAPS_TEST_LOGGING_SDB || type == MAPS_TEST_LOGGING_ALL)
- dlog_print(level, tag, format, args);
- #endif
+ dlog_vprint(level, tag, format, args);
va_end(args);
}
void log_address(char *prefix, maps_address_h address);
+void log_address_list(char *prefix, maps_address_list_h address_list);
void log_area(char *prefix, maps_area_h area);
void log_coordinates(char *prefix, char *title, maps_coordinates_h position);
#include "maps_test_search_place.h"
#include "maps_test_log.h"
#include "maps_test_util.h"
+#include <glib.h>
static maps_place_filter_h maps_place_filter = NULL;
static int ref_cnt = 0;
if (ref_cnt++) return;
if (maps_place_filter) return;
- maps_preference_set_max_results(maps_pref, 5);
- maps_preference_set_language(maps_pref, "ko-KR");
maps_place_filter_create(&maps_place_filter);
}
int distance = 0;
maps_distance_unit_e distance_unit;
if (maps_place_get_distance(place, &distance) == MAPS_ERROR_NONE) {
- maps_preference_get_distance_unit(maps_pref, &distance_unit);
+ distance_unit = get_current_distance_unit();
LOG_PRINT("%sdistance = %d %s", prefix, distance, get_distance_unit_string(distance_unit));
}
*
*/
-int maps_test_search_place(maps_service_h maps_svc)
+int maps_test_search_place(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h coordinates;
maps_coordinates_create(48.85784, 2.29516, &coordinates);
return error;
}
-int maps_test_search_place_by_address(maps_service_h maps_svc)
+int maps_test_search_place_by_address(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h top_left, bottom_right;
maps_area_h area;
return error;
}
-int maps_test_search_place_by_area(maps_service_h maps_svc)
+int maps_test_search_place_by_area(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h top_left, bottom_right;
maps_area_h area;
}
-int maps_test_search_place_list(maps_service_h maps_svc)
+int maps_test_search_place_list(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h coordinates;
maps_area_h area;
}
-int maps_test_search_place_cancel(maps_service_h maps_svc)
+int maps_test_search_place_cancel(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
- int request_id = 0, error;
+ int request_id = 0, error = MAPS_ERROR_NONE;
maps_coordinates_h coordinates;
maps_coordinates_create(48.85784, 2.29516, &coordinates);
maps_service_cancel_request(maps_svc, request_id);
maps_coordinates_destroy(coordinates);
+ print_result(error);
if (error != MAPS_ERROR_NONE)
cleanup();
return error;
}
+
+
+
+
+
+
+
+static bool g_responsed = false;
+static int g_result = false;
+
+static bool __maps_service_search_place_repeatedly_cb(maps_error_e error, int request_id , int index, int total, maps_place_h place, void* user_data)
+{
+ g_result = error;
+ if (index == total -1 || error != MAPS_ERROR_NONE) {
+ g_responsed = true;
+ return false;
+ } else {
+ return true;
+ }
+}
+
+
+int maps_test_search_place_repeatedly(char *provider_name, char *provider_key, int max_cnt)
+{
+ startup();
+ int request_id = 0, error = MAPS_ERROR_NONE;
+
+ LOG_VARIABLES();
+ int i;
+
+ for (i = 0; i < max_cnt; i++) {
+ g_responsed = false;
+
+ maps_service_h maps_svc = NULL;
+ int ret = maps_service_create_without_user_consent(provider_name, &maps_svc);
+ if (ret == MAPS_ERROR_NONE) {
+ maps_service_set_user_consent(maps_svc, true);
+ ret = maps_service_set_provider_key(maps_svc, provider_key);
+ }
+
+ maps_preference_h maps_pref = NULL;
+ maps_preference_create(&maps_pref);
+ maps_preference_set_property(maps_pref, MAPS_PLACE_FILTER_SORT_BY, "distance");
+
+ maps_coordinates_h coordinates = NULL;
+ maps_coordinates_create(48.85784, 2.29516, &coordinates);
+
+ maps_place_filter_set_place_name(maps_place_filter, "Berlin");
+
+ error = maps_service_search_place(maps_svc, coordinates, 5, maps_place_filter, maps_pref,
+ __maps_service_search_place_repeatedly_cb, "Search Place", &request_id);
+
+ if (error != MAPS_ERROR_NONE) {
+ maps_coordinates_destroy(coordinates);
+ maps_service_destroy(maps_svc);
+ break;
+ }
+ while (!g_responsed) g_usleep(100);
+ LOG_PRINT_NOCR("maps_test_search_place_repeatedly [%d/%d] : %s\n", i+1, max_cnt, get_result_string(g_result));
+
+ maps_coordinates_destroy(coordinates);
+ maps_preference_destroy(maps_pref);
+ error = maps_service_destroy(maps_svc);
+ }
+
+ cleanup(i == max_cnt && error == MAPS_ERROR_NONE);
+ return error;
+}
+
+
#ifndef __MAPS_TEST_SEARCH_PLACE_H__
#define __MAPS_TEST_SEARCH_PLACE_H__
-int maps_test_search_place(maps_service_h maps_svc);
+int maps_test_search_place(maps_service_h maps_svc, maps_preference_h maps_pref);
-int maps_test_search_place_by_address(maps_service_h maps_svc);
+int maps_test_search_place_by_address(maps_service_h maps_svc, maps_preference_h maps_pref);
-int maps_test_search_place_by_area(maps_service_h maps_svc);
+int maps_test_search_place_by_area(maps_service_h maps_svc, maps_preference_h maps_pref);
-int maps_test_search_place_list(maps_service_h maps_svc);
+int maps_test_search_place_list(maps_service_h maps_svc, maps_preference_h maps_pref);
-int maps_test_search_place_cancel(maps_service_h maps_svc);
+int maps_test_search_place_cancel(maps_service_h maps_svc, maps_preference_h maps_pref);
+
+int maps_test_search_place_repeatedly();
#endif /*__MAPS_TEST_SEARCH_PLACE_H__*/
}
-int maps_test_search_route(maps_service_h maps_svc)
+int maps_test_search_route(maps_service_h maps_svc, maps_preference_h maps_pref)
{
startup();
int request_id, error;
#ifndef __MAPS_TEST_SEARCH_ROUTE_H__
#define __MAPS_TEST_SEARCH_ROUTE_H__
-int maps_test_search_route(maps_service_h maps_svc);
+int maps_test_search_route(maps_service_h maps_svc, maps_preference_h maps_pref);
#endif /*__MAPS_TEST_SEARCH_ROUTE_H__*/
return distance_unit_string[distance_unit];
}
+maps_distance_unit_e get_current_distance_unit()
+{
+ extern maps_preference_h maps_pref;
+ maps_distance_unit_e distance_unit = MAPS_DISTANCE_UNIT_M;
+ maps_preference_get_distance_unit(maps_pref, &distance_unit);
+ return distance_unit;
+}
+
const char* get_maps_error_string(int error)
{
switch (error) {
else
printf("## Fail (%s)\n", get_maps_error_string(error));
}
+
+const char* get_result_string(int error)
+{
+ if (error == MAPS_ERROR_NONE)
+ return "Ok";
+ else
+ return "Fail";
+}
+
const char* get_turn_type_string(maps_route_turn_type_e turn_type);
const char* get_transport_string(maps_route_transport_mode_e transport);
const char* get_distance_unit_string(maps_distance_unit_e distance_unit);
+maps_distance_unit_e get_current_distance_unit();
const char* get_maps_error_string(int error);
void print_result(int error);
const char* get_logging_type_string(maps_test_logging_type type);
+const char* get_result_string(int error);
#endif /*__MAPS_TEST_UTIL_H__*/