package org.ovirt.engine.api.restapi.resource; import java.util.Collections; import java.util.List; import javax.ws.rs.core.UriInfo; import org.ovirt.engine.api.model.HostDevice; import org.ovirt.engine.api.restapi.utils.HexUtils; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public abstract class AbstractBackendHostDevicesResourceTest<R extends AbstractBackendResource<HostDevice, D>, D extends org.ovirt.engine.core.common.businessentities.HostDevice> extends AbstractBackendResourceTest<HostDevice, D> { protected static final Guid VM_ID = GUIDS[0]; protected static final Guid HOST_ID = GUIDS[1]; protected static final String DEVICE_NAME = "pci_0000_00_09_0"; protected static final String PARENT_NAME = "computer"; protected final R resource; protected AbstractBackendHostDevicesResourceTest(R resource) { this.resource = resource; } @Override protected void init() { initResource(resource); } protected void setUriInfo(UriInfo uriInfo) { resource.setUriInfo(uriInfo); } @Override protected D getEntity(int index) { D hostDevice = createDevice(); hostDevice.setHostId(HOST_ID); hostDevice.setDeviceName(DEVICE_NAME); hostDevice.setParentDeviceName(PARENT_NAME); hostDevice.setProductName(NAMES[index]); hostDevice.setVendorName(NAMES[index + 1]); hostDevice.setVmId(VM_ID); return hostDevice; } protected abstract D createDevice(); protected void setUpGetVmHostDevicesExpectations() { setUpEntityQueryExpectations( VdcQueryType.GetExtendedVmHostDevicesByVmId, IdQueryParameters.class, new String[] { "Id" }, new Object[] { VM_ID }, getHostDeviceCollection()); } protected List<D> getHostDeviceCollection() { return Collections.singletonList(getEntity(0)); } protected static void verifyHostDevices(List<HostDevice> devices) { assertEquals(1, devices.size()); verifyHostDevice(devices.get(0)); } protected static void verifyHostDevice(HostDevice device) { assertEquals(VM_ID.toString(), device.getVm().getId()); assertEquals(HOST_ID.toString(), device.getHost().getId()); assertEquals(DEVICE_NAME, device.getName()); assertEquals(DEVICE_NAME, HexUtils.hex2string(device.getId())); assertEquals(PARENT_NAME, HexUtils.hex2string(device.getParentDevice().getId())); assertEquals(NAMES[0], device.getProduct().getName()); assertEquals(NAMES[1], device.getVendor().getName()); } }