VirtualBox

Changeset 90912 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
Aug 26, 2021 1:38:34 PM (3 years ago)
Author:
vboxsync
Message:

Audio/Validation Kit: More connection mode handling. bugref:10008

Location:
trunk/src/VBox/ValidationKit/utils/audio
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/audio/vkatCommon.cpp

    r90898 r90912  
    693693    RT_ZERO(Val);
    694694
    695     int rc;
    696 
    697     if (!pTcpOpts->szBindAddr[0])
    698     {
    699         Val.psz = "client";
    700     }
    701     else if (!pTcpOpts->szConnectAddr[0])
    702     {
    703         Val.psz = "server";
    704     }
    705     else
    706         Val.psz = "both";
    707 
    708     rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_MODE, &Val);
     695    Val.u32 = pTcpOpts->enmConnMode;
     696    int rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_CONN_MODE, &Val);
    709697    AssertRCReturn(rc, rc);
    710698
    711     RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Connecting %s (connection mode '%s') ...\n", pszWhat, Val.psz);
    712 
    713     if (   !RTStrCmp(Val.psz, "client")
    714         || !RTStrCmp(Val.psz, "both"))
    715            RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Connecting to %s:%RU32\n", pTcpOpts->szConnectAddr, pTcpOpts->uConnectPort);
    716 
    717     if (   !RTStrCmp(Val.psz, "server")
    718         || !RTStrCmp(Val.psz, "both"))
    719         RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Listening at %s:%RU32\n", pTcpOpts->szBindAddr, pTcpOpts->uBindPort);
    720 
    721     if (pTcpOpts->szBindAddr[0])
    722     {
    723         Val.psz = pTcpOpts->szBindAddr;
    724         rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_BIND_ADDRESS, &Val);
    725         AssertRCReturn(rc, rc);
    726     }
    727 
    728     if (pTcpOpts->uBindPort)
    729     {
     699    if (   pTcpOpts->enmConnMode == ATSCONNMODE_BOTH
     700        || pTcpOpts->enmConnMode == ATSCONNMODE_SERVER)
     701    {
     702        Assert(pTcpOpts->uBindPort); /* Always set by the caller. */
    730703        Val.u16 = pTcpOpts->uBindPort;
    731704        rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_BIND_PORT, &Val);
    732705        AssertRCReturn(rc, rc);
    733     }
    734 
    735     if (pTcpOpts->szConnectAddr[0])
    736     {
    737         Val.psz = pTcpOpts->szConnectAddr;
    738         rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_CONNECT_ADDRESS, &Val);
    739         AssertRCReturn(rc, rc);
    740     }
    741 
    742     if (pTcpOpts->uConnectPort)
    743     {
     706
     707        if (pTcpOpts->szBindAddr[0])
     708        {
     709            Val.psz = pTcpOpts->szBindAddr;
     710            rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_BIND_ADDRESS, &Val);
     711            AssertRCReturn(rc, rc);
     712        }
     713        else
     714        {
     715            RTTestFailed(g_hTest, "No bind address specified!\n");
     716            return VERR_INVALID_PARAMETER;
     717        }
     718
     719        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Connecting %s by listening as server at %s:%RU32 ...\n",
     720                     pszWhat, pTcpOpts->szBindAddr, pTcpOpts->uBindPort);
     721    }
     722
     723
     724    if (   pTcpOpts->enmConnMode == ATSCONNMODE_BOTH
     725        || pTcpOpts->enmConnMode == ATSCONNMODE_CLIENT)
     726    {
     727        Assert(pTcpOpts->uConnectPort); /* Always set by the caller. */
    744728        Val.u16 = pTcpOpts->uConnectPort;
    745729        rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_CONNECT_PORT, &Val);
    746730        AssertRCReturn(rc, rc);
     731
     732        if (pTcpOpts->szConnectAddr[0])
     733        {
     734            Val.psz = pTcpOpts->szConnectAddr;
     735            rc = AudioTestSvcClientHandleOption(pClient, ATSTCPOPT_CONNECT_ADDRESS, &Val);
     736            AssertRCReturn(rc, rc);
     737        }
     738        else
     739        {
     740            RTTestFailed(g_hTest, "No connect address specified!\n");
     741            return VERR_INVALID_PARAMETER;
     742        }
     743
     744        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Connecting %s by connecting as client to %s:%RU32 ...\n",
     745                     pszWhat, pTcpOpts->szConnectAddr, pTcpOpts->uConnectPort);
    747746    }
    748747
     
    773772    RT_ZERO(Val);
    774773
    775     if (pTcpOpts->szBindAddr[0])
    776     {
    777         Val.psz = pTcpOpts->szBindAddr;
    778         AudioTestSvcHandleOption(pSrv, ATSTCPOPT_BIND_ADDRESS, &Val);
    779     }
    780 
    781     if (pTcpOpts->uBindPort)
    782     {
     774    Val.u32 = pTcpOpts->enmConnMode;
     775    AudioTestSvcHandleOption(pSrv, ATSTCPOPT_CONN_MODE, &Val);
     776
     777    if (   pTcpOpts->enmConnMode == ATSCONNMODE_BOTH
     778        || pTcpOpts->enmConnMode == ATSCONNMODE_SERVER)
     779    {
     780        Assert(pTcpOpts->uBindPort); /* Always set by the caller. */
    783781        Val.u16 = pTcpOpts->uBindPort;
    784782        AudioTestSvcHandleOption(pSrv, ATSTCPOPT_BIND_PORT, &Val);
    785     }
    786 
    787     if (pTcpOpts->szConnectAddr[0])
    788     {
    789         Val.psz = pTcpOpts->szConnectAddr;
    790         AudioTestSvcHandleOption(pSrv, ATSTCPOPT_CONNECT_ADDRESS, &Val);
    791     }
    792 
    793     if (pTcpOpts->uConnectPort)
    794     {
     783
     784        if (pTcpOpts->szBindAddr[0])
     785        {
     786            Val.psz = pTcpOpts->szBindAddr;
     787            AudioTestSvcHandleOption(pSrv, ATSTCPOPT_BIND_ADDRESS, &Val);
     788        }
     789        else
     790        {
     791            RTTestFailed(g_hTest, "No bind address specified!\n");
     792            return VERR_INVALID_PARAMETER;
     793        }
     794
     795        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Starting server for %s at %s:%RU32 ...\n",
     796                     pszDesc, pTcpOpts->szBindAddr, pTcpOpts->uBindPort);
     797    }
     798
     799
     800    if (   pTcpOpts->enmConnMode == ATSCONNMODE_BOTH
     801        || pTcpOpts->enmConnMode == ATSCONNMODE_CLIENT)
     802    {
     803        Assert(pTcpOpts->uConnectPort); /* Always set by the caller. */
    795804        Val.u16 = pTcpOpts->uConnectPort;
    796805        AudioTestSvcHandleOption(pSrv, ATSTCPOPT_CONNECT_PORT, &Val);
    797     }
    798 
    799     RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Starting server for %s at %s:%RU32 ...\n",
    800                  pszDesc, pTcpOpts->szBindAddr[0] ? pTcpOpts->szBindAddr : "0.0.0.0", pTcpOpts->uBindPort);
    801     if (pTcpOpts->szConnectAddr[0])
    802         RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Trying %s to connect as client to %s:%RU32 ...\n",
    803                      pszDesc, pTcpOpts->szConnectAddr[0] ? pTcpOpts->szConnectAddr : "0.0.0.0", pTcpOpts->uConnectPort);
     806
     807        if (pTcpOpts->szConnectAddr[0])
     808        {
     809            Val.psz = pTcpOpts->szConnectAddr;
     810            AudioTestSvcHandleOption(pSrv, ATSTCPOPT_CONNECT_ADDRESS, &Val);
     811        }
     812        else
     813        {
     814            RTTestFailed(g_hTest, "No connect address specified!\n");
     815            return VERR_INVALID_PARAMETER;
     816        }
     817
     818        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Starting server for %s by connecting as client to %s:%RU32 ...\n",
     819                     pszDesc, pTcpOpts->szConnectAddr, pTcpOpts->uConnectPort);
     820    }
    804821
    805822    int rc = AudioTestSvcInit(pSrv, pCallbacks);
     
    897914        && !pTstEnv->TcpOpts.szBindAddr[0])
    898915            RTStrCopy(pTstEnv->TcpOpts.szBindAddr, sizeof(pTstEnv->TcpOpts.szBindAddr), "0.0.0.0");
     916
     917    /*
     918     * Determine connection mode based on set variables.
     919     */
     920    if (   pTstEnv->TcpOpts.szBindAddr[0]
     921        && pTstEnv->TcpOpts.szConnectAddr[0])
     922    {
     923        pTstEnv->TcpOpts.enmConnMode = ATSCONNMODE_BOTH;
     924    }
     925    else if (pTstEnv->TcpOpts.szBindAddr[0])
     926        pTstEnv->TcpOpts.enmConnMode = ATSCONNMODE_SERVER;
     927    else /* "Reversed mode", i.e. used for NATed VMs. */
     928        pTstEnv->TcpOpts.enmConnMode = ATSCONNMODE_CLIENT;
    899929
    900930    /* Set a back reference to the test environment for the callback context. */
     
    923953            pTstEnv->TcpOpts.uConnectPort = ATS_TCP_DEF_CONNECT_PORT_GUEST;
    924954
    925         /**
    926          * Note: Don't set pTstEnv->TcpOpts.szTcpConnectAddr by default here, as this specifies what connection mode
    927          *       (client / server / both) we use on the guest.
    928          */
    929 
    930955        /*
    931956         * Start the ATS (Audio Test Service) on the guest side.
     
    935960         * Note that we have to bind to "0.0.0.0" by default so that the host can connect to it.
    936961         */
    937         rc = audioTestEnvConfigureAndStartTcpServer(&pTstEnv->Srv, &Callbacks, "Guest ATS", &pTstEnv->TcpOpts);
     962        rc = audioTestEnvConfigureAndStartTcpServer(&pTstEnv->Srv, &Callbacks, "guest", &pTstEnv->TcpOpts);
    938963    }
    939964    else /* Host mode */
     
    955980        if (RT_SUCCESS(rc))
    956981            rc = audioTestEnvConnectViaTcp(pTstEnv, &pTstEnv->u.Host.AtsClGuest,
    957                                            "Host -> Guest ATS", &pTstEnv->TcpOpts);
     982                                           "host -> guest", &pTstEnv->TcpOpts);
    958983        if (RT_SUCCESS(rc))
    959984        {
    960985            AUDIOTESTENVTCPOPTS ValKitTcpOpts;
    961986            RT_ZERO(ValKitTcpOpts);
     987
     988            /* We only connect as client to the Validation Kit audio driver ATS. */
     989            ValKitTcpOpts.enmConnMode = ATSCONNMODE_CLIENT;
    962990
    963991            /* For now we ASSUME that the Validation Kit audio driver ATS runs on the same host as VKAT (this binary) runs on. */
     
    968996            if (RT_SUCCESS(rc))
    969997                rc = audioTestEnvConnectViaTcp(pTstEnv, &pTstEnv->u.Host.AtsClValKit,
    970                                                "Host -> Validation Kit Host Audio Driver ATS", &ValKitTcpOpts);
     998                                               "host -> valkit", &ValKitTcpOpts);
    971999        }
    9721000    }
  • trunk/src/VBox/ValidationKit/utils/audio/vkatInternal.h

    r90894 r90912  
    182182typedef struct AUDIOTESTENVTCPOPTS
    183183{
     184    /** Connection mode(s) to use. */
     185    ATSCONNMODE     enmConnMode;
    184186    /** Bind address (server mode). When empty, "0.0.0.0" (any host) will be used. */
    185187    char            szBindAddr[128];
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