package org.ovirt.engine.api.restapi.resource; import java.util.LinkedList; import java.util.List; import org.junit.Test; import org.ovirt.engine.api.model.QuotaClusterLimit; import org.ovirt.engine.api.model.QuotaClusterLimits; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.QuotaCluster; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; public class BackendQuotaClusterLimitsResourceTest extends AbstractBackendBaseTest { private static final int CPU_NUMBER = 40; private static final int VIRTUAL_CPU_USAGE = 70; protected static final Guid QUOTA_ID = GUIDS[0]; protected static final Guid DATACENTER_ID = GUIDS[1]; protected static final Guid CLUSTER_ID_1 = GUIDS[2]; protected static final Guid CLUSTER_ID_2 = GUIDS[3]; protected BackendQuotaClusterLimitsResource collection; @Test public void testListGlobalLimit() throws Exception { Quota quota = getQuota(); quota.setGlobalQuotaCluster(getClusterGlobalCpuLimit()); setUpGetEntityExpectations(quota); QuotaClusterLimits clusterLimits = collection.list(); assertClusterLimitsFound(clusterLimits, 1); QuotaClusterLimit clusterLimit = clusterLimits.getQuotaClusterLimits().get(0); assertEquals(20, clusterLimit.getVcpuLimit().intValue()); } @Test public void testListNonGlobalLimit() throws Exception { Quota quota = getQuota(); List<QuotaCluster> clusterLimits = new LinkedList<>(); QuotaCluster clusterLimit1 = new QuotaCluster(); clusterLimit1.setVirtualCpu(CPU_NUMBER); clusterLimit1.setClusterId(CLUSTER_ID_1); QuotaCluster clusterLimit2 = new QuotaCluster(); clusterLimit2.setVirtualCpuUsage(VIRTUAL_CPU_USAGE); clusterLimit2.setClusterId(CLUSTER_ID_2); clusterLimits.add(clusterLimit1); clusterLimits.add(clusterLimit2); quota.setQuotaClusters(clusterLimits); setUpGetEntityExpectations(quota); QuotaClusterLimits list = collection.list(); assertClusterLimitsFound(list, 2); for (QuotaClusterLimit clusterLimit: list.getQuotaClusterLimits()) { if (clusterLimit.getCluster().getId().equals(CLUSTER_ID_1.toString())) { assertEquals(CPU_NUMBER, clusterLimit.getVcpuLimit().longValue()); } if (clusterLimit.getCluster().getId().equals(CLUSTER_ID_2.toString())) { assertTrue(clusterLimit.getVcpuUsage() == VIRTUAL_CPU_USAGE); } } } private void assertClusterLimitsFound(QuotaClusterLimits clusterLimits, int resultsNum) { assertNotNull(clusterLimits); assertNotNull(clusterLimits.getQuotaClusterLimits()); assertEquals(clusterLimits.getQuotaClusterLimits().size(), resultsNum); } private QuotaCluster getClusterGlobalCpuLimit() { QuotaCluster clusterGlobalLimit = new QuotaCluster(); clusterGlobalLimit.setQuotaId(GUIDS[0]); clusterGlobalLimit.setClusterId(CLUSTER_ID_1); clusterGlobalLimit.setVirtualCpu(20); return clusterGlobalLimit; } protected org.ovirt.engine.core.common.businessentities.Quota getQuota() { org.ovirt.engine.core.common.businessentities.Quota quota = new org.ovirt.engine.core.common.businessentities.Quota(); quota.setId(QUOTA_ID); quota.setStoragePoolId(DATACENTER_ID); return quota; } private void setUpGetEntityExpectations(Quota quota) throws Exception { setUpGetEntityExpectations(VdcQueryType.GetQuotaByQuotaId, IdQueryParameters.class, new String[] { "Id" }, new Object[] { QUOTA_ID }, quota); } @Override protected void init() { collection = new BackendQuotaClusterLimitsResource(QUOTA_ID); collection.setMappingLocator(mapperLocator); initBackendResource(collection); } }