package org.ovirt.engine.core.bll.storage.pool;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.bll.BaseCommandTest;
import org.ovirt.engine.core.common.action.StoragePoolParametersBase;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
public class RemoveStoragePoolCommandTest extends BaseCommandTest {
private static RemoveStoragePoolCommand<StoragePoolParametersBase> createCommand(StoragePoolParametersBase param) {
return new RemoveStoragePoolCommand<>(param, null);
}
@Test
public void testEmptyDomainList() {
StoragePoolParametersBase param = new StoragePoolParametersBase();
RemoveStoragePoolCommand<StoragePoolParametersBase> cmd = createCommand(param);
List<StorageDomain> domainsList = new ArrayList<>();
List<StorageDomain> listReturned = cmd.getActiveOrLockedDomainList(domainsList);
assertTrue(listReturned.isEmpty());
}
/**
* Test when Active domain is in the Data Center
*/
@Test
public void testActiveDomainInList() {
StoragePoolParametersBase param = new StoragePoolParametersBase();
RemoveStoragePoolCommand<StoragePoolParametersBase> cmd = createCommand(param);
List<StorageDomain> domainsList = new ArrayList<>();
StorageDomain tempStorageDomains = new StorageDomain();
tempStorageDomains.setStatus(StorageDomainStatus.Active);
domainsList.add(tempStorageDomains);
List<StorageDomain> listReturned = cmd.getActiveOrLockedDomainList(domainsList);
assertTrue(!listReturned.isEmpty());
}
private void testBusyDomainInList(StorageDomainStatus status) {
StoragePoolParametersBase param = new StoragePoolParametersBase();
RemoveStoragePoolCommand<StoragePoolParametersBase> cmd = createCommand(param);
List<StorageDomain> domainsList = new ArrayList<>();
StorageDomain tempStorageDomains = new StorageDomain();
tempStorageDomains.setStatus(status);
domainsList.add(tempStorageDomains);
List<StorageDomain> listReturned = cmd.getActiveOrLockedDomainList(domainsList);
assertTrue(!listReturned.isEmpty());
}
/**
* Test removal with locked domain in the Data Center.
*/
@Test
public void testLockedDomainInList() {
testBusyDomainInList(StorageDomainStatus.Locked);
}
/**
* Test removal with moving to maintenance domain in the Data Center.
*/
@Test
public void testPreparingForMaintenanceDomainInList() {
testBusyDomainInList(StorageDomainStatus.PreparingForMaintenance);
}
private void testBusyAndActiveDomainInList(StorageDomainStatus status) {
StoragePoolParametersBase param = new StoragePoolParametersBase();
RemoveStoragePoolCommand<StoragePoolParametersBase> cmd = createCommand(param);
List<StorageDomain> domainsList = new ArrayList<>();
// Add first locked storage
StorageDomain tempStorageDomains = new StorageDomain();
tempStorageDomains.setStatus(status);
domainsList.add(tempStorageDomains);
// Add second active storage
tempStorageDomains.setStatus(StorageDomainStatus.Active);
domainsList.add(tempStorageDomains);
List<StorageDomain> listReturned = cmd.getActiveOrLockedDomainList(domainsList);
assertEquals(2, listReturned.size());
}
/**
* Test removal with locked and active domains in the Data Center.
*/
@Test
public void testLockedAndActiveDomainInList() {
testBusyAndActiveDomainInList(StorageDomainStatus.Locked);
}
/**
* Test removal with moving to maintenance and active domains in the Data Center.
*/
@Test
public void testPreparingForMaintenanceAndActiveDomainInList() {
testBusyAndActiveDomainInList(StorageDomainStatus.PreparingForMaintenance);
}
/**
* Test when there is in active domain.
*/
@Test
public void testInactiveDomainInList() {
StoragePoolParametersBase param = new StoragePoolParametersBase();
RemoveStoragePoolCommand<StoragePoolParametersBase> cmd = createCommand(param);
List<StorageDomain> domainsList = new ArrayList<>();
// Add first locked storage
StorageDomain tempStorageDomains = new StorageDomain();
tempStorageDomains.setStatus(StorageDomainStatus.Inactive);
domainsList.add(tempStorageDomains);
List<StorageDomain> listReturned = cmd.getActiveOrLockedDomainList(domainsList);
assertTrue(listReturned.isEmpty());
}
}