package org.ovirt.engine.core.bll.memory.sdfilters;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import java.util.LinkedList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.bll.ValidationResult;
import org.ovirt.engine.core.bll.memory.MemoryStorageHandler;
import org.ovirt.engine.core.bll.validator.storage.StorageDomainValidator;
import org.ovirt.engine.core.common.businessentities.StorageDomain;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.compat.Guid;
@RunWith(MockitoJUnitRunner.class)
public class StorageDomainSpaceRequirementsFilterTest {
private StorageDomainSpaceRequirementsFilter filter;
@Mock
private StorageDomainValidator storageDomainValidator;
private StorageDomain storageDomain;
private List<DiskImage> memoryDisks;
@Before
public void setUp() {
storageDomain = new StorageDomain();
storageDomain.setId(Guid.newGuid());
memoryDisks = new LinkedList<>();
initFilter();
}
@Test
public void testStorageDomainForMemoryIsValid() {
assertTrue(filter.test(storageDomain));
}
@Test
public void testStorageDomainForMemoryIsNotValidWhenItHasLowSpace() {
when(storageDomainValidator.isDomainWithinThresholds())
.thenReturn(new ValidationResult(EngineMessage.ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN));
assertFalse(filter.test(storageDomain));
}
@Test
public void testStorageDomainForMemoryIsNotValidWhenItHasNoSpaceForClonedDisks() {
when(storageDomainValidator.hasSpaceForClonedDisks(memoryDisks))
.thenReturn(new ValidationResult(EngineMessage.ACTION_TYPE_FAILED_DISK_SPACE_LOW_ON_STORAGE_DOMAIN));
assertFalse(filter.test(storageDomain));
}
private void initFilter() {
filter = spy(new StorageDomainSpaceRequirementsFilter(mock(MemoryStorageHandler.class), memoryDisks));
doReturn(storageDomainValidator).when(filter).getStorageDomainValidator(storageDomain);
}
}