int traceFuncTest() { UINT l_rc = 0; UINT l_max_trace_entries = TRACE_BUFFER_SIZE / MIN_TRACE_ENTRY_SIZE; UINT l_entry_count = 0; UINT l_buffer_size = 0; tracDesc_t l_head = NULL; do { // Test target - trac_write_XXX(), TRAC_get_buffer() and TRAC_get_td() // This testcase would create l_max_trace_entries +1 trace entries // to fill trace buffer, times_wrap should be larger than zero do{ l_entry_count++; TRAC_INFO("traceTest applet INFO record: count %d", (int)l_entry_count); TRAC_ERR("traceTest applet ERR record: count %d", (int)l_entry_count); TRAC_IMP("traceTest applet IMP record: count %d", (int)l_entry_count); }while(l_max_trace_entries >= l_entry_count); // Check times_wrap in TRAC_INFO. // Because structures are all the same, skip TRAC_ERR and TRAC_IMP l_rc = TRAC_get_buffer(TRAC_get_td("INF"), G_trac_buffer); l_head = (tracDesc_t)&G_trac_buffer; if((l_rc != 0 ) || (l_head->times_wrap == 0)) { printf("Fail: times_wrap error in trace buffer: %d, %d\n", l_rc, l_head->times_wrap); break; } // Test target - TRAC_get_buffer() and TRAC_get_td() // case: invalid parameters l_rc = TRAC_get_buffer(TRAC_get_td("INF"), NULL); l_head = (tracDesc_t)&G_trac_buffer; if(l_rc == 0) { printf("TRAC_get_buffer(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer() invalid 1th parameter\n"); break; } l_rc = TRAC_get_buffer(NULL, G_trac_buffer); l_head = (tracDesc_t)&G_trac_buffer; if(l_rc == 0) { printf("TRAC_get_buffer(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer() invalid 2nd parameter\n"); break; } // Test target - TRAC_get_buffer_partial() and TRAC_get_td() // case: invalid parameters l_buffer_size = TRACE_BUFFER_SIZE; l_rc = TRAC_get_buffer_partial(NULL, G_trac_buffer, &l_buffer_size); if((l_rc != TRAC_INVALID_PARM) && (l_buffer_size !=0)) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() invalid 1st parameter\n"); break; } l_rc = TRAC_get_buffer_partial(TRAC_get_td("UNKNOWN"), NULL, &l_buffer_size); if((l_rc != TRAC_INVALID_PARM) && (l_buffer_size !=0)) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() invalid 1st parameter\n"); break; } l_rc = TRAC_get_buffer_partial(TRAC_get_td("INF"), NULL, &l_buffer_size); if((l_rc != TRAC_INVALID_PARM) && (l_buffer_size !=0)) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() invalid 2nd parameter\n"); break; } l_rc = TRAC_get_buffer_partial(TRAC_get_td("ERR"), G_trac_buffer, NULL); if(l_rc != TRAC_INVALID_PARM) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() invalid 3rd parameter\n"); break; } // Test target - TRAC_get_buffer_partial() // case: input buffer less then the size of trace buffer header l_buffer_size = sizeof(trace_buf_head_t) - 1; l_rc = TRAC_get_buffer_partial(TRAC_get_td("IMP"), G_trac_buffer, &l_buffer_size); if(l_rc != TRAC_DATA_SIZE_LESS_THAN_HEADER_SIZE) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() with illegal small input buffer\n"); break; } // Test target - TRAC_get_buffer_partial() // case: input buffer is small then then trace buffer l_buffer_size = sizeof(trace_buf_head_t) + (TRACE_BUFFER_SIZE/4); l_rc = TRAC_get_buffer_partial(TRAC_get_td("INF"), G_trac_buffer, &l_buffer_size); if(l_rc) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() with small input buffer\n"); break; } // Test target - TRAC_get_buffer_partial() // case: input buffer is larger then trace buffer l_buffer_size = sizeof(G_trac_buffer); l_rc = TRAC_get_buffer_partial(TRAC_get_td("INF"), G_trac_buffer, &l_buffer_size); if(l_rc || (l_buffer_size != TRACE_BUFFER_SIZE)) { printf("TRAC_get_buffer_partial(), reason code: %d size %d/%d\n", l_rc, l_buffer_size, TRACE_BUFFER_SIZE); printf("Fail: test TRAC_get_buffer_partial() with too large input buffer\n"); break; } // Test target - TRAC_reset_buf() and TRAC_get_buffer_partial() // case: clear trace buffer and check with buffer larger than trace buffer TRAC_reset_buf(); l_buffer_size = sizeof(G_trac_buffer); l_rc = TRAC_get_buffer_partial(TRAC_get_td("ERR"), G_trac_buffer, &l_buffer_size); if(l_rc) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_reset_buf()/TRAC_get_buffer_partial() with empty trace\n"); break; } // Test target - TRAC_reset_buf() and TRAC_get_buffer_partial() // case: clear trace buffer and check it with buffer smaller than trace buffer TRAC_reset_buf(); l_buffer_size = TRACE_BUFFER_SIZE/2; l_rc = TRAC_get_buffer_partial(TRAC_get_td("ERR"), G_trac_buffer, &l_buffer_size); if(l_rc) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_reset_buf()/TRAC_get_buffer_partial() with empty trace\n"); break; } // Test target - TRAC_get_buffer_partial() // case: create some traces and test with large input buffer l_entry_count = 0; do{ l_entry_count++; TRAC_INFO("traceTest applet INFO record: count %d", (int)l_entry_count); TRAC_ERR("traceTest applet ERR record: count %d", (int)l_entry_count); TRAC_IMP("traceTest applet IMP record: count %d", (int)l_entry_count); }while((l_max_trace_entries/4) >= l_entry_count); l_buffer_size = TRACE_BUFFER_SIZE; l_rc = TRAC_get_buffer_partial(TRAC_get_td("IMP"), G_trac_buffer, &l_buffer_size); l_head = (tracDesc_t)&G_trac_buffer; if(l_rc || (l_head->times_wrap != 0)) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() with large input buffer\n"); break; } // Test target - TRAC_get_buffer_partial() // case: create some traces and test with small input buffer l_buffer_size = sizeof(trace_buf_head_t) + (TRACE_BUFFER_SIZE/4); l_rc = TRAC_get_buffer_partial(TRAC_get_td("INF"), G_trac_buffer, &l_buffer_size); if(l_rc) { printf("TRAC_get_buffer_partial(), reason code: %d\n", l_rc); printf("Fail: test TRAC_get_buffer_partial() with small input buffer\n"); break; } }while(0); return l_rc; }
// Function Specification // // Name: dbug_err_inject // // Description: Injects an error // // End Function Specification void dbug_err_inject(const cmdh_fsp_cmd_t * i_cmd_ptr, cmdh_fsp_rsp_t * i_rsp_ptr) { errlHndl_t l_err; cmdh_dbug_inject_errl_query_t *l_cmd_ptr = (cmdh_dbug_inject_errl_query_t*) i_cmd_ptr; i_rsp_ptr->data_length[0] = 0; i_rsp_ptr->data_length[1] = 0; G_rsp_status = ERRL_RC_SUCCESS; if(!strncmp(l_cmd_ptr->comp, "RST", OCC_TRACE_NAME_SIZE)) { l_err = createErrl(CMDH_DBUG_MID, //modId INTERNAL_FAILURE, //reasoncode OCC_NO_EXTENDED_RC, //Extended reason code ERRL_SEV_PREDICTIVE, //Severity NULL, //Trace Buf DEFAULT_TRACE_SIZE, //Trace Size 0xff, //userdata1 0); //userdata2 if (INVALID_ERR_HNDL == l_err) { G_rsp_status = ERRL_RC_INTERNAL_FAIL; } addCalloutToErrl(l_err, ERRL_CALLOUT_TYPE_HUID, //callout type (HUID/CompID) G_sysConfigData.proc_huid, //callout data ERRL_CALLOUT_PRIORITY_HIGH); //priority REQUEST_RESET(l_err); } else { l_err = createErrl(CMDH_DBUG_MID, //modId INTERNAL_FAILURE, //reasoncode OCC_NO_EXTENDED_RC, //Extended reason code ERRL_SEV_UNRECOVERABLE, //Severity TRAC_get_td(l_cmd_ptr->comp), //Trace Buf DEFAULT_TRACE_SIZE, //Trace Size 0xff, //userdata1 0); //userdata2 if (INVALID_ERR_HNDL == l_err) { G_rsp_status = ERRL_RC_INTERNAL_FAIL; } // Commit Error log commitErrl(&l_err); } if (G_rsp_status == ERRL_RC_INTERNAL_FAIL) { TRAC_ERR("cmdh_dbug_inject_errl: Fail creating ERR Log\n"); } else { TRAC_INFO("cmdh_dbug_inject_errl: inject errl for COMP : %s\n", l_cmd_ptr->comp); } return; }