package org.ovirt.engine.core.dao;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.businessentities.VmBase;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.businessentities.storage.UnregisteredDisk;
import org.ovirt.engine.core.compat.Guid;
import org.springframework.util.StringUtils;
public class UnregisteredDisksDaoTest extends BaseDaoTestCase {
private UnregisteredDisksDao dao;
@Override
public void setUp() throws Exception {
super.setUp();
dao = dbFacade.getUnregisteredDisksDao();
}
@Test
public void testGetWithDiskId() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertTrue("Vms id should be empty list in the UnregisteredDisks table",
unregisteredDisk.get(0).getVms().isEmpty());
}
@Test
public void testGetWithNotExistingDiskId() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(Guid.newGuid(), FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should not exists in the UnregisteredDisks table", unregisteredDisk.isEmpty());
}
@Test
public void testGetDiskAttachedToVm() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK2, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertEquals("Disk should have one vm attached", 1, unregisteredDisk.get(0).getVms().size());
}
@Test
public void testGetDiskAttachedToMultipleVms() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK3, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertEquals("Disk should be attached to VM", 1, unregisteredDisk.get(0).getVms().size());
}
@Test
public void testGetDiskAttachedToMultipleVmsWithoutDescription() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK4, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertEquals("Disk should be attached to VM", 1, unregisteredDisk.get(0).getVms().size());
assertFalse("Disk should have disk alias", unregisteredDisk.get(0).getDiskImage().getDiskAlias().isEmpty());
assertTrue("Disk should have an empty disk description",
StringUtils.isEmpty(unregisteredDisk.get(0).getDiskImage().getDiskDescription()));
}
@Test
public void testGetDiskAttachedToMultipleVmsWithoutAliasAndDescription() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK5, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertEquals("Disk should be attached to VM", 1, unregisteredDisk.get(0).getVms().size());
assertTrue("Disk should have an empty disk alias", unregisteredDisk.get(0)
.getDiskAlias()
.isEmpty());
assertTrue("Disk should have an empty disk description",
StringUtils.isEmpty(unregisteredDisk.get(0).getDiskDescription()));
}
@Test
public void testGetDiskForAllStorageDomain() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK, null);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
assertTrue("Disk should exists in the UnregisteredDisks table", unregisteredDisk.get(0).getVms().isEmpty());
}
@Test
public void testGetAllDisksForStorageDomain() {
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(null, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !unregisteredDisk.isEmpty());
}
@Test
public void testDeleteUnregisteredDiskRelatedToVM() {
List<UnregisteredDisk> unregisteredDisk2 =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK2, FixturesTool.STORAGE_DOAMIN_NFS2_1);
List<UnregisteredDisk> unregisteredDisk3 =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK3, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table.", !unregisteredDisk2.isEmpty());
assertTrue("Disk should exists in the UnregisteredDisks table.", !unregisteredDisk3.isEmpty());
dao.removeUnregisteredDiskRelatedToVM(FixturesTool.VM_RHEL5_POOL_57, FixturesTool.STORAGE_DOAMIN_NFS2_1);
unregisteredDisk2 =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK2, FixturesTool.STORAGE_DOAMIN_NFS2_1);
unregisteredDisk3 =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK3, FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table.", unregisteredDisk2.isEmpty());
assertTrue("Disk should exists in the UnregisteredDisks table.", unregisteredDisk3.isEmpty());
}
@Test
public void testRemoveUnregisteredDiskRelatedToVM() {
dao.removeUnregisteredDisk(FixturesTool.UNREGISTERED_DISK, FixturesTool.STORAGE_DOAMIN_NFS2_1);
List<UnregisteredDisk> unregisteredDisk =
dao.getByDiskIdAndStorageDomainId(FixturesTool.UNREGISTERED_DISK, null);
assertTrue("Disk should not exists in the UnregisteredDisks table after being deleted.",
unregisteredDisk.isEmpty());
}
@Test
public void testSaveDiskWithAliasAndDescription() {
ArrayList<VmBase> vms = new ArrayList<>();
UnregisteredDisk unregisteredDisk = initUnregisteredDisks(vms);
dao.saveUnregisteredDisk(unregisteredDisk);
List<UnregisteredDisk> fetchedUnregisteredDisk =
dao.getByDiskIdAndStorageDomainId(unregisteredDisk.getId(),
FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !fetchedUnregisteredDisk.isEmpty());
assertTrue("Disk should not have multiple vms attached", fetchedUnregisteredDisk.get(0).getVms().isEmpty());
assertEquals("Disk alias should be the same as initialized", "Disk Alias", fetchedUnregisteredDisk.get(0).getDiskAlias());
assertEquals("Disk description should be the same as initialized", "Disk Description", fetchedUnregisteredDisk.get(0).getDiskDescription());
assertEquals("Storage Domain id should be the same as initialized", 0, fetchedUnregisteredDisk.get(0)
.getStorageDomainId()
.compareTo(FixturesTool.STORAGE_DOAMIN_NFS2_1));
}
private UnregisteredDisk initUnregisteredDisks(ArrayList<VmBase> vms) {
DiskImage diskImage = new DiskImage();
diskImage.setId(Guid.newGuid());
diskImage.setDiskAlias("Disk Alias");
diskImage.setDiskDescription("Disk Description");
diskImage.setStorageIds(new ArrayList<>(Collections.singletonList(FixturesTool.STORAGE_DOAMIN_NFS2_1)));
return new UnregisteredDisk(diskImage, vms);
}
@Test
public void testSaveAttachedDiskWithoutAliasAndDescription() {
VmBase vm1 = new VmBase();
vm1.setId(Guid.newGuid());
vm1.setName("First VM");
ArrayList<VmBase> vms = new ArrayList<>();
vms.add(vm1);
// Set new disk image.
DiskImage diskImage = new DiskImage();
diskImage.setId(Guid.newGuid());
diskImage.setStorageIds(new ArrayList<>(Collections.singletonList(FixturesTool.STORAGE_DOAMIN_NFS2_1)));
UnregisteredDisk unregDisk = new UnregisteredDisk(diskImage, vms);
dao.saveUnregisteredDisk(unregDisk);
List<UnregisteredDisk> fetchedUnregisteredDisk =
dao.getByDiskIdAndStorageDomainId(unregDisk.getId(), FixturesTool.STORAGE_DOAMIN_NFS2_1);
assertTrue("Disk should exists in the UnregisteredDisks table", !fetchedUnregisteredDisk.isEmpty());
assertEquals("Disk should have vm attached", 1, fetchedUnregisteredDisk.get(0).getVms().size());
assertTrue("Disk alias should not be initialized",
fetchedUnregisteredDisk.get(0).getDiskAlias().isEmpty());
assertTrue("Disk description should not be initialized",
StringUtils.isEmpty(fetchedUnregisteredDisk.get(0).getDiskDescription()));
assertEquals("Storage Domain id should be the same as initialized", 0, fetchedUnregisteredDisk.get(0)
.getStorageDomainId()
.compareTo(FixturesTool.STORAGE_DOAMIN_NFS2_1));
}
}