package org.ovirt.engine.core.bll.hostdeploy;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import static org.ovirt.engine.core.bll.CommandAssertUtils.checkSucceeded;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.ovirt.engine.core.bll.AbstractQueryTest;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VDSType;
import org.ovirt.engine.core.common.config.ConfigValues;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.RpmVersion;
import org.ovirt.engine.core.dao.VdsDao;
@RunWith(MockitoJUnitRunner.class)
public class GetoVirtISOsTest extends AbstractQueryTest<IdQueryParameters, GetoVirtISOsQuery<IdQueryParameters>> {
private static final String AVAILABLE_OVIRT_ISO_VERSION = "RHEV Hypervisor - 6.2 - 20111010.0.el6";
private static final String UNAVAILABLE_OVIRT_ISO_VERSION = "RHEV Hypervisor - 8.2 - 20111010.0.el6";
@Mock
private VdsDao vdsDao;
@Test
public void testQueryWithHostId() {
Guid vdsId = Guid.newGuid();
VDS vds = new VDS();
vds.setId(vdsId);
vds.setVdsType(VDSType.oVirtVintageNode);
vds.setHostOs(AVAILABLE_OVIRT_ISO_VERSION);
when(vdsDao.get(any(Guid.class))).thenReturn(vds);
when(getQueryParameters().getId()).thenReturn(vdsId);
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@Test
public void testQueryClusterLevel() {
Guid vdsId = Guid.newGuid();
VDS vds = new VDS();
vds.setId(vdsId);
vds.setVdsType(VDSType.oVirtVintageNode);
vds.setHostOs(UNAVAILABLE_OVIRT_ISO_VERSION);
when(vdsDao.get(any(Guid.class))).thenReturn(vds);
when(getQueryParameters().getId()).thenReturn(vdsId);
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@Test
public void testQueryWithNonExistingHostId() {
when(getQueryParameters().getId()).thenReturn(Guid.newGuid());
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@Test
public void testQueryWithoutHostId() {
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@Test
public void testQueryMultiplePaths() {
mcr.mockConfigValue(ConfigValues.oVirtISOsRepositoryPath, "src/test/resources/ovirt-isos:src/test/resources/rhev-isos");
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@SuppressWarnings("unchecked")
@Test
public void testPrefixChange() {
mcr.mockConfigValue(ConfigValues.OvirtIsoPrefix, "a different prefix");
getQuery().setInternalExecution(true);
getQuery().executeCommand();
checkSucceeded(getQuery(), true);
checkReturnValueEmpty(getQuery());
}
@SuppressWarnings("unchecked")
private static void checkReturnValueEmpty(GetoVirtISOsQuery<IdQueryParameters> query) {
List<RpmVersion> isosList = query.getQueryReturnValue().getReturnValue();
assertTrue(isosList.isEmpty());
}
}