VirtualBox

Ignore:
Timestamp:
Oct 22, 2019 10:25:16 AM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134164
Message:

Shared Clipboard/Svc: Re-enabled / fixes testcases for VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD to get testing coverage of the legacy (protocol v0) protocol.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedClipboard/testcase/tstClipboardServiceHost.cpp

    r80996 r81446  
    9797}
    9898
    99 #if 0 /* Disabled for now. */
    100 static void testGetHostMsg(void)
     99static void testMsgAddOld(PSHCLCLIENT pClient, uint32_t uMsg, uint32_t uParm1)
     100{
     101    PSHCLCLIENTMSG pMsg = shclSvcMsgAlloc(uMsg, 2 /* cParms */); /* The old protocol (v0) has a fixed parameter count of 2. */
     102    RTTESTI_CHECK_RETV(pMsg != NULL);
     103
     104    HGCMSvcSetU32(&pMsg->paParms[0], uMsg);
     105    HGCMSvcSetU32(&pMsg->paParms[1], uParm1);
     106
     107    int rc = shclSvcMsgAdd(pClient, pMsg, true /* fAppend */);
     108    RTTESTI_CHECK_RC_OK(rc);
     109    rc = shclSvcClientWakeup(pClient);
     110    RTTESTI_CHECK_RC_OK(rc);
     111}
     112
     113/* Does testing of VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, needed for providing compatibility to older Guest Additions clients. */
     114static void testGetHostMsgOld(void)
    101115{
    102116    struct VBOXHGCMSVCPARM parms[2];
     
    105119    int rc;
    106120
    107     RTTestISub("Setting up VBOX_SHCL_FN_GET_HOST_MSG test");
     121    RTTestISub("Setting up VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD test");
    108122    rc = setupTable(&table);
    109123    RTTESTI_CHECK_MSG_RETV(RT_SUCCESS(rc), ("rc=%Rrc\n", rc));
    110124    /* Unless we are bidirectional the host message requests will be dropped. */
    111125    HGCMSvcSetU32(&parms[0], VBOX_SHCL_MODE_BIDIRECTIONAL);
    112     rc = table.pfnHostCall(NULL, VBOX_SHCL_HOST_FN_SET_MODE,
    113                            1, parms);
    114     RTTESTI_CHECK_RC_OK(rc);
    115 
    116     RTTestISub("Testing FN_GET_HOST_MSG, one format, waiting guest call.");
    117     RT_ZERO(g_Client.State);
     126    rc = table.pfnHostCall(NULL, VBOX_SHCL_HOST_FN_SET_MODE, 1, parms);
     127    RTTESTI_CHECK_RC_OK(rc);
     128
     129    rc = shclSvcClientInit(&g_Client, 1 /* clientId */);
     130    RTTESTI_CHECK_RC_OK(rc);
     131
     132    RTTestISub("Testing one format, waiting guest call.");
    118133    HGCMSvcSetU32(&parms[0], 0);
    119134    HGCMSvcSetU32(&parms[1], 0);
    120135    call.rc = VERR_TRY_AGAIN;
    121136    table.pfnConnect(NULL, 1 /* clientId */, &g_Client, 0, 0);
    122     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    123                   2, parms, 0);
     137    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    124138    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This should get updated only when the guest call completes. */
    125     sharedClipboardSvcOldReportMsg(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA,
    126                                    VBOX_SHCL_FMT_UNICODETEXT);
     139    testMsgAddOld(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA, VBOX_SHCL_FMT_UNICODETEXT);
    127140    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    128141    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT);
    129142    RTTESTI_CHECK_RC_OK(call.rc);
    130143    call.rc = VERR_TRY_AGAIN;
    131     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    132                   2, parms, 0);
    133     RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
    134 
    135     RTTestISub("Testing FN_GET_HOST_MSG, one format, no waiting guest calls.");
    136     RT_ZERO(g_Client.State);
    137     sharedClipboardSvcOldReportMsg(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA,
    138                                    VBOX_SHCL_FMT_HTML);
    139     HGCMSvcSetU32(&parms[0], 0);
    140     HGCMSvcSetU32(&parms[1], 0);
    141     call.rc = VERR_TRY_AGAIN;
    142     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    143                   2, parms, 0);
     144    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
     145    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
     146
     147    RTTestISub("Testing one format, no waiting guest calls.");
     148    shclSvcClientReset(&g_Client);
     149    testMsgAddOld(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA, VBOX_SHCL_FMT_HTML);
     150    HGCMSvcSetU32(&parms[0], 0);
     151    HGCMSvcSetU32(&parms[1], 0);
     152    call.rc = VERR_TRY_AGAIN;
     153    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    144154    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    145155    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML);
    146156    RTTESTI_CHECK_RC_OK(call.rc);
    147157    call.rc = VERR_TRY_AGAIN;
    148     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    149                   2, parms, 0);
    150     RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
    151 
    152     RTTestISub("Testing FN_GET_HOST_MSG, two formats, waiting guest call.");
    153     RT_ZERO(g_Client.State);
    154     HGCMSvcSetU32(&parms[0], 0);
    155     HGCMSvcSetU32(&parms[1], 0);
    156     call.rc = VERR_TRY_AGAIN;
    157     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    158                   2, parms, 0);
     158    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
     159    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
     160
     161    RTTestISub("Testing two formats, waiting guest call.");
     162    shclSvcClientReset(&g_Client);
     163    HGCMSvcSetU32(&parms[0], 0);
     164    HGCMSvcSetU32(&parms[1], 0);
     165    call.rc = VERR_TRY_AGAIN;
     166    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    159167    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This should get updated only when the guest call completes. */
    160     sharedClipboardSvcOldReportMsg(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA,
    161                                    VBOX_SHCL_FMT_UNICODETEXT | VBOX_SHCL_FMT_HTML);
     168    testMsgAddOld(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA, VBOX_SHCL_FMT_UNICODETEXT | VBOX_SHCL_FMT_HTML);
    162169    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    163170    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT);
    164171    RTTESTI_CHECK_RC_OK(call.rc);
    165172    call.rc = VERR_TRY_AGAIN;
    166     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    167                   2, parms, 0);
     173    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    168174    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    169175    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML);
    170176    RTTESTI_CHECK_RC_OK(call.rc);
    171177    call.rc = VERR_TRY_AGAIN;
    172     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    173                   2, parms, 0);
    174     RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
    175 
    176     RTTestISub("Testing FN_GET_HOST_MSG, two formats, no waiting guest calls.");
    177     RT_ZERO(g_Client.State);
    178     sharedClipboardSvcOldReportMsg(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA,
    179                                    VBOX_SHCL_FMT_UNICODETEXT | VBOX_SHCL_FMT_HTML);
    180     HGCMSvcSetU32(&parms[0], 0);
    181     HGCMSvcSetU32(&parms[1], 0);
    182     call.rc = VERR_TRY_AGAIN;
    183     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    184                   2, parms, 0);
     178    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
     179    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
     180
     181    RTTestISub("Testing two formats, no waiting guest calls.");
     182    shclSvcClientReset(&g_Client);
     183    testMsgAddOld(&g_Client, VBOX_SHCL_HOST_MSG_READ_DATA, VBOX_SHCL_FMT_UNICODETEXT | VBOX_SHCL_FMT_HTML);
     184    HGCMSvcSetU32(&parms[0], 0);
     185    HGCMSvcSetU32(&parms[1], 0);
     186    call.rc = VERR_TRY_AGAIN;
     187    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    185188    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    186189    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT);
    187190    RTTESTI_CHECK_RC_OK(call.rc);
    188191    call.rc = VERR_TRY_AGAIN;
    189     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    190                   2, parms, 0);
     192    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    191193    RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA);
    192194    RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML);
    193195    RTTESTI_CHECK_RC_OK(call.rc);
    194196    call.rc = VERR_TRY_AGAIN;
    195     table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD,
    196                   2, parms, 0);
     197    table.pfnCall(NULL, &call, 1 /* clientId */, &g_Client, VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD, 2, parms, 0);
    197198    RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN);  /* This call should not complete yet. */
    198199    table.pfnDisconnect(NULL, 1 /* clientId */, &g_Client);
    199200    table.pfnUnload(NULL);
    200201}
    201 #endif
    202202
    203203static void testSetHeadless(void)
     
    248248    testSetHeadless();
    249249}
    250 
    251250
    252251int main(int argc, char *argv[])
     
    269268     */
    270269    testHostCall();
    271     /* testGetHostMsg(); Disabled */
     270    testGetHostMsgOld();
    272271
    273272    /*
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