Changeset 81446 in vbox for trunk/src/VBox/HostServices/SharedClipboard/testcase
- Timestamp:
- Oct 22, 2019 10:25:16 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 134164
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedClipboard/testcase/tstClipboardServiceHost.cpp
r80996 r81446 97 97 } 98 98 99 #if 0 /* Disabled for now. */ 100 static void testGetHostMsg(void) 99 static 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. */ 114 static void testGetHostMsgOld(void) 101 115 { 102 116 struct VBOXHGCMSVCPARM parms[2]; … … 105 119 int rc; 106 120 107 RTTestISub("Setting up VBOX_SHCL_ FN_GET_HOST_MSGtest");121 RTTestISub("Setting up VBOX_SHCL_GUEST_FN_GET_HOST_MSG_OLD test"); 108 122 rc = setupTable(&table); 109 123 RTTESTI_CHECK_MSG_RETV(RT_SUCCESS(rc), ("rc=%Rrc\n", rc)); 110 124 /* Unless we are bidirectional the host message requests will be dropped. */ 111 125 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."); 118 133 HGCMSvcSetU32(&parms[0], 0); 119 134 HGCMSvcSetU32(&parms[1], 0); 120 135 call.rc = VERR_TRY_AGAIN; 121 136 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); 124 138 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); 127 140 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 128 141 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT); 129 142 RTTESTI_CHECK_RC_OK(call.rc); 130 143 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); 144 154 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 145 155 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML); 146 156 RTTESTI_CHECK_RC_OK(call.rc); 147 157 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); 159 167 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); 162 169 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 163 170 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT); 164 171 RTTESTI_CHECK_RC_OK(call.rc); 165 172 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); 168 174 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 169 175 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML); 170 176 RTTESTI_CHECK_RC_OK(call.rc); 171 177 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); 185 188 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 186 189 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_UNICODETEXT); 187 190 RTTESTI_CHECK_RC_OK(call.rc); 188 191 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); 191 193 RTTESTI_CHECK(parms[0].u.uint32 == VBOX_SHCL_HOST_MSG_READ_DATA); 192 194 RTTESTI_CHECK(parms[1].u.uint32 == VBOX_SHCL_FMT_HTML); 193 195 RTTESTI_CHECK_RC_OK(call.rc); 194 196 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); 197 198 RTTESTI_CHECK_RC(call.rc, VERR_TRY_AGAIN); /* This call should not complete yet. */ 198 199 table.pfnDisconnect(NULL, 1 /* clientId */, &g_Client); 199 200 table.pfnUnload(NULL); 200 201 } 201 #endif202 202 203 203 static void testSetHeadless(void) … … 248 248 testSetHeadless(); 249 249 } 250 251 250 252 251 int main(int argc, char *argv[]) … … 269 268 */ 270 269 testHostCall(); 271 /* testGetHostMsg(); Disabled */270 testGetHostMsgOld(); 272 271 273 272 /*
Note:
See TracChangeset
for help on using the changeset viewer.