2525import java .util .List ;
2626import java .util .Map ;
2727
28+ import org .apache .cloudstack .framework .config .ConfigKey ;
29+ import org .apache .cloudstack .framework .config .impl .ConfigDepotImpl ;
2830import org .apache .cloudstack .quota .activationrule .presetvariables .Domain ;
2931import org .apache .cloudstack .quota .activationrule .presetvariables .GenericPresetVariable ;
3032import org .apache .cloudstack .quota .activationrule .presetvariables .PresetVariableHelper ;
3133import org .apache .cloudstack .quota .activationrule .presetvariables .PresetVariables ;
3234import org .apache .cloudstack .quota .activationrule .presetvariables .Tariff ;
3335import org .apache .cloudstack .quota .activationrule .presetvariables .Value ;
36+ import org .apache .cloudstack .quota .constant .QuotaConfig ;
3437import org .apache .cloudstack .quota .constant .QuotaTypes ;
3538import org .apache .cloudstack .quota .dao .QuotaTariffDao ;
3639import org .apache .cloudstack .quota .dao .QuotaUsageDao ;
3740import org .apache .cloudstack .quota .vo .QuotaTariffVO ;
3841import org .apache .cloudstack .quota .vo .QuotaUsageVO ;
42+ import org .apache .cloudstack .usage .UsageTypes ;
3943import org .apache .cloudstack .usage .UsageUnitTypes ;
4044import org .apache .cloudstack .utils .bytescale .ByteScaleUtils ;
4145import org .apache .cloudstack .utils .jsinterpreter .JsInterpreter ;
46+ import org .junit .After ;
4247import org .junit .Assert ;
48+ import org .junit .Before ;
4349import org .junit .Test ;
4450import org .junit .runner .RunWith ;
4551import org .mockito .InjectMocks ;
@@ -89,8 +95,21 @@ public class QuotaManagerImplTest {
8995 @ Mock
9096 PresetVariables presetVariablesMock ;
9197
98+ @ Mock
99+ ConfigDepotImpl configDepotImplMock ;
100+
92101 SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss" );
93102
103+ @ Before
104+ public void setup () {
105+ ConfigKey .init (configDepotImplMock );
106+ }
107+
108+ @ After
109+ public void tearDown () {
110+ ConfigKey .init (null );
111+ }
112+
94113 @ Test
95114 public void isLockableTestValidateAccountTypes () {
96115 List <Account .Type > lockablesAccountTypes = Arrays .asList (Account .Type .NORMAL , Account .Type .DOMAIN_ADMIN );
@@ -107,6 +126,49 @@ public void isLockableTestValidateAccountTypes() {
107126 });
108127 }
109128
129+ @ Test
130+ public void shouldCalculateUsageRecordTestQuotaIsDisabledForAccountReturnFalse () {
131+ Mockito .doReturn (1L ).when (accountVoMock ).getAccountId ();
132+ Mockito .doReturn ("false" ).when (configDepotImplMock ).getConfigStringValue (Mockito .eq (QuotaConfig .QuotaAccountEnabled .key ()), Mockito .eq (ConfigKey .Scope .Account ),
133+ Mockito .eq (1L ));
134+
135+ boolean result = quotaManagerImplSpy .shouldCalculateUsageRecord (accountVoMock , usageVoMock );
136+
137+ Assert .assertFalse (result );
138+ }
139+
140+ @ Test
141+ public void shouldCalculateUsageRecordTestQuotaIsEnabledForAccountAndUsageRecordIsVolumeWithVmInstanceIdReturnFalse () {
142+ Mockito .doReturn (1L ).when (accountVoMock ).getAccountId ();
143+ Mockito .doReturn (UsageTypes .VOLUME ).when (usageVoMock ).getUsageType ();
144+ Mockito .doReturn (1L ).when (usageVoMock ).getVmInstanceId ();
145+
146+ boolean result = quotaManagerImplSpy .shouldCalculateUsageRecord (accountVoMock , usageVoMock );
147+
148+ Assert .assertFalse (result );
149+ }
150+
151+ @ Test
152+ public void shouldCalculateUsageRecordTestQuotaIsEnabledForAccountAndUsageRecordIsVolumeWithoutVmInstanceIdReturnTrue () {
153+ Mockito .doReturn (1L ).when (accountVoMock ).getAccountId ();
154+ Mockito .doReturn (UsageTypes .VOLUME ).when (usageVoMock ).getUsageType ();
155+ Mockito .doReturn (null ).when (usageVoMock ).getVmInstanceId ();
156+
157+ boolean result = quotaManagerImplSpy .shouldCalculateUsageRecord (accountVoMock , usageVoMock );
158+
159+ Assert .assertTrue (result );
160+ }
161+
162+ @ Test
163+ public void shouldCalculateUsageRecordTestQuotaIsEnabledForAccountAndUsageRecordIsNotVolumeReturnTrue () {
164+ Mockito .doReturn (1L ).when (accountVoMock ).getAccountId ();
165+ Mockito .doReturn (UsageTypes .RUNNING_VM ).when (usageVoMock ).getUsageType ();
166+
167+ boolean result = quotaManagerImplSpy .shouldCalculateUsageRecord (accountVoMock , usageVoMock );
168+
169+ Assert .assertTrue (result );
170+ }
171+
110172 @ Test
111173 public void getPendingUsageRecordsForQuotaAggregationTestNullListReturnNull () {
112174 Mockito .doReturn (pairMock ).when (usageDaoMock ).listUsageRecordsPendingForQuotaAggregation (Mockito .anyLong (), Mockito .anyLong ());
0 commit comments