package org.ovirt.engine.api.restapi.types; import static org.ovirt.engine.api.restapi.types.MappingTestHelper.populate; import org.junit.Test; import org.ovirt.engine.api.model.Disk; import org.ovirt.engine.api.model.DiskFormat; import org.ovirt.engine.api.model.DiskStatus; import org.ovirt.engine.api.model.DiskStorageType; import org.ovirt.engine.api.model.ScsiGenericIO; import org.ovirt.engine.core.common.businessentities.storage.DiskImage; public class DiskMapperTest extends AbstractInvertibleMappingTest<Disk, DiskImage, DiskImage> { public DiskMapperTest() { super(Disk.class, DiskImage.class, DiskImage.class); } @Override protected Disk postPopulate(Disk model) { model.setFormat(MappingTestHelper.shuffle(DiskFormat.class)); model.setSgio(MappingTestHelper.shuffle(ScsiGenericIO.class)); model.setStatus(MappingTestHelper.shuffle(DiskStatus.class)); model.setLunStorage(null); return model; } @Override protected void verify(Disk model, Disk transform) { assertNotNull(transform); assertEquals(model.getId(), transform.getId()); assertEquals(model.getImageId(), transform.getImageId()); assertEquals(model.getFormat(), transform.getFormat()); assertEquals(model.getDescription(), transform.getDescription()); assertEquals(model.getLogicalName(), transform.getLogicalName()); assertEquals(model.getOpenstackVolumeType().getName(), transform.getOpenstackVolumeType().getName()); assertNotNull(model.getSnapshot()); assertEquals(model.getSnapshot().getId(), transform.getSnapshot().getId()); assertEquals("unexpected status", model.getStatus(), transform.getStatus()); assertEquals("unexpected sparse", model.isSparse(), transform.isSparse()); assertEquals("unexpected propagate errors", model.isPropagateErrors(), transform.isPropagateErrors()); assertEquals("unexpected wipe after delete", model.isWipeAfterDelete(), transform.isWipeAfterDelete()); assertEquals("unexpected shareable", model.isShareable(), transform.isShareable()); } @Test @Override public void testRoundtrip() throws Exception { setUpConfigExpectations(); Disk model = Disk.class.cast(populate(Disk.class)); model = postPopulate(model); Mapper<Disk, org.ovirt.engine.core.common.businessentities.storage.Disk> out = getMappingLocator().getMapper(Disk.class, org.ovirt.engine.core.common.businessentities.storage.Disk.class); Mapper<org.ovirt.engine.core.common.businessentities.storage.Disk, Disk> back = getMappingLocator().getMapper(org.ovirt.engine.core.common.businessentities.storage.Disk.class, Disk.class); DiskImage to = (DiskImage) out.map(model, null); DiskImage inverse = getInverse(to); Disk transform = back.map(inverse, null); verify(model, transform); } @Test public void testInitialSize() { Long initalSize = 54321L; Disk model = new Disk(); model.setStorageType(DiskStorageType.IMAGE); model.setInitialSize(initalSize); DiskImage entity = (DiskImage) DiskMapper.map(model, null); assertEquals("ActualSizeInBytes doesn't match the initial size as expected", initalSize.longValue(), entity.getActualSizeInBytes()); model = DiskMapper.map(entity, null); assertNull("initial size shouldn't be mapped back to the model", model.getInitialSize()); } }