void PrlNetworkShapingTest::testSetVmRate() { SdkHandleWrap hEntry1, hEntry2; SdkHandleWrap hRateList; CreateNetworkRate(hEntry1, 1); CreateNetworkRate(hEntry2, 2); CHECK_RET_CODE_EXP(PrlApi_CreateHandlesList(hRateList.GetHandlePtr())); CHECK_RET_CODE_EXP(PrlHndlList_AddItem(hRateList, hEntry1)); CHECK_RET_CODE_EXP(PrlHndlList_AddItem(hRateList, hEntry2)); CreateVm(); SdkHandleWrap hJob(PrlVm_BeginEdit(m_hVm)); CHECK_JOB_RET_CODE(hJob) CHECK_RET_CODE_EXP(PrlVmCfg_SetNetworkRateList(m_hVm, hRateList)); CHECK_RET_CODE_EXP(PrlVmCfg_SetRateBound(m_hVm, PRL_TRUE)); PRL_BOOL bEnabled; CHECK_RET_CODE_EXP(PrlVmCfg_IsRateBound(m_hVm, &bEnabled)); QVERIFY(bEnabled == PRL_TRUE); hJob.reset(PrlVm_Commit(m_hVm)); CHECK_JOB_RET_CODE(hJob) hJob.reset(PrlVm_RefreshConfig(m_hVm)); CHECK_JOB_RET_CODE(hJob); CHECK_RET_CODE_EXP(PrlVmCfg_IsRateBound(m_hVm, &bEnabled)); QVERIFY(bEnabled == PRL_TRUE); }
void PrlNetworkShapingTest::CreateVm() { CHECK_RET_CODE_EXP(PrlSrv_CreateVm(m_hServer, m_hVm.GetHandlePtr()))\ CHECK_RET_CODE_EXP(PrlVmCfg_SetName(m_hVm, QTest::currentTestFunction())) SdkHandleWrap hJob(PrlVm_Reg(m_hVm, "", PRL_TRUE)); CHECK_JOB_RET_CODE(hJob) }
bool SimpleServerWrapper::Logoff() { m_isLocalAdminInited = false; SdkHandleWrap hJob(PrlSrv_Logoff(m_ServerHandle)); if (PRL_SUCCEEDED(PrlJob_Wait(hJob, PRL_JOB_WAIT_TIMEOUT))) { PRL_RESULT nRetCode = PRL_ERR_UNINITIALIZED; if (PRL_SUCCEEDED(PrlJob_GetRetCode(hJob, &nRetCode))) { if (PRL_SUCCEEDED(nRetCode)) return (true); else WRITE_TRACE(DBG_FATAL, "Logoff operation failed with retcode: 0x%.8X '%s'",\ nRetCode, PRL_RESULT_TO_STRING(nRetCode)); } else WRITE_TRACE(DBG_FATAL, "Failed to extract return code from the job object"); } else WRITE_TRACE(DBG_FATAL, "Failed to wait logoff job"); return (false); }
void PrlNetworkShapingTest::DestroyVm() { SdkHandleWrap hJob(PrlVm_Delete(m_hVm, PRL_INVALID_HANDLE)); PrlJob_Wait(hJob, PRL_JOB_WAIT_TIMEOUT); }
int PrlSrv::print_statistics(const CmdParamData ¶m, PrlVm *vm) { PRL_RESULT ret; std::string err; if (param.list_all && !vm) { ret = update_vm_list(param.vmtype); if (PRL_FAILED(ret)) return ret; } if (!param.statistics.loop) s_evt = new CEventSyncObject(); const PrlHook *hHook = get_cleanup_ctx().register_hook(call_exit, NULL); if (param.action == SrvPerfStatsAction) { ret = PrlSrv_RegEventHandler(get_handle(), &perfstats_srv_callback, (void*)¶m); if (PRL_FAILED(ret)) return prl_err(ret, "PrlSrv_RegEventHandler returned the following error: %s", get_error_str(ret).c_str()); PrlHandle hJob(PrlSrv_SubscribeToPerfStats(get_handle(), param.statistics.filter.c_str())); if (PRL_FAILED(get_job_retcode_predefined(hJob.get_handle(), err))) return prl_err(ret, "PrlSrv_SubscribeToPerfStats returned the following error: %s", err.c_str()); } if (param.action == VmPerfStatsAction || param.list_all) { for (PrlVmList::iterator it = m_VmList.begin(), end = m_VmList.end(); it != end; ++it) { if (!param.list_all && (*it) != vm) continue; ret = PrlVm_RegEventHandler((*it)->get_handle(), &perfstats_vm_callback, (void*)¶m); if (PRL_FAILED(ret)) return prl_err(ret, "PrlVm_RegEventHandler returned the following error: %s", get_error_str(ret).c_str()); PrlHandle hJob(PrlVm_SubscribeToPerfStats((*it)->get_handle(), param.statistics.filter.c_str())); if (PRL_FAILED(get_job_retcode_predefined(hJob.get_handle(), err))) return prl_err(ret, "PrlVm_SubscribeToPerfStats returned the following error: %s", err.c_str()); if (s_evt) { s_evt->Wait(10000); s_evt->Reset(); PrlVm_UnregEventHandler((*it)->get_handle(), &perfstats_vm_callback, (void*)¶m); PrlHandle j(PrlVm_UnsubscribeFromPerfStats((*it)->get_handle())); get_job_retcode_predefined(j.get_handle(), err); } } } if (param.statistics.loop) { int ch = 0 ; while (ch!=0x0A && ch!=0x0D && ch!=0x03) { ch = _getch(); } fprintf(stdout, "\n"); } get_cleanup_ctx().unregister_hook(hHook); if (param.action == SrvPerfStatsAction) PrlSrv_UnregEventHandler(get_handle(), &perfstats_srv_callback, NULL); return 0; }