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);
}
Ejemplo n.º 5
0
int PrlSrv::print_statistics(const CmdParamData &param, 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*)&param);
		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*)&param);
			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*)&param);
				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;
}