package org.ovirt.engine.core.bll;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.powermock.api.mockito.PowerMockito.mock;
import static org.powermock.api.mockito.PowerMockito.when;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.core.bll.interfaces.BackendInternal;
import org.ovirt.engine.core.common.action.ImportVmParameters;
import org.ovirt.engine.core.common.businessentities.StorageDomainType;
import org.ovirt.engine.core.common.businessentities.VDSGroup;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.businessentities.VmTemplate;
import org.ovirt.engine.core.common.businessentities.storage_domains;
import org.ovirt.engine.core.common.businessentities.storage_pool;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.NGuid;
import org.ovirt.engine.core.compat.Version;
import org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO;
import org.ovirt.engine.core.dao.StorageDomainDAO;
import org.ovirt.engine.core.dao.StorageDomainStaticDAO;
import org.ovirt.engine.core.dao.VdsGroupDAO;
import org.ovirt.engine.core.dao.VmDAO;
import org.ovirt.engine.core.dao.VmStaticDAO;
import org.ovirt.engine.core.dao.VmStatisticsDAO;
import org.ovirt.engine.core.dao.VmTemplateDAO;
public class TestHelperImportVmCommand extends ImportVmCommand<ImportVmParameters> {
private static final long serialVersionUID = 1L;
public TestHelperImportVmCommand(final ImportVmParameters p) {
super(p);
}
@Override
public boolean IsDomainActive(final Guid g1, final NGuid g2) {
return true;
}
@Override
protected BusinessEntitySnapshotDAO getBusinessEntitySnapshotDAO() {
return null;
}
@Override
protected boolean CheckTemplateInStorageDomain() {
return true;
}
@Override
protected VmDAO getVmDAO() {
final VmDAO d = mock(VmDAO.class);
when(d.get(any(Guid.class))).thenReturn(null);
return d;
}
@Override
public VmStaticDAO getVmStaticDAO() {
final VmStaticDAO d = mock(VmStaticDAO.class);
when(d.get(any(Guid.class))).thenReturn(null);
return d;
}
@Override
protected VmStatisticsDAO getVmStatisticsDAO() {
final VmStatisticsDAO d = mock(VmStatisticsDAO.class);
when(d.get(any(Guid.class))).thenReturn(null);
return d;
}
@Override
public storage_pool getStoragePool() {
return new storage_pool();
}
@Override
protected VdsGroupDAO getVdsGroupDAO() {
VdsGroupDAO d = mock(VdsGroupDAO.class);
List<VDSGroup> list = new ArrayList<VDSGroup>();
VDSGroup g = new VDSGroup();
g.setID(getParameters().getVdsGroupId());
Version v = new Version("2.2");
g.setcompatibility_version(v);
list.add(g);
when(d.getAllForStoragePool(any(Guid.class))).thenReturn(list);
when(d.get(any(Guid.class))).thenReturn(g);
return d;
}
@Override
public StorageDomainDAO getStorageDomainDAO() {
final storage_domains sd = new storage_domains();
sd.setstorage_domain_type(StorageDomainType.ImportExport);
final StorageDomainDAO d = mock(StorageDomainDAO.class);
when(d.getForStoragePool(any(Guid.class), any(Guid.class))).thenReturn(sd);
return d;
}
@Override
protected StorageDomainStaticDAO getStorageDomainStaticDAO() {
StorageDomainStaticDAO d = mock(StorageDomainStaticDAO.class);
return d;
}
@Override
public storage_domains getStorageDomain() {
storage_domains sd = new storage_domains();
sd.setavailable_disk_size(10);
return sd;
}
@Override
public BackendInternal getBackend() {
BackendInternal backend = mock(BackendInternal.class);
when(backend.runInternalQuery(eq(VdcQueryType.GetVmsFromExportDomain), any(VdcQueryParametersBase.class))).thenReturn(createVmQueryResult());
when(backend.runInternalQuery(eq(VdcQueryType.IsVmWithSameNameExist), any(VdcQueryParametersBase.class))).thenReturn(createDuplicateResult());
return backend;
}
@Override
public VmTemplateDAO getVmTemplateDAO() {
VmTemplateDAO d = mock(VmTemplateDAO.class);
when(d.get(any(Guid.class))).thenReturn(new VmTemplate());
return d;
}
private VdcQueryReturnValue createVmQueryResult() {
final VdcQueryReturnValue v = new VdcQueryReturnValue();
List<VM> list = new ArrayList<VM>();
list.add(createVM());
v.setReturnValue(list);
v.setSucceeded(true);
return v;
}
private VdcQueryReturnValue createDuplicateResult() {
final VdcQueryReturnValue v = new VdcQueryReturnValue();
v.setReturnValue(Boolean.FALSE);
v.setSucceeded(true);
return v;
}
protected VM createVM() {
final VM v = new VM();
v.setvm_guid(getParameters().getVm().getvm_guid());
v.setDiskSize(2);
return v;
}
}