示例#1
0
OSCL_EXPORT_REF void* _oscl_default_audit_realloc(void* in_ptr, size_t nBytes, const char * file_name, const int line_num)
{
    //get global mem audit object.
    OsclAuditCB audit;
    OsclMemInit(audit);
    return _oscl_audit_realloc(in_ptr, nBytes, audit, file_name, line_num);
}
void PVMediaInputAuthorEngineTest::test()
{
    iTotalSuccess = 0;
    iTotalFail = 0;
    iTotalError = 0;

    PVAECmdType resetState = PVAE_CMD_OPEN;
    while ((iNextTestCase <= iLastTest) || (iNextTestCase < Invalid_Test))
    {
        if (iCurrentTest)
        {
            delete iCurrentTest;
            iCurrentTest = NULL;

            // Shutdown PVLogger and scheduler before checking mem stats
            CleanupLoggerScheduler();
#if !(OSCL_BYPASS_MEMMGT)
            // Print out the memory usage results for this test case
            OsclAuditCB auditCB;
            OsclMemInit(auditCB);
            if (auditCB.pAudit)
            {
                MM_Stats_t* stats = auditCB.pAudit->MM_GetStats("");
                if (stats)
                {
                    uint32 alloclks = stats->numAllocs - iNumAllocs;
                    fprintf(iFile, "  Mem stats: TotalAllocs(%d), TotalBytes(%d),\n AllocFailures(%d), AllocLeak(%d)\n",
                            stats->totalNumAllocs - iTotalAlloc, stats->totalNumBytes - iTotalBytes, stats->numAllocFails - iAllocFails, stats->numAllocs - iNumAllocs);
                }
                else
                {
                    fprintf(iFile, "Retrieving memory statistics after running test case failed! Memory statistics result is not available.\n");
                }
            }
            else
            {
                fprintf(iFile, "Memory audit not available! Memory statistics result is not available.\n");
            }
#endif

        }   //iCurrentTest

#if !(OSCL_BYPASS_MEMMGT)
        // Obtain the current mem stats before running the test case
        OsclAuditCB auditCB;
        OsclMemInit(auditCB);

        if (auditCB.pAudit)
        {
            MM_Stats_t* stats = auditCB.pAudit->MM_GetStats("");
            if (stats)
            {
                iTotalAlloc = stats->totalNumAllocs;
                iTotalBytes = stats->totalNumBytes;
                iAllocFails = stats->numAllocFails;
                iNumAllocs = stats->numAllocs;
            }
            else
            {
                fprintf(iFile, "Retrieving memory statistics before running test case failed! Memory statistics result would be invalid.\n");
            }
        }
        else
        {
            fprintf(iFile, "Memory audit not available! Memory statistics result would be invalid.\n");
        }
#endif


        //stop at last test
        if (iNextTestCase > iLastTest)
        {
            iNextTestCase = Invalid_Test;
        }
        else
        {
            fprintf(iFile, "\nStarting Test %d: ", iNextTestCase);
            InitLoggerScheduler();
        }

        PVAuthorAsyncTestParam testparam;
        testparam.iObserver = this;
        testparam.iTestCase = this;
        testparam.iTestCaseNum = iNextTestCase;
        testparam.iStdOut = iFile;

        switch (iNextTestCase)
        {
            case PVMediaInput_Open_Compose_Stop_Test:
            {
                fprintf(iFile, "Open Compose Stop test with AVI/WAV MIO Comp:\n");
                iCurrentTest = new pv_mediainput_async_test_opencomposestop(testparam, iMediaInputParam, false);
                // Go to next test
                ++iNextTestCase;
            }
            break;
            case PVMediaInput_Open_RealTimeCompose_Stop_Test:
            {
                fprintf(iFile, "Open Real Time Compose Stop test with AVI/WAV MIO Comp:\n");
                iMediaInputParam.iRealTimeAuthoring = true;
                iCurrentTest = new pv_mediainput_async_test_opencomposestop(testparam, iMediaInputParam, false);
                // Go to next test
                ++iNextTestCase;
            }
            break;

            case PVMediaInput_Pause_Resume_Test:
            {
                fprintf(iFile, "Pause Resume test with AVI/WAV MIO Comp:\n");
                iCurrentTest = new pv_mediainput_async_test_opencomposestop(testparam, iMediaInputParam, true);
                // Go to next test
                ++iNextTestCase;
            }
            break;
            case PVMediaInput_ErrorHandling_Test_WrongFormat:
            {
                fprintf(iFile, "Error Handling Wrong Format test with AVI/WAV MIO Comp\n");

                iMediaInputParam.iIPFileInfo = FILE_NAME_ERROR_HANDLING;
                iMediaInputParam.iInputFormat = DEFAULTSOURCEFORMATTYPE;
                iCurrentTest = new pv_mediainput_async_test_errorhandling(testparam, iMediaInputParam, false, true);

                // Go to next test
                ++iNextTestCase;
            }
            break;

            case PVMediaInput_ErrorHandling_Test_WrongIPFileName:
            {
                fprintf(iFile, "Error Handling wrong IP File test with AVI/WAV MIO Comp\n");

                iMediaInputParam.iIPFileInfo = WRONGIPFILENAME_ERRORHANDLING;
                iMediaInputParam.iInputFormat = DEFAULTSOURCEFORMATTYPE;
                iCurrentTest = new pv_mediainput_async_test_errorhandling(testparam, iMediaInputParam, false, false);

                // Go to next test
                ++iNextTestCase;
            }
            break;

            case PVMediaInput_Reset_Test:
            {
                fprintf(iFile, "Reset test with AVI/WAV MIO Comp\n");
                switch (resetState)
                {
                    case PVAE_CMD_OPEN:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_OPEN\n");
                    }
                    break;
                    case PVAE_CMD_ADD_DATA_SOURCE:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_ADD_DATA_SOURCE\n");
                    }
                    break;
                    case PVAE_CMD_SELECT_COMPOSER:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_SELECT_COMPOSER\n");
                    }
                    break;
                    case PVAE_CMD_ADD_MEDIA_TRACK:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_ADD_MEDIA_TRACK\n");
                    }
                    break;
                    case PVAE_CMD_INIT:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_INIT\n");
                    }
                    break;
                    case PVAE_CMD_START:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_START\n");
                    }
                    break;
                    case PVAE_CMD_PAUSE:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_PAUSE\n");
                    }
                    break;
                    case PVAE_CMD_RECORDING:
                    {
                        fprintf(iFile, "Current reset state: PVAE_CMD_RECORDING\n");
                    }
                    break;

                    default:
                        break;


                }
                iCurrentTest = new pv_mediainput_async_test_reset(testparam, iMediaInputParam, false, resetState);
                resetState = ((pv_mediainput_async_test_reset*)iCurrentTest)->GetNextResetState();
                //run reset test for all states.
                if (PVAE_CMD_STOP == resetState)
                {
                    // Go to next test
                    ++iNextTestCase;
                }

            }
            break;
            case AVI_Input_Longetivity_Test:
            {
                fprintf(iFile, "AVI Input Longetivity test:\n");
                iCurrentTest = new pv_mediainput_async_test_opencomposestop(testparam, iMediaInputParam, false);
                // Go to next test
                ++iNextTestCase;

            }
            break;
            default:
            {
                iCurrentTest = NULL;
                break;
            }
        }

        if (iCurrentTest)
        {
            // Setup Scheduler
            OsclExecScheduler *sched = OsclExecScheduler::Current();
            if (sched)
            {
                iCurrentTest->StartTest();

#if USE_NATIVE_SCHEDULER
                // Have PV scheduler use the scheduler native to the system
                sched->StartNativeScheduler();
#else
                int32 err;
                OSCL_TRY(err, sched->StartScheduler(););
#endif
            }
            else
            {
                fprintf(iFile, "ERROR! Scheduler is not available. Test case could not run.");
                iNextTestCase++;
            }

        }