VirtualBox

Changeset 91200 in vbox


Ignore:
Timestamp:
Sep 10, 2021 1:45:26 PM (3 years ago)
Author:
vboxsync
Message:

Audio/Validation Kit: Check if there still are some registered tests scheduled for running and wait for them to get processed before ending the test set. ​bugref:10008

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp

    r91198 r91200  
    140140     *  At the moment only one test set can be around at a time. */
    141141    AUDIOTESTSET        Set;
    142     /** Number of total tests created. */
     142    /** Number of total tests in \a lstTestsRec and \a lstTestsPlay. */
    143143    uint32_t            cTestsTotal;
     144    /** Increasing number to identify tests. */
     145    uint32_t            idxTest;
    144146    /** Number of tests in \a lstTestsRec. */
    145147    uint32_t            cTestsRec;
     
    184186 * Unregisters a ValKit test, common code.
    185187 *
     188 * @param   pThis               ValKit audio driver instance.
    186189 * @param   pTst                Test to unregister.
    187190 *                              The pointer will be invalid afterwards.
    188191 */
    189 static void drvHostValKiUnregisterTest(PVALKITTESTDATA pTst)
     192static void drvHostValKiUnregisterTest(PDRVHOSTVALKITAUDIO pThis, PVALKITTESTDATA pTst)
    190193{
    191194    AssertPtrReturnVoid(pTst);
     
    204207    RTMemFree(pTst);
    205208    pTst = NULL;
     209
     210    Assert(pThis->cTestsTotal);
     211    pThis->cTestsTotal--;
     212    if (pThis->cTestsTotal == 0)
     213    {
     214        if (ASMAtomicReadBool(&pThis->fTestSetEnd))
     215        {
     216            int rc2 = RTSemEventSignal(pThis->EventSemEnded);
     217            AssertRC(rc2);
     218        }
     219    }
    206220}
    207221
     
    215229static void drvHostValKiUnregisterRecTest(PDRVHOSTVALKITAUDIO pThis, PVALKITTESTDATA pTst)
    216230{
    217     drvHostValKiUnregisterTest(pTst);
    218 
    219231    Assert(pThis->cTestsRec);
    220232    pThis->cTestsRec--;
     233
     234    drvHostValKiUnregisterTest(pThis, pTst);
    221235}
    222236
     
    230244static void drvHostValKiUnregisterPlayTest(PDRVHOSTVALKITAUDIO pThis, PVALKITTESTDATA pTst)
    231245{
    232     drvHostValKiUnregisterTest(pTst);
    233 
    234246    Assert(pThis->cTestsPlay);
    235247    pThis->cTestsPlay--;
     248
     249    drvHostValKiUnregisterTest(pThis, pTst);
    236250}
    237251
     
    350364    if (RT_SUCCESS(rc))
    351365    {
    352         const PAUDIOTESTSET pSet  = &pThis->Set;
    353 
    354         if (AudioTestSetIsRunning(pSet))
     366        const PAUDIOTESTSET pSet = &pThis->Set;
     367
     368        LogRel(("ValKit: Test set has %RU32 tests total, %RU32 (still) running, %RU32 failures total so far\n",
     369                AudioTestSetGetTestsTotal(pSet), AudioTestSetGetTestsRunning(pSet), AudioTestSetGetTotalFailures(pSet)));
     370        LogRel(("ValKit: %RU32 tests still registered total (%RU32 play, %RU32 record)\n",
     371                pThis->cTestsTotal, pThis->cTestsPlay, pThis->cTestsRec));
     372
     373        if (   AudioTestSetIsRunning(pSet)
     374            || pThis->cTestsTotal)
    355375        {
    356376            ASMAtomicWriteBool(&pThis->fTestSetEnd, true);
     
    359379            if (RT_SUCCESS(rc))
    360380            {
    361                 LogRel(("ValKit: Waiting for runnig test set '%s' to end ...\n", pszTag));
    362                 rc = RTSemEventWait(pThis->EventSemEnded, RT_MS_30SEC);
     381                LogRel(("ValKit: Waiting for all tests of set '%s' to end ...\n", pszTag));
     382                rc = RTSemEventWait(pThis->EventSemEnded, RT_MS_1MIN);
    363383                if (RT_FAILURE(rc))
    364                     LogRel(("ValKit: Waiting for runnig test set '%s' failed with %Rrc\n", pszTag, rc));
     384                    LogRel(("ValKit: Waiting for tests of set '%s' to end failed with %Rrc\n", pszTag, rc));
    365385
    366386                int rc2 = RTCritSectEnter(&pThis->CritSect);
     
    369389            }
    370390        }
    371 
    372         LogRel(("ValKit: Test set has %RU32 tests total, %RU32 (still) running, %RU32 failures total\n",
    373                 AudioTestSetGetTestsTotal(pSet), AudioTestSetGetTestsRunning(pSet), AudioTestSetGetTotalFailures(pSet)));
    374391
    375392        if (RT_SUCCESS(rc))
     
    448465    {
    449466        LogRel(("ValKit: Registering guest recording test #%RU32 (%RU32ms, %RU64 bytes)\n",
    450                 pThis->cTestsTotal, pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Rec.cbToWrite));
     467                pThis->idxTest, pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Rec.cbToWrite));
    451468
    452469        RTListAppend(&pThis->lstTestsRec, &pTestData->Node);
    453470
    454471        pTestData->msRegisteredTS = RTTimeMilliTS();
    455         pTestData->idxTest        = pThis->cTestsTotal++;
     472        pTestData->idxTest        = pThis->idxTest++;
    456473
    457474        pThis->cTestsRec++;
     475        pThis->cTestsTotal++;
    458476
    459477        int rc2 = RTCritSectLeave(&pThis->CritSect);
     
    487505    {
    488506        LogRel(("ValKit: Registering guest playback test #%RU32 (%RU32ms, %RU64 bytes)\n",
    489                 pThis->cTestsTotal, pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Play.cbToRead));
     507                pThis->idxTest, pTestData->t.TestTone.Parms.msDuration, pTestData->t.TestTone.u.Play.cbToRead));
    490508
    491509        RTListAppend(&pThis->lstTestsPlay, &pTestData->Node);
    492510
    493511        pTestData->msRegisteredTS = RTTimeMilliTS();
    494         pTestData->idxTest        = pThis->cTestsTotal++;
    495 
     512        pTestData->idxTest        = pThis->idxTest++;
     513
     514        pThis->cTestsTotal++;
    496515        pThis->cTestsPlay++;
    497516
     
    10921111            }
    10931112        }
    1094     }
    1095 
    1096     if (ASMAtomicReadBool(&pThis->fTestSetEnd))
    1097     {
    1098         int rc2 = RTSemEventSignal(pThis->EventSemEnded);
    1099         AssertRC(rc2);
    11001113    }
    11011114
     
    11771190    pThis->cbPlayedNoTest  = 0;
    11781191
     1192    pThis->cTestsTotal = 0;
     1193    pThis->cTestsPlay  = 0;
     1194    pThis->cTestsRec   = 0;
    11791195    pThis->fTestSetEnd = false;
    11801196
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette