From 4072ae1966345b56b34771bc970e8b74db1f8df0 Mon Sep 17 00:00:00 2001 From: Omar Kallel Date: Sat, 8 Oct 2022 08:51:53 +0100 Subject: [PATCH] Events issues fixes --- src/backupSession.c | 45 ++-------- src/backupSession.h | 6 +- src/cwmp_event.c | 62 ++++++++++++++ src/cwmp_event.h | 3 + src/event.c | 90 +++++++++----------- src/event.h | 6 +- src/rpc.c | 1 + src/session.c | 6 +- src/ubus_utils.c | 2 +- test/cmocka/icwmp_backup_session_unit_test.c | 80 +++++------------ test/script/test_seq.txt | 5 +- 11 files changed, 140 insertions(+), 166 deletions(-) diff --git a/src/backupSession.c b/src/backupSession.c index 0c3e0cc..e0c3ff9 100644 --- a/src/backupSession.c +++ b/src/backupSession.c @@ -237,22 +237,20 @@ mxml_node_t *bkp_session_node_found(mxml_node_t *tree, char *name, struct search return b; } -mxml_node_t *bkp_session_insert_event(int index, char *command_key, int id, char *status) +mxml_node_t *bkp_session_insert_event(int index, char *command_key, int id) { struct search_keywords keys[1]; - char parent_name[32]; char event_id[32]; char event_idx[32]; mxml_node_t *b; - snprintf(parent_name, sizeof(parent_name), "%s_event", status ? status : ""); snprintf(event_id, sizeof(event_id), "%d", id); snprintf(event_idx, sizeof(event_idx), "%d", index); keys[0].name = "id"; keys[0].value = event_id; - b = bkp_session_node_found(bkp_tree, parent_name, keys, 1); + b = bkp_session_node_found(bkp_tree, "cwmp_event", keys, 1); if (!b) { - b = bkp_session_insert(bkp_tree, parent_name, NULL); + b = bkp_session_insert(bkp_tree, "cwmp_event", NULL); bkp_session_insert(b, "index", event_idx); bkp_session_insert(b, "id", event_id); bkp_session_insert(b, "command_key", command_key ? command_key : ""); @@ -260,18 +258,16 @@ mxml_node_t *bkp_session_insert_event(int index, char *command_key, int id, char return b; } -void bkp_session_delete_event(int id, char *status) +void bkp_session_delete_event(int id) { struct search_keywords keys[1]; - char parent_name[32]; char event_id[32]; mxml_node_t *b; - snprintf(parent_name, sizeof(parent_name), "%s_event", status ? status : ""); snprintf(event_id, sizeof(event_id), "%d", id); keys[0].name = "id"; keys[0].value = event_id; - b = bkp_session_node_found(bkp_tree, parent_name, keys, 1); + b = bkp_session_node_found(bkp_tree, "cwmp_event", keys, 1); if (b) mxmlDelete(b); } @@ -313,34 +309,6 @@ void bkp_session_simple_insert_in_parent(char *parent, char *child, char *value) bkp_session_insert(n, child, value); } -void bkp_session_move_inform_to_inform_send() -{ - mxml_node_t *b = bkp_tree; - - while (b) { - mxml_node_t *p = mxmlGetParent(b); - const char *parent_name = p ? mxmlGetElement(p) : NULL; - if (mxmlGetType(b) == MXML_ELEMENT && !strcmp(mxmlGetElement(b), "queue_event") && mxmlGetType(p) == MXML_ELEMENT && parent_name && !strcmp(parent_name, "cwmp")) - mxmlSetElement(b, "send_event"); - - b = mxmlWalkNext(b, bkp_tree, MXML_DESCEND); - } -} - -void bkp_session_move_inform_to_inform_queue() -{ - mxml_node_t *b = bkp_tree; - - while (b) { - mxml_node_t *p = mxmlGetParent(b); - const char *parent_name = p ? mxmlGetElement(p) : NULL; - if (mxmlGetType(b) == MXML_ELEMENT && !strcmp(mxmlGetElement(b), "send_event") && mxmlGetType(p) == MXML_ELEMENT && parent_name && !strcmp(parent_name, "cwmp")) - mxmlSetElement(b, "queue_event"); - - b = mxmlWalkNext(b, bkp_tree, MXML_DESCEND); - } -} - void bkp_session_insert_schedule_inform(time_t time, char *command_key) { char schedule_time[128]; @@ -1100,7 +1068,6 @@ int bkp_session_check_file() bkp_session_create_file(); return -1; } - bkp_session_move_inform_to_inform_queue(); bkp_session_save(); return 0; } @@ -1148,7 +1115,7 @@ int cwmp_load_saved_session(char **ret, enum backup_loading load) } } if (load == ALL) { - if (ntype == MXML_ELEMENT && strcmp(elem_name, "queue_event") == 0) { + if (ntype == MXML_ELEMENT && strcmp(elem_name, "cwmp_event") == 0) { load_queue_event(b); } else if (ntype == MXML_ELEMENT && strcmp(elem_name, "download") == 0) { load_download(b); diff --git a/src/backupSession.h b/src/backupSession.h index 37692f4..8526046 100644 --- a/src/backupSession.h +++ b/src/backupSession.h @@ -40,13 +40,11 @@ struct search_keywords { int cwmp_init_backup_session(char **ret, enum backup_loading load); void bkp_session_save(); int cwmp_load_saved_session(char **acsurl, enum backup_loading load); -mxml_node_t *bkp_session_insert_event(int index, char *command_key, int id, char *status); -void bkp_session_delete_event(int id, char *status); +mxml_node_t *bkp_session_insert_event(int index, char *command_key, int id); +void bkp_session_delete_event(int id); void bkp_session_simple_insert_in_parent(char *parent, char *child, char *value); void bkp_session_insert_parameter(mxml_node_t *b, char *name); void bkp_session_simple_insert(char *parent, char *child, char *value); -void bkp_session_move_inform_to_inform_send(); -void bkp_session_move_inform_to_inform_queue(); void bkp_session_insert_schedule_inform(time_t schedule_time, char *command_key); void bkp_session_delete_schedule_inform(time_t schedule_time, char *command_key); void bkp_session_insert_download(struct download *pdownload); diff --git a/src/cwmp_event.c b/src/cwmp_event.c index 75a24a8..7ed4116 100644 --- a/src/cwmp_event.c +++ b/src/cwmp_event.c @@ -11,6 +11,8 @@ #include "cwmp_event.h" #include "common.h" #include "session.h" +#include "backupSession.h" +#include "log.h" pthread_mutex_t add_event_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -33,6 +35,7 @@ static struct event_container *__cwmp_add_event_container(int event_code, char * list_add_tail(&(event_container->list), &(cwmp_main->session->events)); event_container->code = event_code; event_container->command_key = command_key ? strdup(command_key) : strdup(""); + event_container->next_session = true; if ((cwmp_main->event_id < 0) || (cwmp_main->event_id >= MAX_INT_ID)) { cwmp_main->event_id = 0; } @@ -48,3 +51,62 @@ struct event_container *cwmp_add_event_container(int event_code, char *command_k pthread_mutex_unlock(&add_event_mutex); return event; } + +void move_next_session_events_to_actual_session() +{ + struct event_container *event_container; + + struct list_head *event_container_list = &(cwmp_main->session->events); + list_for_each_entry (event_container, event_container_list, list) { + event_container->next_session = false; + } +} + +int cwmp_remove_all_session_events() +{ + struct list_head *events_ptr = cwmp_main->session->events.next; + while (events_ptr != &cwmp_main->session->events) { + struct event_container *event_container; + event_container = list_entry(events_ptr, struct event_container, list); + if (event_container->code == EVENT_IDX_14HEARTBEAT || event_container->next_session) { + events_ptr = events_ptr->next; + continue; + } + bkp_session_delete_event(event_container->id); + free(event_container->command_key); + cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); + list_del(&(event_container->list)); + free(event_container); + events_ptr = cwmp_main->session->events.next; + } + bkp_session_save(); + return CWMP_OK; +} + +int remove_single_event(int event_code) +{ + while (cwmp_main->session->events.next != &cwmp_main->session->events) { + struct event_container *event_container; + event_container = list_entry(cwmp_main->session->events.next, struct event_container, list); + if (event_container->next_session) + continue; + if (event_container->code == event_code) { + bkp_session_delete_event(event_container->id); + if (event_container->command_key) + free(event_container->command_key); + cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); + list_del(&(event_container->list)); + free(event_container); + bkp_session_save(); + break; + } + if (event_container) { + if (event_container->command_key) + free(event_container->command_key); + cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); + list_del(&(event_container->list)); + free(event_container); + } + } + return CWMP_OK; +} diff --git a/src/cwmp_event.h b/src/cwmp_event.h index b4cc8d8..664fe62 100644 --- a/src/cwmp_event.h +++ b/src/cwmp_event.h @@ -2,4 +2,7 @@ #define CWMP_EVENT_H #include "event.h" struct event_container *cwmp_add_event_container(int event_code, char *command_key); +void move_next_session_events_to_actual_session(); +int cwmp_remove_all_session_events(); +int remove_single_event(int event_code); #endif diff --git a/src/event.c b/src/event.c index 67d5dee..26b0148 100644 --- a/src/event.c +++ b/src/event.c @@ -36,13 +36,14 @@ const struct EVENT_CONST_STRUCT EVENT_CONST[] = {[EVENT_IDX_0BOOTSTRAP] = { "0 B [EVENT_IDX_10AUTONOMOUS_TRANSFER_COMPLETE] = { "10 AUTONOMOUS TRANSFER COMPLETE", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_11DU_STATE_CHANGE_COMPLETE] = { "11 DU STATE CHANGE COMPLETE", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_12AUTONOMOUS_DU_STATE_CHANGE_COMPLETE] = { "12 AUTONOMOUS DU STATE CHANGE COMPLETE", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, + [EVENT_IDX_13WAKEUP] = { "13 WAKEUP", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, + [EVENT_IDX_14HEARTBEAT] = { "14 HEARTBEAT", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_M_Reboot] = { "M Reboot", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_M_ScheduleInform] = { "M ScheduleInform", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_M_Download] = { "M Download", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_M_Schedule_Download] = { "M ScheduleDownload", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, [EVENT_IDX_M_Upload] = { "M Upload", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, - [EVENT_IDX_M_ChangeDUState] = { "M ChangeDUState", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT }, - [EVENT_IDX_14HEARTBEAT] = { "14 HEARTBEAT", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT } }; + [EVENT_IDX_M_ChangeDUState] = { "M ChangeDUState", EVENT_RETRY_AFTER_TRANSMIT_FAIL | EVENT_RETRY_AFTER_REBOOT } }; void cwmp_save_event_container(struct event_container *event_container) //to be moved to backupsession { @@ -54,7 +55,7 @@ void cwmp_save_event_container(struct event_container *event_container) //to be struct list_head *ilist; mxml_node_t *b; - b = bkp_session_insert_event(event_container->code, event_container->command_key, event_container->id, "queue"); + b = bkp_session_insert_event(event_container->code, event_container->command_key, event_container->id); list_for_each (ilist, &(event_container->head_dm_parameter)) { struct cwmp_dm_parameter *dm_parameter; @@ -81,49 +82,6 @@ int cwmp_root_cause_event_boot() return CWMP_OK; } -int event_remove_all_event_container(int rem_from) -{ - while (cwmp_main->session->events.next != &cwmp_main->session->events) { - struct event_container *event_container; - event_container = list_entry(cwmp_main->session->events.next, struct event_container, list); - if (event_container->code == EVENT_IDX_14HEARTBEAT) - continue; - bkp_session_delete_event(event_container->id, rem_from ? "send" : "queue"); - free(event_container->command_key); - cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); - list_del(&(event_container->list)); - free(event_container); - } - bkp_session_save(); - return CWMP_OK; -} - -int remove_single_event(int event_code) -{ - while (cwmp_main->session->events.next != &cwmp_main->session->events) { - struct event_container *event_container; - event_container = list_entry(cwmp_main->session->events.next, struct event_container, list); - if (event_container->code == event_code) { - bkp_session_delete_event(event_container->id, "send"); - if (event_container->command_key) - free(event_container->command_key); - cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); - list_del(&(event_container->list)); - free(event_container); - bkp_session_save(); - break; - } - if (event_container) { - if (event_container->command_key) - free(event_container->command_key); - cwmp_free_all_dm_parameter_list(&(event_container->head_dm_parameter)); - list_del(&(event_container->list)); - free(event_container); - } - } - return CWMP_OK; -} - int event_remove_noretry_event_container() { struct list_head *ilist, *q; @@ -434,26 +392,54 @@ int cwmp_root_cause_events() return CWMP_OK; } +bool event_code_is_valid(const char *code) +{ + int i; + if (code == NULL || strlen(code) == 0) + return true; + for (i=0; i < __EVENT_IDX_MAX; i++) { + if (EVENT_CONST[i].CODE && strcmp(code, EVENT_CONST[i].CODE) == 0) + return true; + } + return false; +} + int cwmp_get_int_event_code(const char *code) { - if (code && code[0] == '1') + + if (!event_code_is_valid(code)) + return -1; + + if (code && strncmp(code, "1 ", 2) == 0) return EVENT_IDX_1BOOT; - else if (code && code[0] == '2') + else if (code && strncmp(code, "2 ", 2) == 0) return EVENT_IDX_2PERIODIC; - else if (code && code[0] == '3') + else if (code && strncmp(code, "3 ", 2) == 0) return EVENT_IDX_3SCHEDULED; - else if (code && code[0] == '4') + else if (code && strncmp(code, "4 ", 2) == 0) return EVENT_IDX_4VALUE_CHANGE; - else if (code && code[0] == '6') + else if (code && strncmp(code, "6 ", 2) == 0) return EVENT_IDX_6CONNECTION_REQUEST; - else if (code && code[0] == '8') + else if (code && strncmp(code, "8 ", 2) == 0) return EVENT_IDX_8DIAGNOSTICS_COMPLETE; + + else if (code && strncmp(code, "9 ", 2) == 0) + return EVENT_IDX_9REQUEST_DOWNLOAD; + + + else if (code && strncmp(code, "13", 2) == 0) + return EVENT_IDX_13WAKEUP; + + + else if (code && strncmp(code, "14", 2) == 0) + return EVENT_IDX_14HEARTBEAT; + else return EVENT_IDX_6CONNECTION_REQUEST; } diff --git a/src/event.h b/src/event.h index 7672705..f6f53f0 100644 --- a/src/event.h +++ b/src/event.h @@ -18,6 +18,7 @@ typedef struct event_container { struct list_head list; int code; /* required element of type xsd:string */ + bool next_session; char *command_key; struct list_head head_dm_parameter; int id; @@ -51,13 +52,14 @@ enum event_idx_enum EVENT_IDX_10AUTONOMOUS_TRANSFER_COMPLETE, EVENT_IDX_11DU_STATE_CHANGE_COMPLETE, EVENT_IDX_12AUTONOMOUS_DU_STATE_CHANGE_COMPLETE, + EVENT_IDX_13WAKEUP, + EVENT_IDX_14HEARTBEAT, EVENT_IDX_M_Reboot, EVENT_IDX_M_ScheduleInform, EVENT_IDX_M_Download, EVENT_IDX_M_Schedule_Download, EVENT_IDX_M_Upload, EVENT_IDX_M_ChangeDUState, - EVENT_IDX_14HEARTBEAT, TransferClt_Evt, Schedule_Inform_Evt, CDU_Evt, @@ -66,8 +68,6 @@ enum event_idx_enum extern const struct EVENT_CONST_STRUCT EVENT_CONST[__EVENT_IDX_MAX]; -int event_remove_all_event_container(int rem_from); -int remove_single_event(int event_code); int event_remove_noretry_event_container(); void cwmp_save_event_container(struct event_container *event_container); void connection_request_ip_value_change( int version); diff --git a/src/rpc.c b/src/rpc.c index 86f0fda..99976b1 100755 --- a/src/rpc.c +++ b/src/rpc.c @@ -301,6 +301,7 @@ static void load_inform_xml_schema(mxml_node_t **tree) MXML_DELETE(xml); return; } + move_next_session_events_to_actual_session(); cwmp_free_all_xml_data_list(&xml_events_list); mxml_node_t *param_list = mxmlNewElement(inform, "ParameterList"); if (param_list == NULL) { diff --git a/src/session.c b/src/session.c index 2a85146..1e022b9 100644 --- a/src/session.c +++ b/src/session.c @@ -346,8 +346,7 @@ void start_cwmp_session() CWMP_LOG(INFO, "End session"); if (cwmp_stop) { - event_remove_all_event_container(RPC_SEND); - event_remove_all_event_container(RPC_QUEUE); + cwmp_remove_all_session_events(); run_session_end_func(); cwmp_session_exit(); rpc_exit(); @@ -368,10 +367,9 @@ void start_cwmp_session() } } else { if (!cwmp_main->session->session_status.is_heartbeat) - event_remove_all_event_container(RPC_SEND); + cwmp_remove_all_session_events(); else remove_single_event(EVENT_IDX_14HEARTBEAT); - //event_remove_all_event_container(RPC_QUEUE); cwmp_main->retry_count_session = 0; set_cwmp_session_status(SESSION_SUCCESS, 0); rpc_exit(); diff --git a/src/ubus_utils.c b/src/ubus_utils.c index 0ecf8f5..04bea08 100644 --- a/src/ubus_utils.c +++ b/src/ubus_utils.c @@ -268,7 +268,7 @@ static int icwmp_inform_get_rpc_method(struct blob_buf *bb) static int icwmp_inform_event(struct blob_buf *bb, char *event) { int event_code = cwmp_get_int_event_code(event); - if (event_code != EVENT_IDX_14HEARTBEAT) { + if (event_code != -1) { if (cwmp_main->session->session_status.last_status == SESSION_RUNNING) { blobmsg_add_u32(bb, "status", -1); blobmsg_add_string(bb, "info", "Session already running, event will be sent at the end of the session"); diff --git a/test/cmocka/icwmp_backup_session_unit_test.c b/test/cmocka/icwmp_backup_session_unit_test.c index a3c57e1..02e52ae 100644 --- a/test/cmocka/icwmp_backup_session_unit_test.c +++ b/test/cmocka/icwmp_backup_session_unit_test.c @@ -61,61 +61,61 @@ static void cwmp_backup_session_unit_test(void **state) /* * Insert Event */ - mxml_node_t *bkp_event1 = NULL, *bkp_event2 = NULL, *queue_tree1 = NULL, *queue_tree2 = NULL; + mxml_node_t *bkp_event1 = NULL, *bkp_event2 = NULL, *event_tree1 = NULL, *event_tree2; // Case of one event - bkp_event1 = bkp_session_insert_event(EVENT_IDX_4VALUE_CHANGE, "4 VALUE CHANGE", 0, "queue"); + bkp_event1 = bkp_session_insert_event(EVENT_IDX_4VALUE_CHANGE, "4 VALUE CHANGE", 0); bkp_session_save(); pFile = fopen(CWMP_BKP_FILE, "r"); backup_tree = mxmlLoadFile(NULL, pFile, MXML_OPAQUE_CALLBACK); fclose(pFile); assert_non_null(bkp_event1); - queue_tree1 = mxmlFindElement(backup_tree, backup_tree, "queue_event", NULL, NULL, MXML_DESCEND); - assert_non_null(queue_tree1); - n = mxmlFindElement(queue_tree1, queue_tree1, "index", NULL, NULL, MXML_DESCEND); + event_tree1 = mxmlFindElement(backup_tree, backup_tree, "cwmp_event", NULL, NULL, MXML_DESCEND); + assert_non_null(event_tree1); + n = mxmlFindElement(event_tree1, event_tree1, "index", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), EVENT_IDX_4VALUE_CHANGE); - n = mxmlFindElement(queue_tree1, queue_tree1, "id", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree1, event_tree1, "id", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), 0); - n = mxmlFindElement(queue_tree1, queue_tree1, "command_key", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree1, event_tree1, "command_key", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_string_equal(mxmlGetOpaque(mxmlGetFirstChild(n)), "4 VALUE CHANGE"); MXML_DELETE(bkp_event1); bkp_session_save(); MXML_DELETE(backup_tree); - //case of two events with different ids under the same queue - bkp_event1 = bkp_session_insert_event(EVENT_IDX_1BOOT, "1 BOOT", 0, "queue"); - bkp_event2 = bkp_session_insert_event(EVENT_IDX_4VALUE_CHANGE, "4 VALUE CHANGE", 1, "queue"); + //case of two events with different ids + bkp_event1 = bkp_session_insert_event(EVENT_IDX_1BOOT, "1 BOOT", 0); + bkp_event2 = bkp_session_insert_event(EVENT_IDX_4VALUE_CHANGE, "4 VALUE CHANGE", 1); bkp_session_save(); pFile = fopen(CWMP_BKP_FILE, "r"); backup_tree = mxmlLoadFile(NULL, pFile, MXML_OPAQUE_CALLBACK); fclose(pFile); assert_non_null(bkp_event1); assert_non_null(bkp_event2); - queue_tree1 = mxmlFindElement(backup_tree, backup_tree, "queue_event", NULL, NULL, MXML_DESCEND); - queue_tree2 = mxmlFindElement(queue_tree1, backup_tree, "queue_event", NULL, NULL, MXML_DESCEND); + event_tree1 = mxmlFindElement(backup_tree, backup_tree, "cwmp_event", NULL, NULL, MXML_DESCEND); + event_tree2 = mxmlFindElement(event_tree1, backup_tree, "cwmp_event", NULL, NULL, MXML_DESCEND); - assert_non_null(queue_tree1); - n = mxmlFindElement(queue_tree1, queue_tree1, "index", NULL, NULL, MXML_DESCEND); + assert_non_null(event_tree1); + n = mxmlFindElement(event_tree1, event_tree1, "index", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), EVENT_IDX_1BOOT); - n = mxmlFindElement(queue_tree1, queue_tree1, "id", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree1, event_tree1, "id", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), 0); - n = mxmlFindElement(queue_tree1, queue_tree1, "command_key", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree1, event_tree1, "command_key", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_string_equal(mxmlGetOpaque(mxmlGetFirstChild(n)), "1 BOOT"); - assert_non_null(queue_tree2); - n = mxmlFindElement(queue_tree2, queue_tree2, "index", NULL, NULL, MXML_DESCEND); + assert_non_null(event_tree2); + n = mxmlFindElement(event_tree2, event_tree2, "index", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), EVENT_IDX_4VALUE_CHANGE); - n = mxmlFindElement(queue_tree2, queue_tree2, "id", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree2, event_tree2, "id", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), 1); - n = mxmlFindElement(queue_tree2, queue_tree2, "command_key", NULL, NULL, MXML_DESCEND); + n = mxmlFindElement(event_tree2, event_tree2, "command_key", NULL, NULL, MXML_DESCEND); assert_non_null(n); assert_string_equal(mxmlGetOpaque(mxmlGetFirstChild(n)), "4 VALUE CHANGE"); @@ -126,46 +126,6 @@ static void cwmp_backup_session_unit_test(void **state) bkp_event1 = NULL; bkp_event2 = NULL; - //case of two events with same id under different queues - bkp_event1 = bkp_session_insert_event(EVENT_IDX_1BOOT, "1 BOOT", 0, "queue1"); - bkp_event2 = bkp_session_insert_event(EVENT_IDX_4VALUE_CHANGE, "4 VALUE CHANGE", 0, "queue2"); - bkp_session_save(); - pFile = fopen(CWMP_BKP_FILE, "r"); - backup_tree = mxmlLoadFile(NULL, pFile, MXML_OPAQUE_CALLBACK); - fclose(pFile); - assert_non_null(bkp_event1); - assert_non_null(bkp_event2); - queue_tree1 = mxmlFindElement(backup_tree, backup_tree, "queue1_event", NULL, NULL, MXML_DESCEND); - queue_tree2 = mxmlFindElement(queue_tree1, backup_tree, "queue2_event", NULL, NULL, MXML_DESCEND); - - assert_non_null(queue_tree1); - n = mxmlFindElement(queue_tree1, queue_tree1, "index", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), EVENT_IDX_1BOOT); - n = mxmlFindElement(queue_tree1, queue_tree1, "id", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), 0); - n = mxmlFindElement(queue_tree1, queue_tree1, "command_key", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_string_equal(mxmlGetOpaque(mxmlGetFirstChild(n)), "1 BOOT"); - - assert_non_null(queue_tree2); - n = mxmlFindElement(queue_tree2, queue_tree2, "index", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), EVENT_IDX_4VALUE_CHANGE); - n = mxmlFindElement(queue_tree2, queue_tree2, "id", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_int_equal(atoi(mxmlGetOpaque(mxmlGetFirstChild(n))), 0); - n = mxmlFindElement(queue_tree2, queue_tree2, "command_key", NULL, NULL, MXML_DESCEND); - assert_non_null(n); - assert_string_equal(mxmlGetOpaque(mxmlGetFirstChild(n)), "4 VALUE CHANGE"); - - MXML_DELETE(bkp_event1); - MXML_DELETE(bkp_event2); - bkp_session_save(); - MXML_DELETE(backup_tree); - - /* * Insert Download */ diff --git a/test/script/test_seq.txt b/test/script/test_seq.txt index 9bf01ec..f2b1be7 100644 --- a/test/script/test_seq.txt +++ b/test/script/test_seq.txt @@ -1,7 +1,6 @@ -verify_download_method.sh verify_add_method.sh verify_delete_method.sh verify_get_method.sh verify_set_method.sh -verify_cmd_line.sh - +verify_download_method.sh +verify_cmd_line.sh \ No newline at end of file