mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-8592: adding more test, fine tuning 0 quota conditions.
This commit is contained in:
parent
3102dbc59f
commit
625406b48f
|
|
@ -140,7 +140,6 @@ public class QuotaAlertManagerImpl extends ManagerBase implements QuotaAlertMana
|
|||
|
||||
@Override
|
||||
public void checkAndSendQuotaAlertEmails() {
|
||||
s_logger.info("Running checkAndSendQuotaAlertEmails");
|
||||
List<DeferredQuotaEmail> deferredQuotaEmailList = new ArrayList<DeferredQuotaEmail>();
|
||||
final BigDecimal zeroBalance = new BigDecimal(0);
|
||||
for (final QuotaAccountVO quotaAccount : _quotaAcc.listAllQuotaAccount()) {
|
||||
|
|
@ -153,20 +152,22 @@ public class QuotaAlertManagerImpl extends ManagerBase implements QuotaAlertMana
|
|||
if (accountBalance != null) {
|
||||
AccountVO account = _accountDao.findById(quotaAccount.getId());
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Check id " + account.getId() + " bal=" + accountBalance + " alertDate" + alertDate + " current date" + new Date());
|
||||
s_logger.debug("checkAndSendQuotaAlertEmails: Check id=" + account.getId() + " bal=" + accountBalance + ", alertDate=" + alertDate + ", lockable=" + lockable);
|
||||
}
|
||||
if (accountBalance.compareTo(zeroBalance) < 0) {
|
||||
if (_lockAccountEnforcement && (lockable == 1)) {
|
||||
if (account.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
||||
s_logger.info("Locking account " + account.getAccountName() + " due to quota exhasuted.");
|
||||
s_logger.info("Locking account " + account.getAccountName() + " due to quota < 0.");
|
||||
lockAccount(account.getId());
|
||||
}
|
||||
}
|
||||
if (alertDate == null || (balanceDate.after(alertDate) && getDifferenceDays(alertDate, new Date()) > 1)) {
|
||||
s_logger.info("Sending alert " + account.getAccountName() + " due to quota < 0.");
|
||||
deferredQuotaEmailList.add(new DeferredQuotaEmail(account, quotaAccount, QuotaConfig.QuotaEmailTemplateTypes.QUOTA_EMPTY));
|
||||
}
|
||||
} else if (accountBalance.compareTo(thresholdBalance) < 0) {
|
||||
} else if (accountBalance.compareTo(thresholdBalance) <= 0) {
|
||||
if (alertDate == null || (balanceDate.after(alertDate) && getDifferenceDays(alertDate, new Date()) > 1)) {
|
||||
s_logger.info("Sending alert " + account.getAccountName() + " due to quota below threshold.");
|
||||
deferredQuotaEmailList.add(new DeferredQuotaEmail(account, quotaAccount, QuotaConfig.QuotaEmailTemplateTypes.QUOTA_LOW));
|
||||
}
|
||||
}
|
||||
|
|
@ -175,7 +176,7 @@ public class QuotaAlertManagerImpl extends ManagerBase implements QuotaAlertMana
|
|||
|
||||
for (DeferredQuotaEmail emailToBeSent : deferredQuotaEmailList) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Attempting to send quota alert email to users of account: " + emailToBeSent.getAccount().getAccountName());
|
||||
s_logger.debug("checkAndSendQuotaAlertEmails: Attempting to send quota alert email to users of account: " + emailToBeSent.getAccount().getAccountName());
|
||||
}
|
||||
sendQuotaAlert(emailToBeSent);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
switch (period) {
|
||||
case BIMONTHLY:
|
||||
if (day_of_month < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, 0);
|
||||
aCalendar.set(Calendar.DATE, 1);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
|
|
@ -162,7 +162,7 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
lastDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
return new Calendar[] {firstDateOfPreviousPeriod, lastDateOfPreviousPeriod};
|
||||
} else if (day_of_month > 15 && (day_of_month - 15) < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, -1);
|
||||
aCalendar.set(Calendar.DATE, 16);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
|
|
@ -176,7 +176,7 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
return null;
|
||||
case MONTHLY:
|
||||
if (day_of_month < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, -1);
|
||||
aCalendar.set(Calendar.DATE, 1);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
|
|
@ -190,16 +190,16 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
return null;
|
||||
case QUATERLY:
|
||||
// statements are sent in Jan=1, Apr 4, Jul 7, Oct 10
|
||||
if (month_of_year == 1 || month_of_year == 4 || month_of_year == 7 || month_of_year == 10) {
|
||||
if (month_of_year == Calendar.JANUARY || month_of_year == Calendar.APRIL || month_of_year == Calendar.JULY || month_of_year == Calendar.OCTOBER) {
|
||||
if (day_of_month < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, -3);
|
||||
aCalendar.set(Calendar.DATE, 1);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
aCalendar.set(Calendar.MINUTE, 0);
|
||||
aCalendar.set(Calendar.SECOND, 0);
|
||||
firstDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
aCalendar.add(Calendar.MONTH, -1);
|
||||
aCalendar.add(Calendar.MONTH, 2);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
lastDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
return new Calendar[] {firstDateOfPreviousPeriod, lastDateOfPreviousPeriod};
|
||||
|
|
@ -208,16 +208,16 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
return null;
|
||||
case HALFYEARLY:
|
||||
// statements are sent in Jan=1, Jul 7,
|
||||
if (month_of_year == 1 || month_of_year == 7) {
|
||||
if (month_of_year == Calendar.JANUARY || month_of_year == Calendar.JULY) {
|
||||
if (day_of_month < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, -6);
|
||||
aCalendar.set(Calendar.DATE, 1);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
aCalendar.set(Calendar.MINUTE, 0);
|
||||
aCalendar.set(Calendar.SECOND, 0);
|
||||
firstDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
aCalendar.add(Calendar.MONTH, -1);
|
||||
aCalendar.add(Calendar.MONTH, 5);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
lastDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
return new Calendar[] {firstDateOfPreviousPeriod, lastDateOfPreviousPeriod};
|
||||
|
|
@ -226,16 +226,16 @@ public class QuotaStatementImpl extends ManagerBase implements QuotaStatement {
|
|||
return null;
|
||||
case YEARLY:
|
||||
// statements are sent in Jan=1
|
||||
if (month_of_year == 1) {
|
||||
if (month_of_year == Calendar.JANUARY ) {
|
||||
if (day_of_month < s_LAST_STATEMENT_SENT_DAYS) {
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
Calendar aCalendar = (Calendar)today.clone();
|
||||
aCalendar.add(Calendar.MONTH, -12);
|
||||
aCalendar.set(Calendar.DATE, 1);
|
||||
aCalendar.set(Calendar.HOUR, 0);
|
||||
aCalendar.set(Calendar.MINUTE, 0);
|
||||
aCalendar.set(Calendar.SECOND, 0);
|
||||
firstDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
aCalendar.add(Calendar.MONTH, -1);
|
||||
aCalendar.add(Calendar.MONTH, 11);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
lastDateOfPreviousPeriod = (Calendar)aCalendar.clone();
|
||||
return new Calendar[] {firstDateOfPreviousPeriod, lastDateOfPreviousPeriod};
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ public class QuotaStatementTest extends TestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testStatementPeriod() {
|
||||
public void testStatementPeriodBIMONTHLY() {
|
||||
Calendar date = Calendar.getInstance();
|
||||
|
||||
//BIMONTHLY - first statement of month
|
||||
|
|
@ -104,6 +104,7 @@ public class QuotaStatementTest extends TestCase {
|
|||
assertTrue(period[1].toString(), period[1].get(Calendar.DATE) == 15);
|
||||
|
||||
//BIMONTHLY - second statement of month
|
||||
date = Calendar.getInstance();
|
||||
date.set(Calendar.DATE, QuotaStatementImpl.s_LAST_STATEMENT_SENT_DAYS + 16);
|
||||
period = quotaStatement.statementTime(date, STATEMENT_PERIODS.BIMONTHLY);
|
||||
assertTrue(period == null);
|
||||
|
|
@ -122,9 +123,17 @@ public class QuotaStatementTest extends TestCase {
|
|||
|
||||
assertTrue(period[1].toString(), period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStatementPeriodMONTHLY() {
|
||||
Calendar date = Calendar.getInstance();
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
|
||||
//MONTHLY
|
||||
date = Calendar.getInstance();
|
||||
date.set(Calendar.DATE, QuotaStatementImpl.s_LAST_STATEMENT_SENT_DAYS + 1);
|
||||
period = quotaStatement.statementTime(date, STATEMENT_PERIODS.MONTHLY);
|
||||
Calendar period[] = quotaStatement.statementTime(date, STATEMENT_PERIODS.MONTHLY);
|
||||
assertTrue(period == null);
|
||||
|
||||
//1 of this month
|
||||
|
|
@ -143,6 +152,78 @@ public class QuotaStatementTest extends TestCase {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStatementPeriodQUATERLY() {
|
||||
Calendar date = Calendar.getInstance();
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
|
||||
//QUATERLY
|
||||
date = Calendar.getInstance();
|
||||
date.set(Calendar.MONTH, Calendar.JANUARY); // 1 Jan
|
||||
date.set(Calendar.DATE, 1);
|
||||
Calendar period[] = quotaStatement.statementTime(date, STATEMENT_PERIODS.QUATERLY);
|
||||
assertTrue(period != null);
|
||||
assertTrue("period[0].before(period[1])" + period[0].toString(), period[0].before(period[1]));
|
||||
assertTrue("period[0].get(Calendar.DATE) == 1" + period[0].toString(), period[0].get(Calendar.DATE) == 1);
|
||||
assertTrue("period[0].get(Calendar.MONTH) == Calendar.OCTOBER" + period[0].toString(), period[0].get(Calendar.MONTH) == Calendar.OCTOBER); //october
|
||||
|
||||
//get last day of the previous month
|
||||
aCalendar = Calendar.getInstance();
|
||||
aCalendar.set(Calendar.MONTH, Calendar.DECEMBER);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
assertTrue(" period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE)" + period[1].toString(), period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE));
|
||||
assertTrue("period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH)" + period[1].toString(), period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStatementPeriodHALFYEARLY() {
|
||||
Calendar date = Calendar.getInstance();
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
|
||||
//QUATERLY
|
||||
date = Calendar.getInstance();
|
||||
date.set(Calendar.MONTH, Calendar.JANUARY); // 1 Jan
|
||||
date.set(Calendar.DATE, 1);
|
||||
Calendar period[] = quotaStatement.statementTime(date, STATEMENT_PERIODS.HALFYEARLY);
|
||||
assertTrue(period != null);
|
||||
assertTrue("period[0].before(period[1])" + period[0].toString(), period[0].before(period[1]));
|
||||
assertTrue("period[0].get(Calendar.DATE) == 1" + period[0].toString(), period[0].get(Calendar.DATE) == 1);
|
||||
assertTrue("period[0].get(Calendar.MONTH) == Calendar.JULY" + period[0].toString(), period[0].get(Calendar.MONTH) == Calendar.JULY); //july
|
||||
|
||||
//get last day of the previous month
|
||||
aCalendar = Calendar.getInstance();
|
||||
aCalendar.set(Calendar.MONTH, Calendar.DECEMBER);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
assertTrue(" period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE)" + period[1].toString(), period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE));
|
||||
assertTrue("period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH)" + period[1].toString(), period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStatementPeriodYEARLY() {
|
||||
Calendar date = Calendar.getInstance();
|
||||
Calendar aCalendar = Calendar.getInstance();
|
||||
|
||||
//QUATERLY
|
||||
date = Calendar.getInstance();
|
||||
date.set(Calendar.MONTH, Calendar.JANUARY); // 1 Jan
|
||||
date.set(Calendar.DATE, 1);
|
||||
Calendar period[] = quotaStatement.statementTime(date, STATEMENT_PERIODS.YEARLY);
|
||||
assertTrue("period != null", period != null);
|
||||
assertTrue("period[0].before(period[1])" + period[0].toString(), period[0].before(period[1]));
|
||||
assertTrue("period[0].get(Calendar.DATE) == 1" + period[0].toString(), period[0].get(Calendar.DATE) == 1);
|
||||
assertTrue("period[0].get(Calendar.MONTH) == Calendar.JANUARY" + period[0].toString(), period[0].get(Calendar.MONTH) == Calendar.JANUARY); //january
|
||||
|
||||
//get last day of the previous month
|
||||
aCalendar = Calendar.getInstance();
|
||||
aCalendar.set(Calendar.MONTH, Calendar.DECEMBER);
|
||||
aCalendar.set(Calendar.DATE, aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1);
|
||||
assertTrue(" period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE)" + period[1].toString(), period[1].get(Calendar.DATE) == aCalendar.get(Calendar.DATE));
|
||||
assertTrue("period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH)" + period[1].toString(), period[1].get(Calendar.MONTH) == aCalendar.get(Calendar.MONTH));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSendStatement() {
|
||||
AccountVO accountVO = new AccountVO();
|
||||
|
|
|
|||
Loading…
Reference in New Issue