void TestDspCmdDirVmClone::TestOnValidParams()
{
	QString sNewVmName = Uuid::createUuid().toString();

	CREATE_CORRECT_VM_CONFIG

	const char* emptyStr = "";
	CALL_CMD(m_pPveControl->DspCmdDirVmCreate(_vm_conf.toString().toUtf8().data(), const_cast<char*>(emptyStr)), PVE::DspCmdDirVmCreate)
	CResult _result = m_pHandler->GetResult();
	CHECK_RET_CODE(_result.getReturnCode())

	CALL_CMD(m_pPveControl->DspCmdDirVmClone(_vm_conf.getVmIdentification()->getVmUuid().toUtf8().data(),
			sNewVmName.toUtf8().data(), const_cast<char*>(emptyStr), 0), PVE::DspCmdDirVmClone)
	_result = m_pHandler->GetResult();
	CHECK_RET_CODE(_result.getReturnCode())

	CALL_CMD(m_pPveControl->DspCmdDirGetVmList(), PVE::DspCmdDirGetVmList)

	_result = m_pHandler->GetResult();
	CHECK_RET_CODE(_result.getReturnCode())
	for (size_t i = 0; i < (size_t)_result.GetParamsCount(); ++i)
	{
		CVmConfiguration _vm_conf(_result.GetParamToken(i));
		CHECK_RET_CODE(_vm_conf.m_uiRcInit)
		QVERIFY(_vm_conf.getVmIdentification());
		if (_vm_conf.getVmIdentification()->getVmName() == sNewVmName)
		{
			m_pVmCloneConfig = SmartPtr<CVmConfiguration>(new CVmConfiguration(_result.GetParamToken(i)));
			return;
		}
	}
	QFAIL("Clone VM config not found!");
}
void TestDspCmdDirVmClone::cleanup() {
	if (m_pVmConfig.isValid()) {
		CALL_CMD(m_pPveControl->DspCmdDirVmDelete(m_pVmConfig->getVmIdentification()->getVmUuid().toUtf8().data(),QStringList()), PVE::DspCmdDirVmDelete)
		m_pVmConfig = SmartPtr<CVmConfiguration>() ;

	}

	if (m_pVmCloneConfig.isValid()) {
		CALL_CMD(m_pPveControl->DspCmdDirVmDelete(m_pVmCloneConfig->getVmIdentification()->getVmUuid().toUtf8().data(),QStringList()), PVE::DspCmdDirVmDelete)
		m_pVmCloneConfig = SmartPtr<CVmConfiguration>() ;

	}
	Logoff();
	m_pPveControl->deleteLater();
	m_pPveControl = NULL;
}
void TestDspCmdDirGetVmList::Test()
{
	QSKIP("Skiping test due access rights do not accounting at test implementation", SkipAll);
   QVERIFY (m_pPveControl->GetState()==IOSender::Connected);
   CALL_CMD(m_pPveControl->DspCmdDirGetVmList(), PVE::DspCmdDirGetVmList)
   CResult _result=m_pHandler->GetResult();
   CHECK_RET_CODE(_result.getReturnCode())

   //=====================
   QList<QDomDocument> listResult;
   QVERIFY(getResultVmList(listResult, _result));

   QList<QDomDocument> listExpected;
   QVERIFY(getExpectedVmList(listExpected));

   if(listResult.size()!=listExpected.size())
   {  WRITE_TRACE(DBG_FATAL, "listResult.size()=[%d]; listExpected.size()=[%d]",
         listResult.size(), listExpected.size());
      QVERIFY(listResult.size()==listExpected.size());
   }

   for (int i=0; i<listExpected.size(); i++)
   {
      bool flgFound=false;
      SmartPtr<CVmConfiguration> pExpectedVm( new CVmConfiguration(listExpected[i].toString()) );
      for (int j=0; !flgFound && j<listResult.size(); j++)
      {
         SmartPtr<CVmConfiguration> pActualVm( new CVmConfiguration(listResult[j].toString()) );
         if (pActualVm->getVmIdentification()->getVmUuid() == pExpectedVm->getVmIdentification()->getVmUuid())
            flgFound=true;
      }
			if (!flgFound)
			{
				WRITE_TRACE(DBG_FATAL, "VM config not found: [%s]", pExpectedVm->toString().toUtf8().data());
				foreach(QDomDocument _doc, listResult)
					WRITE_TRACE(DBG_FATAL, "result VM config: [%s]", _doc.toString().toUtf8().data());
			}
      QVERIFY(flgFound);
   }
}