package org.ovirt.engine.api.restapi.resource; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; import org.junit.Test; import org.ovirt.engine.api.model.InstanceType; import org.ovirt.engine.core.common.action.AddVmTemplateParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.AsyncTaskStatus; import org.ovirt.engine.core.common.businessentities.AsyncTaskStatusEnum; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetVmTemplateParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; public class BackendInstanceTypesResourceTest extends BackendTemplatesBasedResourceTest<InstanceType, org.ovirt.engine.core.common.businessentities.InstanceType, BackendInstanceTypesResource> { public BackendInstanceTypesResourceTest() { super(new BackendInstanceTypesResource(), SearchType.InstanceType, "Instancetypes : "); } public void testAdd() throws Exception { setUpGetGraphicsExpectations(1); setUpGetBallooningExpectations(0, 0); setUpGetConsoleExpectations(0, 0); super.testAdd(); } @Override protected Response doAdd(InstanceType model) { return collection.add(model); } @Override protected InstanceType getRestModel(int index) { return getModel(index); } @Test public void testAddIncompleteParameters() throws Exception { InstanceType model = new InstanceType(); setUriInfo(setUpBasicUriExpectations()); try { collection.add(model); fail("expected WebApplicationException on incomplete parameters"); } catch (WebApplicationException wae) { verifyIncompleteException(wae, "InstanceType", "add", "name"); } } @Override protected org.ovirt.engine.core.common.businessentities.InstanceType getEntity(int index) { return setUpEntityExpectations(mock(VmTemplate.class), index); } static org.ovirt.engine.core.common.businessentities.InstanceType setUpEntityExpectations(VmTemplate entity, int index) { when(entity.getId()).thenReturn(GUIDS[index]); when(entity.getName()).thenReturn(NAMES[index]); when(entity.getDescription()).thenReturn(DESCRIPTIONS[index]); when(entity.getNumOfCpus()).thenReturn(8); when(entity.getNumOfSockets()).thenReturn(2); when(entity.getThreadsPerCpu()).thenReturn(1); when(entity.getCpuPerSocket()).thenReturn(4); when(entity.isBaseTemplate()).thenReturn(true); return entity; } static InstanceType getModel(int index) { InstanceType model = new InstanceType(); model.setName(NAMES[index]); model.setDescription(DESCRIPTIONS[index]); return model; } @Override protected List<InstanceType> getCollection() { return collection.list().getInstanceTypes(); } @Override protected void verifyModel(InstanceType model, int index) { super.verifyModel(model, index); verifyModelSpecific(model); } static void verifyModelSpecific(InstanceType model) { assertNotNull(model.getCpu()); assertNotNull(model.getCpu().getTopology()); assertEquals(4, model.getCpu().getTopology().getCores().intValue()); assertEquals(2, model.getCpu().getTopology().getSockets().intValue()); assertEquals(1, model.getCpu().getTopology().getThreads().intValue()); } @Override public void testQuery() throws Exception { setUpGetGraphicsExpectations(3); super.testQuery(); } @Override public void testList() throws Exception { setUpGetGraphicsExpectations(3); super.testList(); } @Override protected void setUpGetEntityExpectations(int index) throws Exception { setUpGetEntityExpectations(VdcQueryType.GetInstanceType, GetVmTemplateParameters.class, new String[] { "Id" }, new Object[] { GUIDS[index] }, getEntity(index)); } @Override protected void setUpCreationExpectations() { setUpCreationExpectations(VdcActionType.AddVmTemplate, AddVmTemplateParameters.class, new String[] { "Name", "Description" }, new Object[] { NAMES[0], DESCRIPTIONS[0] }, true, true, GUIDS[0], asList(GUIDS[2]), asList(new AsyncTaskStatus(AsyncTaskStatusEnum.finished)), VdcQueryType.GetInstanceType, GetVmTemplateParameters.class, new String[] { "Id" }, new Object[] { GUIDS[0] }, getEntity(0)); } }