|
16 | 16 | // under the License. |
17 | 17 | package com.cloud.resourcelimit; |
18 | 18 |
|
| 19 | +import static org.mockito.Mockito.mock; |
| 20 | +import static org.mockito.Mockito.when; |
| 21 | + |
19 | 22 | import java.lang.reflect.Field; |
20 | 23 | import java.util.ArrayList; |
21 | 24 | import java.util.Arrays; |
| 25 | +import java.util.EnumSet; |
22 | 26 | import java.util.HashMap; |
23 | 27 | import java.util.List; |
24 | 28 | import java.util.Map; |
25 | 29 |
|
26 | | -import com.cloud.event.ActionEventUtils; |
27 | | -import com.cloud.event.EventTypes; |
28 | | -import com.cloud.utils.db.EntityManager; |
29 | | - |
30 | 30 | import org.apache.cloudstack.api.ApiCommandResourceType; |
31 | 31 | import org.apache.cloudstack.api.response.AccountResponse; |
32 | 32 | import org.apache.cloudstack.api.response.DomainResponse; |
|
61 | 61 | import com.cloud.domain.Domain; |
62 | 62 | import com.cloud.domain.DomainVO; |
63 | 63 | import com.cloud.domain.dao.DomainDao; |
| 64 | +import com.cloud.event.ActionEventUtils; |
| 65 | +import com.cloud.event.EventTypes; |
64 | 66 | import com.cloud.exception.ResourceAllocationException; |
65 | 67 | import com.cloud.offering.DiskOffering; |
66 | 68 | import com.cloud.offering.ServiceOffering; |
|
74 | 76 | import com.cloud.storage.dao.VolumeDao; |
75 | 77 | import com.cloud.template.VirtualMachineTemplate; |
76 | 78 | import com.cloud.user.Account; |
77 | | -import com.cloud.user.User; |
78 | 79 | import com.cloud.user.AccountManager; |
79 | 80 | import com.cloud.user.AccountVO; |
80 | 81 | import com.cloud.user.ResourceLimitService; |
| 82 | +import com.cloud.user.User; |
81 | 83 | import com.cloud.user.dao.AccountDao; |
82 | 84 | import com.cloud.utils.Pair; |
| 85 | +import com.cloud.utils.db.EntityManager; |
83 | 86 | import com.cloud.vm.VirtualMachine; |
84 | 87 | import com.cloud.vm.VirtualMachineManager; |
85 | 88 | import com.cloud.vm.dao.UserVmDao; |
86 | 89 | import com.cloud.vm.dao.VMInstanceDao; |
87 | 90 | import com.cloud.vpc.MockResourceLimitManagerImpl; |
88 | 91 |
|
89 | | -import static org.mockito.Mockito.mock; |
90 | | -import static org.mockito.Mockito.when; |
91 | | - |
92 | 92 | @RunWith(MockitoJUnitRunner.class) |
93 | 93 | public class ResourceLimitManagerImplTest { |
94 | 94 | private Logger logger = LogManager.getLogger(ResourceLimitManagerImplTest.class); |
@@ -1393,4 +1393,53 @@ public void testUpdateResourceLimitForDomain() { |
1393 | 1393 | domainId, ApiCommandResourceType.Domain.toString())); |
1394 | 1394 | } |
1395 | 1395 | } |
| 1396 | + |
| 1397 | + @Test |
| 1398 | + public void consolidatedResourceLimitsForAllResourceTypesWithAccountId() { |
| 1399 | + Long accountId = 1L; |
| 1400 | + Long domainId = null; |
| 1401 | + List<ResourceLimitVO> foundLimits = new ArrayList<>(); |
| 1402 | + ResourceLimitVO limit = new ResourceLimitVO(Resource.ResourceType.cpu, 10L, accountId, Resource.ResourceOwnerType.Account); |
| 1403 | + foundLimits.add(limit); |
| 1404 | + |
| 1405 | + Mockito.when(accountManager.getAccount(accountId)).thenReturn(Mockito.mock(Account.class)); |
| 1406 | + Mockito.doReturn(20L).when(resourceLimitManager).findCorrectResourceLimitForAccount(Mockito.any(Account.class), Mockito.any(Resource.ResourceType.class), Mockito.isNull()); |
| 1407 | + |
| 1408 | + List<ResourceLimitVO> result = resourceLimitManager.getConsolidatedResourceLimitsForAllResourceTypes(accountId, domainId, foundLimits, true); |
| 1409 | + |
| 1410 | + Assert.assertEquals(1, result.size()); |
| 1411 | + Assert.assertEquals(limit, result.get(0)); |
| 1412 | + } |
| 1413 | + |
| 1414 | + @Test |
| 1415 | + public void consolidatedResourceLimitsForAllResourceTypesWithDomainId() { |
| 1416 | + Long accountId = null; |
| 1417 | + Long domainId = 1L; |
| 1418 | + List<ResourceLimitVO> foundLimits = new ArrayList<>(); |
| 1419 | + ResourceLimitVO limit = new ResourceLimitVO(Resource.ResourceType.memory, 15L, domainId, Resource.ResourceOwnerType.Domain); |
| 1420 | + foundLimits.add(limit); |
| 1421 | + |
| 1422 | + Mockito.when(domainDao.findById(domainId)).thenReturn(Mockito.mock(DomainVO.class)); |
| 1423 | + Mockito.doReturn(30L).when(resourceLimitManager).findCorrectResourceLimitForDomain(Mockito.any(Domain.class), Mockito.any(Resource.ResourceType.class), Mockito.isNull()); |
| 1424 | + |
| 1425 | + List<ResourceLimitVO> result = resourceLimitManager.getConsolidatedResourceLimitsForAllResourceTypes(accountId, domainId, foundLimits, false); |
| 1426 | + |
| 1427 | + Assert.assertEquals(EnumSet.allOf(Resource.ResourceType.class).size(), result.size()); |
| 1428 | + Assert.assertTrue(result.contains(limit)); |
| 1429 | + } |
| 1430 | + |
| 1431 | + @Test |
| 1432 | + public void consolidatedResourceLimitsForAllResourceTypesWithEmptyFoundLimits() { |
| 1433 | + Long accountId = 1L; |
| 1434 | + Long domainId = null; |
| 1435 | + List<ResourceLimitVO> foundLimits = new ArrayList<>(); |
| 1436 | + |
| 1437 | + Mockito.when(accountManager.getAccount(accountId)).thenReturn(Mockito.mock(Account.class)); |
| 1438 | + Mockito.doReturn(25L).when(resourceLimitManager).findCorrectResourceLimitForAccount(Mockito.any(Account.class), Mockito.any(Resource.ResourceType.class), Mockito.isNull()); |
| 1439 | + |
| 1440 | + List<ResourceLimitVO> result = resourceLimitManager.getConsolidatedResourceLimitsForAllResourceTypes(accountId, domainId, foundLimits, true); |
| 1441 | + |
| 1442 | + Assert.assertEquals(EnumSet.allOf(Resource.ResourceType.class).size(), result.size()); |
| 1443 | + Assert.assertEquals(25L, result.get(0).getMax().longValue()); |
| 1444 | + } |
1396 | 1445 | } |
0 commit comments