3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
20 #include <sync_agent.h>
23 POSITIVE_TC_IDX = 0x01,
27 static void startup(void);
28 static void cleanup(void);
30 void (*tet_startup) (void) = startup;
31 void (*tet_cleanup) (void) = cleanup;
33 #define TEST_FW_CONFIG_FILE "../../../testcase/fw-test-cfg/test_fw_config.xml"
37 #define NOTI_KEY "fw_test_noti"
39 #define API_NAME_SYNC_START_UP "startup"
40 #define API_NAME_SYNC_CLEAN_UP "cleanup"
41 #define API_NAME_EVENT_CB "_event_cb"
42 #define API_NAME_CANCEL_CB "_cancel_cb"
43 #define API_NAME_NOTI_CB "_noti_cb"
45 #define API_NAME_SYNC_AGENT_APPEND_EVENT_DATA_PARAM "sync_agent_append_event_data_param"
46 #define API_NAME_SYNC_AGENT_GET_EVENT_DATA_PARAM "sync_agent_get_event_data_param"
47 #define API_NAME_SYNC_AGENT_RUN_EVENT_HANDLER "sync_agent_run_event_handler"
48 #define API_NAME_SYNC_AGENT_SET_EVENT_CALLBACK "sync_agent_set_event_callback"
49 #define API_NAME_SYNC_AGENT_CREATE_NOTI "sync_agent_create_noti"
50 #define API_NAME_SYNC_AGENT_SEND_NOTI "sync_agent_send_noti"
51 #define API_NAME_SYNC_AGENT_CREATE_EVENT "sync_agent_create_event"
52 #define API_NAME_SYNC_AGENT_SEND_EVENT "sync_agent_send_event"
53 #define API_NAME_SYNC_AGENT_RUN_NOTI_LISTENER "sync_agent_run_noti_listener"
54 #define API_NAME_SYNC_AGENT_STOP_NOTI_LISTENER "sync_agent_stop_noti_listener"
55 #define API_NAME_SYNC_AGENT_SET_NOTI_CALLBACK "sync_agent_set_noti_callback"
56 #define API_NAME_SYNC_AGENT_CLEAN_EVENT_HANDLER "sync_agent_clean_event_handler"
58 static void utc_sync_agent_framework_sync_agent_append_event_data_param_p(void);
59 static void utc_sync_agent_framework_sync_agent_get_event_data_param_p(void);
60 static void utc_sync_agent_framework_sync_agent_run_event_handler_p(void);
61 static void utc_sync_agent_framework_sync_agent_set_event_callback_p(void);
62 static void utc_sync_agent_framework_sync_agent_set_event_callback_n(void);
63 static void utc_sync_agent_framework_sync_agent_create_noti_p(void);
64 static void utc_sync_agent_framework_sync_agent_send_noti_p(void);
65 static void utc_sync_agent_framework_sync_agent_send_noti_n(void);
66 static void utc_sync_agent_framework_sync_agent_create_event_p(void);
67 static void utc_sync_agent_framework_sync_agent_send_event_p(void);
68 static void utc_sync_agent_framework_sync_agent_send_event_n(void);
69 static void utc_sync_agent_framework_sync_agent_run_noti_listener_p(void);
70 static void utc_sync_agent_framework_sync_agent_run_noti_listener_n(void);
71 static void utc_sync_agent_framework_sync_agent_stop_noti_listener_p(void);
72 static void utc_sync_agent_framework_sync_agent_set_noti_callback_p(void);
73 static void utc_sync_agent_framework_sync_agent_clean_event_handler_p(void);
75 static int _event_cb(sync_agent_event_data_s * request, sync_agent_event_data_s * response);
76 static sync_agent_event_ipc_cancel_e _cancel_cb(void *user_data);
77 static int _noti_cb(sync_agent_event_data_s * noti, void *user_data);
79 struct tet_testlist tet_testlist[] = {
80 {utc_sync_agent_framework_sync_agent_append_event_data_param_p, POSITIVE_TC_IDX},
81 {utc_sync_agent_framework_sync_agent_get_event_data_param_p, POSITIVE_TC_IDX},
82 {utc_sync_agent_framework_sync_agent_run_event_handler_p, POSITIVE_TC_IDX},
83 {utc_sync_agent_framework_sync_agent_set_event_callback_p, POSITIVE_TC_IDX},
84 {utc_sync_agent_framework_sync_agent_set_event_callback_n, NEGATIVE_TC_IDX},
85 {utc_sync_agent_framework_sync_agent_create_noti_p, POSITIVE_TC_IDX},
86 {utc_sync_agent_framework_sync_agent_send_noti_p, POSITIVE_TC_IDX},
87 {utc_sync_agent_framework_sync_agent_send_noti_n, NEGATIVE_TC_IDX},
88 {utc_sync_agent_framework_sync_agent_create_event_p, POSITIVE_TC_IDX},
89 {utc_sync_agent_framework_sync_agent_send_event_p, POSITIVE_TC_IDX},
90 {utc_sync_agent_framework_sync_agent_send_event_n, NEGATIVE_TC_IDX},
91 {utc_sync_agent_framework_sync_agent_run_noti_listener_p, POSITIVE_TC_IDX},
92 {utc_sync_agent_framework_sync_agent_run_noti_listener_n, NEGATIVE_TC_IDX},
93 {utc_sync_agent_framework_sync_agent_stop_noti_listener_p, POSITIVE_TC_IDX},
94 {utc_sync_agent_framework_sync_agent_set_noti_callback_p, POSITIVE_TC_IDX},
95 {utc_sync_agent_framework_sync_agent_clean_event_handler_p, POSITIVE_TC_IDX},
99 static void startup(void)
102 sync_agent_init_error_e init_error = sync_agent_init(TEST_FW_CONFIG_FILE);
103 if (init_error != SYNC_AGENT_INIT_SUCCESS) {
104 dts_message(API_NAME_SYNC_START_UP, "sync_agent_init : %d", init_error);
105 dts_fail(API_NAME_SYNC_START_UP);
108 sync_agent_event_error_e event_err = sync_agent_set_event_callback(EVENT_NUM, _event_cb);
109 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
110 dts_message(API_NAME_SYNC_START_UP, "sync_agent_set_event_callback : %d", event_err);
111 dts_fail(API_NAME_SYNC_START_UP);
114 event_err = sync_agent_set_noti_callback(NOTI_NUM, _noti_cb, NULL);
115 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
116 dts_message(API_NAME_SYNC_START_UP, "sync_agent_set_noti_callback : %d", event_err);
117 dts_fail(API_NAME_SYNC_START_UP);
120 /* todo : register event callback x */
122 /* create noti listener x */
125 static void cleanup(void)
128 sync_agent_event_error_e event_err = sync_agent_clean_event_handler();
131 static void utc_sync_agent_framework_sync_agent_append_event_data_param_p(void)
133 char *api_name = API_NAME_SYNC_AGENT_APPEND_EVENT_DATA_PARAM;
134 sync_agent_event_data_s *request_event = NULL;
135 int event_int_data = 1;
137 request_event = sync_agent_create_event(EVENT_NUM);
138 if (request_event != NULL) {
139 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
140 sync_agent_free_event_data(request_event);
143 dts_message(api_name, "sync_agent_create_event");
148 static void utc_sync_agent_framework_sync_agent_get_event_data_param_p(void)
150 char *api_name = API_NAME_SYNC_AGENT_GET_EVENT_DATA_PARAM;
151 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
152 sync_agent_event_data_s *request_event = NULL;
153 sync_agent_event_data_s *response_event = NULL;
154 int event_int_data = 1;
155 char *event_char_data = strdup("event data");
158 request_event = sync_agent_create_event(EVENT_NUM);
159 if (request_event == NULL) {
160 dts_message(api_name, "sync_agent_create_event");
164 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
165 sync_agent_append_event_data_param(request_event, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, event_char_data);
167 response_event = sync_agent_send_event(request_event, &event_err);
169 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
170 dts_message(api_name, "sync_agent_send_event : %d", event_err);
171 sync_agent_free_event_data(response_event);
172 sync_agent_free_event_data(request_event);
176 if (response_event != NULL) {
177 sync_agent_get_event_data_param(response_event, &result_int);
178 dts_message(api_name, "sync_agent_get_event_data_param (event result) : %d", result_int);
179 sync_agent_free_event_data(request_event);
180 sync_agent_free_event_data(response_event);
183 sync_agent_free_event_data(request_event);
184 dts_message(api_name, "sync_agent_send_event : %d", event_err);
189 static void utc_sync_agent_framework_sync_agent_run_event_handler_p(void)
191 char *api_name = API_NAME_SYNC_AGENT_RUN_EVENT_HANDLER;
192 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
193 unsigned long int thread_id = 0;
195 event_err = sync_agent_run_event_handler(&thread_id);
196 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
197 pthread_cancel(thread_id);
200 dts_message(api_name, "sync_agent_run_event_handler : %d", event_err);
205 static void utc_sync_agent_framework_sync_agent_set_event_callback_p(void)
207 char *api_name = API_NAME_SYNC_AGENT_SET_EVENT_CALLBACK;
208 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
210 event_err = sync_agent_set_event_callback(EVENT_NUM, _event_cb);
211 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
214 dts_message(api_name, "sync_agent_set_event_callback : %d", event_err);
219 static void utc_sync_agent_framework_sync_agent_set_event_callback_n(void)
221 char *api_name = API_NAME_SYNC_AGENT_SET_EVENT_CALLBACK;
222 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
224 int event_num = 3; /* not defined event */
226 event_err = sync_agent_set_event_callback(event_num, _event_cb);
227 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
228 dts_message(api_name, "sync_agent_set_event_callback : %d", event_err);
235 static void utc_sync_agent_framework_sync_agent_create_noti_p(void)
237 char *api_name = API_NAME_SYNC_AGENT_CREATE_NOTI;
238 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
239 sync_agent_event_data_s *noti = NULL;
241 noti = sync_agent_create_noti(NOTI_NUM);
243 sync_agent_free_noti(noti);
246 dts_message(api_name, "sync_agent_create_noti : %d", event_err);
251 static void utc_sync_agent_framework_sync_agent_send_noti_p(void)
253 char *api_name = API_NAME_SYNC_AGENT_SEND_NOTI;
254 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
255 sync_agent_event_data_s *noti = NULL;
256 sync_agent_event_data_s *response = NULL;
257 int noti_int_data = 0;
258 char *noti_char_data = strdup("noti data");
259 void *user_data = NULL;
261 event_err = sync_agent_run_noti_listener(NOTI_KEY);
262 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
263 dts_message(api_name, "sync_agent_run_noti_listener : %d", event_err);
267 sync_agent_run_main_loop(1);
269 noti = sync_agent_create_noti(NOTI_NUM);
271 dts_message(api_name, "sync_agent_create_noti : %d", event_err);
275 sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, ¬i_int_data);
276 sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, noti_char_data);
278 sync_agent_send_noti(NOTI_KEY, noti, _cancel_cb, user_data, &event_err);
280 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
281 sync_agent_free_noti(noti);
284 sync_agent_free_noti(noti);
285 dts_message(api_name, "sync_agent_send_noti : %d", event_err);
290 static void utc_sync_agent_framework_sync_agent_send_noti_n(void)
292 char *api_name = API_NAME_SYNC_AGENT_SEND_NOTI;
293 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
294 sync_agent_event_data_s *noti = NULL;
295 sync_agent_event_data_s *response = NULL;
296 int noti_int_data = 0;
297 char *noti_char_data = strdup("noti data");
298 void *user_data = NULL;
300 event_err = sync_agent_run_noti_listener(NULL);
301 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
302 dts_message(api_name, "sync_agent_run_noti_listener : %d", event_err);
306 sync_agent_run_main_loop(1);
308 noti = sync_agent_create_noti(NOTI_NUM);
310 dts_message(api_name, "sync_agent_create_noti : %d", event_err);
314 sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, ¬i_int_data);
315 sync_agent_append_event_data_param(noti, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, noti_char_data);
317 sync_agent_send_noti(NULL, noti, _cancel_cb, user_data, &event_err);
319 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
320 sync_agent_free_noti(noti);
321 dts_message(api_name, "sync_agent_send_noti : %d", event_err);
324 sync_agent_free_noti(noti);
329 static void utc_sync_agent_framework_sync_agent_create_event_p(void)
331 char *api_name = API_NAME_SYNC_AGENT_CREATE_EVENT;
332 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
333 sync_agent_event_data_s *event = NULL;
335 event = sync_agent_create_event(EVENT_NUM);
337 sync_agent_free_noti(event);
340 dts_message(api_name, "sync_agent_create_noti : %d", event_err);
345 static void utc_sync_agent_framework_sync_agent_send_event_p(void)
347 char *api_name = API_NAME_SYNC_AGENT_SEND_EVENT;
348 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
349 sync_agent_event_data_s *request = NULL;
350 sync_agent_event_data_s *response = NULL;
351 int event_int_data = 0;
352 char *event_char_data = strdup("event data");
353 int event_result = 0;
355 request = sync_agent_create_event(EVENT_NUM);
356 if (request == NULL) {
357 dts_message(api_name, "sync_agent_create_event : %d", event_err);
361 sync_agent_append_event_data_param(request, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
362 sync_agent_append_event_data_param(request, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, event_char_data);
364 response = sync_agent_send_event(request, &event_err);
366 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
367 dts_message(api_name, "sync_agent_send_event : %d", event_err);
368 sync_agent_free_event(request);
369 sync_agent_free_event(response);
373 if (response != NULL) {
374 sync_agent_get_event_data_param(response, &event_result);
375 dts_message(api_name, "sync_agent_get_event_data_param (event result) : %d", event_result);
376 sync_agent_free_event(request);
377 sync_agent_free_event(response);
380 dts_message(api_name, "sync_agent_send_event : %d", event_err);
381 sync_agent_free_event(request);
386 static void utc_sync_agent_framework_sync_agent_send_event_n(void)
388 char *api_name = API_NAME_SYNC_AGENT_SEND_EVENT;
389 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
390 sync_agent_event_data_s *request = NULL;
391 sync_agent_event_data_s *response = NULL;
392 int event_int_data = 0;
393 char *event_char_data = strdup("event data");
394 int event_result = 0;
396 request = sync_agent_create_event(EVENT_NUM);
397 if (request == NULL) {
398 dts_message(api_name, "sync_agent_create_event : %d", event_err);
402 sync_agent_append_event_data_param(request, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_int_data);
403 sync_agent_append_event_data_param(request, SYNC_AGENT_EVENT_PARAM_TYPE_STRING, event_char_data);
405 response = sync_agent_send_event(NULL, &event_err);
407 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
408 dts_message(api_name, "sync_agent_send_event : %d", event_err);
409 sync_agent_free_event(request);
410 sync_agent_free_event(response);
414 if (response != NULL) {
415 dts_message(api_name, "sync_agent_send_event : %d", event_err);
416 sync_agent_free_event(request);
419 sync_agent_get_event_data_param(response, &event_result);
420 dts_message(api_name, "sync_agent_get_event_data_param (event result) : %d", event_result);
421 sync_agent_free_event(request);
422 sync_agent_free_event(response);
427 static void utc_sync_agent_framework_sync_agent_run_noti_listener_p(void)
429 char *api_name = API_NAME_SYNC_AGENT_RUN_NOTI_LISTENER;
430 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
432 event_err = sync_agent_run_noti_listener(NOTI_KEY);
433 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
436 dts_message(api_name, "sync_agent_run_noti_listener : %d", event_err);
441 static void utc_sync_agent_framework_sync_agent_run_noti_listener_n(void)
443 char *api_name = API_NAME_SYNC_AGENT_RUN_NOTI_LISTENER;
444 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
446 event_err = sync_agent_run_noti_listener(NULL);
447 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
448 dts_message(api_name, "sync_agent_run_noti_listener : %d", event_err);
455 static void utc_sync_agent_framework_sync_agent_stop_noti_listener_p(void)
457 char *api_name = API_NAME_SYNC_AGENT_STOP_NOTI_LISTENER;
458 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
460 event_err = sync_agent_stop_noti_listener();
461 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
464 dts_message(api_name, "sync_agent_stop_noti_listener : %d", event_err);
469 static void utc_sync_agent_framework_sync_agent_set_noti_callback_p(void)
471 char *api_name = API_NAME_SYNC_AGENT_SET_NOTI_CALLBACK;
472 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
474 event_err = sync_agent_set_noti_callback(NOTI_NUM, _noti_cb, NULL);
475 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
478 dts_message(api_name, "sync_agent_set_noti_callback : %d", event_err);
483 static void utc_sync_agent_framework_sync_agent_clean_event_handler_p(void)
485 char *api_name = API_NAME_SYNC_AGENT_CLEAN_EVENT_HANDLER;
486 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
488 event_err = sync_agent_clean_event_handler();
489 if (event_err == SYNC_AGENT_EVENT_SUCCESS) {
492 dts_message(api_name, "sync_agent_clean_event_handler : %d", event_err);
497 static int _event_cb(sync_agent_event_data_s * request, sync_agent_event_data_s * response)
499 g_print("start event callback \n");
501 char *api_name = API_NAME_EVENT_CB;
502 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
503 int event_int_data = 0;
504 char *event_char_data = NULL;
505 int event_result = 1;
507 sync_agent_get_event_data_param(request, &event_int_data);
508 sync_agent_get_event_data_param(request, &event_char_data);
510 g_print("%s : received event data\n", __func__);
511 dts_message(api_name, "sync_agent_get_event_data_param (int) : %d", event_int_data);
512 dts_message(api_name, "sync_agent_get_event_data_param (char) : %s", event_char_data);
514 sync_agent_append_event_data_param(response, SYNC_AGENT_EVENT_PARAM_TYPE_INTEGER, &event_result);
516 g_print("%s : event response\n", __func__);
517 dts_message(api_name, "sync_agent_append_event_data_param (int) : %d", event_result);
522 static sync_agent_event_ipc_cancel_e _cancel_cb(void *user_data)
524 g_print("start cancel callback \n");
526 char *api_name = API_NAME_CANCEL_CB;
528 sync_agent_ec_boolean cancel_flag = sync_agent_check_cancel_flag();
529 sync_agent_event_ipc_cancel_e result_cancel;
531 if (cancel_flag == 0)
532 result_cancel = SYNC_AGENT_EVENT_IPC_CANCEL_UN_NEED_CANCEL;
534 result_cancel = SYNC_AGENT_EVENT_IPC_CANCEL_NEED_CANCEL;
536 dts_message(api_name, "cancel result : %d", result_cancel);
538 return result_cancel;
541 static int _noti_cb(sync_agent_event_data_s * noti, void *user_data)
543 g_print("start noti callback \n");
545 char *api_name = API_NAME_NOTI_CB;
546 sync_agent_event_error_e event_err = SYNC_AGENT_EVENT_SUCCESS;
547 int noti_int_data = 0;
548 char *noti_char_data = NULL;
550 sync_agent_get_event_data_param(noti, ¬i_int_data);
551 sync_agent_get_event_data_param(noti, ¬i_char_data);
553 g_print("%s : received event data\n", __func__);
554 dts_message(api_name, "sync_agent_get_event_data_param (int) : %d", noti_int_data);
555 dts_message(api_name, "sync_agent_get_event_data_param (char) : %s", noti_char_data);
557 event_err = sync_agent_stop_noti_listener();
558 if (event_err != SYNC_AGENT_EVENT_SUCCESS) {
559 dts_message(api_name, "sync_agent_run_noti_listener : %d", event_err);
560 // dts_fail(api_name);
563 sync_agent_stop_main_loop(1);