package org.ovirt.engine.api.restapi.resource;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.ws.rs.WebApplicationException;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.same;
import static org.easymock.EasyMock.expect;
import org.junit.Test;
import org.ovirt.engine.api.model.Host;
import org.ovirt.engine.api.model.Statistic;
import org.ovirt.engine.core.common.businessentities.VDS;
import static org.ovirt.engine.api.restapi.resource.BackendStatisticsResourceTest.getPrototype;
import static org.ovirt.engine.api.restapi.resource.BackendStatisticsResourceTest.verify;
import static org.ovirt.engine.api.restapi.resource.BackendStatisticsResourceTest.STATISTICS;
public class BackendStatisticResourceTest extends AbstractBackendSubResourceTest<Statistic, VDS, BackendStatisticResource<Host, VDS>> {
private static final String STATISTIC_ID = UUID.nameUUIDFromBytes(STATISTICS[1].getBytes()).toString();
private AbstractStatisticalQuery<Host, VDS> query;
public BackendStatisticResourceTest() {
super(new BackendStatisticResource<Host, VDS>(STATISTIC_ID, VDS.class, GUIDS[1], null));
}
@Override
protected void init() {
query = getQuery();
resource.setQuery(query);
}
@SuppressWarnings("unchecked")
private AbstractStatisticalQuery<Host, VDS> getQuery() {
return (AbstractStatisticalQuery<Host, VDS>)control.createMock(AbstractStatisticalQuery.class);
}
@Test
public void testGet() throws Exception {
setUriInfo(setUpBasicUriExpectations());
setUpQueryExpectations(STATISTICS, true);
Statistic statistic = resource.get();
verify(statistic, STATISTICS[1]);
verifyLinks(statistic);
}
@Test
public void testGetBadGuid() throws Exception {
setUriInfo(setUpBasicUriExpectations());
setUpQueryExpectations(new String[] {"cpu.burnout", "cpu.meltdown", "cpu.vapourized"}, false);
try {
resource.get();
fail("expected WebApplicationException");
} catch (WebApplicationException wae) {
verifyNotFoundException(wae);
}
}
private void setUpQueryExpectations(String[] names, boolean link) throws Exception {
VDS entity = getEntity(0);
expect(query.resolve(eq(GUIDS[1]))).andReturn(entity);
List<Statistic> statistics = new ArrayList<Statistic>();
for (String name : names) {
statistics.add(getPrototype(name));
}
expect(query.getStatistics(same(entity))).andReturn(statistics);
if (link) {
expect(query.getParentType()).andReturn(Host.class);
}
control.replay();
}
@Override
protected VDS getEntity(int index) {
VDS entity = control.createMock(VDS.class);
return entity;
}
}