Example #1
0
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;
}
Example #2
0
// 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;
}