package org.ovirt.engine.core.dao;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VmDeviceId;
import org.ovirt.engine.core.common.businessentities.storage.DiskVmElement;
import org.ovirt.engine.core.compat.Guid;
public class DiskVmElementDaoTest extends BaseReadDaoTestCase<VmDeviceId, DiskVmElement, DiskVmElementDao>{
private static final int NUM_OF_DISKS_ATTACHED_TO_VM = 4;
private static final int NUM_OF_DISKS_PLUGGED_TO_VM = 3;
private static final Guid PLUGGED_DISK_ID = FixturesTool.LUN_DISK_ID;
private static final Guid UNPLUGGED_DISK_ID = FixturesTool.IMAGE_GROUP_ID_2;
@Test
public void testGetFilteredWithPermissions() {
DiskVmElement result = dao.get(getExistingEntityId(), PRIVILEGED_USER_ID, true);
assertNotNull(result);
assertEquals(getExistingEntityId().toString(), result.getId().toString());
}
@Test
public void testGetFilteredWithoutPermissions() {
DiskVmElement result = dao.get(getExistingEntityId(), UNPRIVILEGED_USER_ID, true);
assertNull(result);
}
@Test
public void testGetAllDiskElementsByDisksIds() {
List<DiskVmElement> vmElements = dao.getAllDiskVmElementsByDisksIds(Arrays.asList(
FixturesTool.DISK_ID, FixturesTool.DISK_ID_2, FixturesTool.BOOTABLE_DISK_ID));
assertEquals(vmElements.size(), 2);
}
@Test
public void testGetAllForVm() {
List<DiskVmElement> dves = dao.getAllForVm(FixturesTool.VM_RHEL5_POOL_57);
assertThat(dves.size(), is(NUM_OF_DISKS_ATTACHED_TO_VM));
}
@Test
public void testGetAllForVmWithPermissions() {
List<DiskVmElement> dves = dao.getAllForVm(FixturesTool.VM_RHEL5_POOL_57, PRIVILEGED_USER_ID, true);
assertThat(dves.size(), is(NUM_OF_DISKS_ATTACHED_TO_VM));
}
@Test
public void testGetAllForVmWithoutPermissions() {
List<DiskVmElement> dves = dao.getAllForVm(FixturesTool.VM_RHEL5_POOL_57, UNPRIVILEGED_USER_ID, true);
assertThat(dves.size(), is(0));
}
@Test
public void testGetAllPluggedToVm() {
List<DiskVmElement> dves = dao.getAllPluggedToVm(FixturesTool.VM_RHEL5_POOL_57);
assertThat(dves.size(), is(NUM_OF_DISKS_PLUGGED_TO_VM));
}
@Test
public void testVmElementDiskPluggedStatus() {
DiskVmElement dvePlugged = dao.get(new VmDeviceId(PLUGGED_DISK_ID, FixturesTool.VM_RHEL5_POOL_57));
assertTrue(dvePlugged.isPlugged());
}
@Test
public void testVmElementDiskLogicalName() {
DiskVmElement dveWithLogicalName = dao.get(new VmDeviceId(PLUGGED_DISK_ID, FixturesTool.VM_RHEL5_POOL_57));
assertEquals("logical_name", dveWithLogicalName.getLogicalName());
}
@Test
public void testVmElementDiskUnpluggedStatus() {
DiskVmElement dveUnplugged = dao.get(new VmDeviceId(UNPLUGGED_DISK_ID, FixturesTool.VM_RHEL5_POOL_57));
assertFalse(dveUnplugged.isPlugged());
}
@Test
public void testNUllVmElementForFloatingDisk() {
List<DiskVmElement> allDves = dao.getAll();
assertTrue(allDves.stream().noneMatch(dve -> dve.getDiskId().equals(FixturesTool.FLOATING_DISK_ID)));
}
@Test
public void testUpdateVmDeviceUsingScsiReservationProperty() {
DiskVmElement dve = dao.get(getExistingEntityId());
boolean usingScsiReservation = !dve.isUsingScsiReservation();
dve.setUsingScsiReservation(usingScsiReservation);
dao.update(dve);
DiskVmElement dveFromDb = dao.get(getExistingEntityId());
assertEquals(dveFromDb.isUsingScsiReservation(), usingScsiReservation);
}
@Override
protected VmDeviceId getExistingEntityId() {
return new VmDeviceId(PLUGGED_DISK_ID, FixturesTool.VM_RHEL5_POOL_57);
}
@Override
protected DiskVmElementDao prepareDao() {
return dbFacade.getDiskVmElementDao();
}
@Override
protected VmDeviceId generateNonExistingId() {
return new VmDeviceId(Guid.newGuid(), Guid.newGuid());
}
@Override
protected int getEntitiesTotalCount() {
return 5;
}
}