package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import java.util.ArrayList;
import org.junit.Ignore;
import org.junit.Test;
import org.ovirt.engine.api.model.Disk;
import org.ovirt.engine.api.model.Disks;
import org.ovirt.engine.core.common.businessentities.DiskImage;
import org.ovirt.engine.core.common.businessentities.DiskInterface;
import org.ovirt.engine.core.common.businessentities.DiskType;
import org.ovirt.engine.core.common.businessentities.ImageStatus;
import org.ovirt.engine.core.common.businessentities.PropagateErrors;
import org.ovirt.engine.core.common.businessentities.VolumeFormat;
import org.ovirt.engine.core.common.businessentities.VolumeType;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.compat.Guid;
import static org.easymock.classextension.EasyMock.expect;
@Ignore
public class AbstractBackendDisksResourceTest<T extends AbstractBackendReadOnlyDevicesResource<Disk, Disks, DiskImage>>
extends AbstractBackendCollectionResourceTest<Disk, DiskImage, T> {
protected final static Guid PARENT_ID = GUIDS[1];
protected VdcQueryType queryType;
protected VdcQueryParametersBase queryParams;
protected String queryIdName;
public AbstractBackendDisksResourceTest(T collection,
VdcQueryType queryType,
VdcQueryParametersBase queryParams,
String queryIdName) {
super(collection, null, "");
this.queryType = queryType;
this.queryParams = queryParams;
this.queryIdName = queryIdName;
}
@Test
@Ignore
public void testQuery() throws Exception {
// skip test inherited from base class as searching
// over DiskImages is unsupported by the backend
}
protected void setUpQueryExpectations(String query) throws Exception {
setUpEntityQueryExpectations(1);
control.replay();
}
protected void setUpQueryExpectations(String query, Object failure) throws Exception {
setUpEntityQueryExpectations(1, failure);
control.replay();
}
protected void setUpEntityQueryExpectations(int times) throws Exception {
setUpEntityQueryExpectations(times, null);
}
protected void setUpEntityQueryExpectations(int times, Object failure) throws Exception {
while (times-- > 0) {
setUpEntityQueryExpectations(queryType,
queryParams.getClass(),
new String[] { queryIdName },
new Object[] { PARENT_ID },
getEntityList(),
failure);
}
}
protected List<DiskImage> getEntityList() {
List<DiskImage> entities = new ArrayList<DiskImage>();
for (int i = 0; i < NAMES.length; i++) {
entities.add(getEntity(i));
}
return entities;
}
protected DiskImage getEntity(int index) {
return setUpEntityExpectations(control.createMock(DiskImage.class), index);
}
static DiskImage setUpEntityExpectations(DiskImage entity, int index) {
expect(entity.getId()).andReturn(GUIDS[index]).anyTimes();
expect(entity.getvm_snapshot_id()).andReturn(GUIDS[2]).anyTimes();
expect(entity.getvm_guid()).andReturn(PARENT_ID).anyTimes();
expect(entity.getvolume_format()).andReturn(VolumeFormat.RAW).anyTimes();
expect(entity.getdisk_interface()).andReturn(DiskInterface.VirtIO).anyTimes();
expect(entity.getdisk_type()).andReturn(DiskType.Data).anyTimes();
expect(entity.getimageStatus()).andReturn(ImageStatus.OK).anyTimes();
expect(entity.getvolume_type()).andReturn(VolumeType.Sparse).anyTimes();
expect(entity.getboot()).andReturn(false).anyTimes();
expect(entity.getpropagate_errors()).andReturn(PropagateErrors.On).anyTimes();
return setUpStatisticalEntityExpectations(entity);
}
static DiskImage setUpStatisticalEntityExpectations(DiskImage entity) {
expect(entity.getread_rate()).andReturn(1).anyTimes();
expect(entity.getwrite_rate()).andReturn(2).anyTimes();
return entity;
}
protected List<Disk> getCollection() {
return collection.list().getDisks();
}
static Disk getModel(int index) {
Disk model = new Disk();
model.setSparse(true);
model.setBootable(false);
model.setPropagateErrors(true);
return model;
}
protected void verifyModel(Disk model, int index) {
verifyModelSpecific(model, index);
verifyLinks(model);
}
static void verifyModelSpecific(Disk model, int index) {
assertEquals(GUIDS[index].toString(), model.getId());
assertTrue(model.isSetVm());
assertEquals(PARENT_ID.toString(), model.getVm().getId());
assertTrue(model.isSparse());
assertTrue(!model.isBootable());
assertTrue(model.isPropagateErrors());
}
}