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.QuotaStorageLimit; import org.ovirt.engine.api.model.QuotaStorageLimits; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.QuotaStorage; 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 BackendQuotaStorageLimitsResourceTest extends AbstractBackendBaseTest { private static final double STORAGE_SIZE_GB_USAGE = 20.0; private static final Long STORAGE_SIZE_GB = 10L; protected static final Guid QUOTA_ID = GUIDS[0]; protected static final Guid DATACENTER_ID = GUIDS[1]; protected static final Guid STORAGE_ID_1 = GUIDS[2]; protected static final Guid STORAGE_ID_2 = GUIDS[3]; protected BackendQuotaStorageLimitsResource collection; @Test public void testListGlobalLimit() throws Exception { Quota quota = getQuota(); quota.setGlobalQuotaStorage(getStorageGlobalCpuLimit()); setUpGetEntityExpectations(quota); QuotaStorageLimits storageLimits = collection.list(); assertStorageLimitsFound(storageLimits, 1); QuotaStorageLimit storageLimit = storageLimits.getQuotaStorageLimits().get(0); assertEquals(STORAGE_SIZE_GB, storageLimit.getLimit()); } @Test public void testListNonGlobalLimit() throws Exception { Quota quota = getQuota(); List<QuotaStorage> storageLimits = new LinkedList<>(); QuotaStorage storageLimit1 = new QuotaStorage(); storageLimit1.setStorageSizeGB(STORAGE_SIZE_GB); storageLimit1.setStorageId(STORAGE_ID_1); QuotaStorage storageLimit2 = new QuotaStorage(); storageLimit2.setStorageSizeGBUsage(STORAGE_SIZE_GB_USAGE); storageLimit2.setStorageId(STORAGE_ID_2); storageLimits.add(storageLimit1); storageLimits.add(storageLimit2); quota.setQuotaStorages(storageLimits); setUpGetEntityExpectations(quota); QuotaStorageLimits list = collection.list(); assertStorageLimitsFound(list, 2); for (QuotaStorageLimit storageLimit : list.getQuotaStorageLimits()) { if (storageLimit.getStorageDomain().getId().equals(STORAGE_ID_1.toString())) { assertEquals(STORAGE_SIZE_GB, storageLimit.getLimit()); } if (storageLimit.getStorageDomain().getId().equals(STORAGE_ID_2.toString())) { assertTrue(storageLimit.getUsage() == STORAGE_SIZE_GB_USAGE); } } } private void assertStorageLimitsFound(QuotaStorageLimits storageLimits, int resultsNum) { assertNotNull(storageLimits); assertNotNull(storageLimits.getQuotaStorageLimits()); assertEquals(storageLimits.getQuotaStorageLimits().size(), resultsNum); } private QuotaStorage getStorageGlobalCpuLimit() { QuotaStorage storageGlobalLimit = new QuotaStorage(); storageGlobalLimit.setQuotaId(GUIDS[0]); storageGlobalLimit.setStorageId(STORAGE_ID_1); storageGlobalLimit.setStorageSizeGB(STORAGE_SIZE_GB); return storageGlobalLimit; } 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 BackendQuotaStorageLimitsResource(QUOTA_ID); collection.setMappingLocator(mapperLocator); initBackendResource(collection); } }