modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java
| 361 +++++++++-
1 file changed, 359 insertions(+), 2 deletions(-)
New commits:
commit 87a06a50d2c0d3fe92568c6d17272f2510e7ee20
Author: Jirka Kremser <jkremser(a)redhat.com>
Date: Tue Mar 26 15:38:43 2013 +0100
Adding integration tests for OperationManagerBean covering the scheduling using cron
and other methods.
diff --git
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java
index fe61829..a75388b 100644
---
a/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java
+++
b/modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/operation/OperationManagerBeanTest.java
@@ -18,7 +18,10 @@
*/
package org.rhq.enterprise.server.operation;
+import java.util.Arrays;
+import java.util.Calendar;
import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.List;
import java.util.Random;
@@ -34,6 +37,7 @@ import
org.rhq.core.clientapi.agent.operation.CancelResults.InterruptedState;
import org.rhq.core.clientapi.agent.operation.OperationAgentService;
import org.rhq.core.clientapi.server.operation.OperationServerService;
import org.rhq.core.domain.auth.Subject;
+import org.rhq.core.domain.common.JobTrigger;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.operation.GroupOperationHistory;
@@ -502,7 +506,7 @@ public class OperationManagerBeanTest extends AbstractEJB3Test {
}
@Test(enabled = ENABLE_TESTS)
- public void testScheduleGroupOperation() throws Exception {
+ public void testScheduleGroupOperation1() throws Exception {
// make it a success
simulatedOperation_Error = null;
simulatedOperation_Timeout = false;
@@ -571,6 +575,160 @@ public class OperationManagerBeanTest extends AbstractEJB3Test {
list = operationManager.findRecentlyCompletedGroupOperations(overlord,
PageControl.getUnlimitedInstance());
assert list.size() == 0;
}
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testScheduleGroupOperation2() throws Exception {
+ // make it a success
+ simulatedOperation_Error = null;
+ simulatedOperation_Timeout = false;
+ simulatedOperation_Sleep = 0L;
+
+ GroupOperationSchedule schedule =
operationManager.scheduleGroupOperation(overlord, newGroup.getId(),
+ new int[] { newResource.getId() }, true, "testOp", null, 0, 0, 0,
20, "desc");
+ assert schedule != null;
+ assert schedule.getDescription().equals("desc");
+ assert schedule.getOperationName().equals("testOp");
+ assert schedule.getParameters() != null;
+ assert schedule.getGroup().getId() == newGroup.getId();
+
+ Thread.sleep(4000L); // wait for it to finish, should be fast
+
+ PageList<GroupOperationHistory> results;
+ results = operationManager.findCompletedGroupOperationHistories(overlord,
newGroup.getId(),
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 1;
+ GroupOperationHistory history = results.get(0);
+ assert history.getId() > 0 : history;
+ assert history.getJobId() != null : history;
+ assert history.getJobName() != null : history;
+ assert history.getJobGroup() != null : history;
+ assert history.getErrorMessage() == null : history;
+ assert history.getStatus() == OperationRequestStatus.SUCCESS : history;
+ assert history.getSubjectName().equals(overlord.getName()) : history;
+
+ PageList<GroupOperationLastCompletedComposite> list;
+ list = operationManager.findRecentlyCompletedGroupOperations(overlord,
PageControl.getUnlimitedInstance());
+ assert list.size() == 1;
+ assert list.get(0).getOperationHistoryId() == history.getId();
+ assert list.get(0).getGroupId() == newGroup.getId();
+ assert list.get(0).getGroupName().equals(newGroup.getName());
+ assert list.get(0).getOperationName().equals("Test Operation");
+
+ // get the one resource history from the group
+ PageList<ResourceOperationHistory> results2;
+ results2 = operationManager.findCompletedResourceOperationHistories(overlord,
newResource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results2.size() == 1 : "Should have had 1 result: " + results2;
+
+ ResourceOperationHistory rHistory = results2.get(0);
+ assert rHistory.getId() > 0 : rHistory;
+ assert rHistory.getJobId() != null : rHistory;
+ assert rHistory.getJobName() != null : rHistory;
+ assert rHistory.getJobGroup() != null : rHistory;
+ assert rHistory.getErrorMessage() == null : rHistory;
+ assert rHistory.getStatus() == OperationRequestStatus.SUCCESS : rHistory;
+ assert rHistory.getSubjectName().equals(overlord.getName()) : rHistory;
+
+ operationManager.deleteOperationHistory(overlord, history.getId(), false);
+ results = operationManager.findCompletedGroupOperationHistories(overlord,
newGroup.getId(),
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 0; // none left, we purged the only group history there
was
+
+ // purging group history purges all resource histories that belong to it
+ results2 = operationManager.findCompletedResourceOperationHistories(overlord,
newResource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results2 != null;
+ assert results2.size() == 0;
+
+ list = operationManager.findRecentlyCompletedGroupOperations(overlord,
PageControl.getUnlimitedInstance());
+ assert list.size() == 0;
+ }
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testScheduleGroupOperation3() throws Exception {
+ // make it a success
+ simulatedOperation_Error = null;
+ simulatedOperation_Timeout = false;
+ simulatedOperation_Sleep = 0L;
+
+ GroupOperationSchedule newSchedule = new GroupOperationSchedule();
+ newSchedule.setGroup(newGroup);
+ newSchedule.setExecutionOrder(Arrays.asList(newResource));
+ newSchedule.setHaltOnFailure(true);
+ newSchedule.setOperationName("testOp");
+ newSchedule.setParameters(null);
+ newSchedule.setJobTrigger(JobTrigger.createNowTrigger());
+ newSchedule.setDescription("desc");
+
+ int scheduleId = operationManager.scheduleGroupOperation(overlord, newSchedule);
+ List<GroupOperationSchedule> schedules =
operationManager.findScheduledGroupOperations(overlord, newGroup.getId());
+
+ assert schedules != null;
+ assert !schedules.isEmpty();
+ GroupOperationSchedule schedule = schedules.get(0);
+ assert schedule != null;
+ assert schedule.getId() == scheduleId;
+ assert schedule.getDescription().equals("desc");
+ assert schedule.getOperationName().equals("testOp");
+ assert schedule.getParameters() == null;
+ assert schedule.getGroup().getId() == newGroup.getId();
+
+ Thread.sleep(4000L); // wait for it to finish, should be fast
+
+ PageList<GroupOperationHistory> results;
+ results = operationManager.findCompletedGroupOperationHistories(overlord,
newGroup.getId(),
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 1;
+ GroupOperationHistory history = results.get(0);
+ assert history.getId() > 0 : history;
+ assert history.getJobId() != null : history;
+ assert history.getJobName() != null : history;
+ assert history.getJobGroup() != null : history;
+ assert history.getErrorMessage() == null : history;
+ assert history.getStatus() == OperationRequestStatus.SUCCESS : history;
+ assert history.getSubjectName().equals(overlord.getName()) : history;
+
+ PageList<GroupOperationLastCompletedComposite> list;
+ list = operationManager.findRecentlyCompletedGroupOperations(overlord,
PageControl.getUnlimitedInstance());
+ assert list.size() == 1;
+ assert list.get(0).getOperationHistoryId() == history.getId();
+ assert list.get(0).getGroupId() == newGroup.getId();
+ assert list.get(0).getGroupName().equals(newGroup.getName());
+ assert list.get(0).getOperationName().equals("Test Operation");
+
+ // get the one resource history from the group
+ PageList<ResourceOperationHistory> results2;
+ results2 = operationManager.findCompletedResourceOperationHistories(overlord,
newResource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results2.size() == 1 : "Should have had 1 result: " + results2;
+
+ ResourceOperationHistory rHistory = results2.get(0);
+ assert rHistory.getId() > 0 : rHistory;
+ assert rHistory.getJobId() != null : rHistory;
+ assert rHistory.getJobName() != null : rHistory;
+ assert rHistory.getJobGroup() != null : rHistory;
+ assert rHistory.getErrorMessage() == null : rHistory;
+ assert rHistory.getStatus() == OperationRequestStatus.SUCCESS : rHistory;
+ assert rHistory.getSubjectName().equals(overlord.getName()) : rHistory;
+
+ operationManager.deleteOperationHistory(overlord, history.getId(), false);
+ results = operationManager.findCompletedGroupOperationHistories(overlord,
newGroup.getId(),
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 0; // none left, we purged the only group history there
was
+
+ // purging group history purges all resource histories that belong to it
+ results2 = operationManager.findCompletedResourceOperationHistories(overlord,
newResource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results2 != null;
+ assert results2.size() == 0;
+
+ list = operationManager.findRecentlyCompletedGroupOperations(overlord,
PageControl.getUnlimitedInstance());
+ assert list.size() == 0;
+ }
@Test(enabled = ENABLE_TESTS)
public void testScheduleGroupOperationRecurring() throws Exception {
@@ -1258,7 +1416,7 @@ public class OperationManagerBeanTest extends AbstractEJB3Test {
}
@Test(enabled = ENABLE_TESTS)
- public void testScheduleResourceOperation() throws Exception {
+ public void testScheduleResourceOperation1() throws Exception {
Resource resource = newResource;
// make it a success after 500ms
@@ -1310,6 +1468,73 @@ public class OperationManagerBeanTest extends AbstractEJB3Test {
PageControl.getUnlimitedInstance());
assert list.size() == 0;
}
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testScheduleResourceOperation2() throws Exception {
+ Resource resource = newResource;
+
+ // make it a success after 500ms
+ simulatedOperation_Error = null;
+ simulatedOperation_Timeout = false;
+ simulatedOperation_Sleep = 0L;
+
+ ResourceOperationSchedule newSchedule = new ResourceOperationSchedule();
+
+ newSchedule.setJobTrigger(JobTrigger.createNowTrigger());
+ newSchedule.setResource(resource);
+ newSchedule.setOperationName("testOp");
+ newSchedule.setDescription("desc");
+ newSchedule.setParameters(null);
+ newSchedule.setParameters(null);
+
+ int scheduleId = operationManager.scheduleResourceOperation(overlord,
newSchedule);
+ List<ResourceOperationSchedule> schedules =
operationManager.findScheduledResourceOperations(overlord, resource.getId());
+
+ assert schedules != null;
+ assert !schedules.isEmpty();
+ ResourceOperationSchedule schedule = schedules.get(0);
+ assert schedule != null;
+ assert schedule.getId() == scheduleId;
+ assert schedule.getDescription().equals("desc");
+ assert schedule.getOperationName().equals("testOp");
+ assert schedule.getParameters() == null;
+ assert schedule.getResource().getId() == newResource.getId();
+
+ Thread.sleep(4000L); // wait for it to finish, should be very quick
+
+ PageList<ResourceOperationHistory> results;
+ results = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 1;
+ ResourceOperationHistory history = results.get(0);
+ assert history.getId() > 0 : history;
+ assert history.getJobId() != null : history;
+ assert history.getJobName() != null : history;
+ assert history.getJobGroup() != null : history;
+ assert history.getErrorMessage() == null : history;
+ assert history.getStatus() == OperationRequestStatus.SUCCESS : history;
+ assert history.getSubjectName().equals(overlord.getName()) : history;
+
+ PageList<ResourceOperationLastCompletedComposite> list;
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 1;
+ assert list.get(0).getOperationHistoryId() == history.getId();
+ assert list.get(0).getResourceId() == resource.getId();
+ assert list.get(0).getResourceName().equals(resource.getName());
+ assert list.get(0).getOperationName().equals("Test Operation");
+
+ operationManager.deleteOperationHistory(overlord, history.getId(), false);
+ results = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert results != null;
+ assert results.size() == 0;
+
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 0;
+ }
@Test(enabled = ENABLE_TESTS)
public void testScheduleResourceOperationRecurring() throws Exception {
@@ -1531,6 +1756,138 @@ public class OperationManagerBeanTest extends AbstractEJB3Test {
new int[] { noPermSubject.getId() });
}
}
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testCronResourceScheduling() throws Exception {
+ Resource resource = newResource;
+ Calendar calendar = new GregorianCalendar();
+ calendar.add(Calendar.SECOND, 2);
+ ResourceOperationSchedule schedule =
operationManager.scheduleResourceOperationUsingCron(overlord,
+ resource.getId(), "testOp", calendar.get(Calendar.SECOND) + "
" + calendar.get(Calendar.MINUTE)
+ + " * * * ?", 20, null, "desc");
+
+ assert schedule != null;
+ assert schedule.getDescription().equals("desc");
+ assert schedule.getOperationName().equals("testOp");
+ assert schedule.getParameters() != null;
+ assert schedule.getResource().getId() == resource.getId();
+
+ List<ResourceOperationSchedule> results;
+ results = operationManager.findScheduledResourceOperations(overlord,
resource.getId());
+ assert results != null;
+ assert results.size() == 1;
+ ResourceOperationSchedule returnedSchedule = results.get(0);
+ assert returnedSchedule.getId() > 0 : returnedSchedule;
+ assert returnedSchedule.getJobId() != null : returnedSchedule;
+ assert returnedSchedule.getJobName() != null : returnedSchedule;
+ assert returnedSchedule.getJobGroup() != null : returnedSchedule;
+ assert returnedSchedule.getDescription().equals("desc");
+ assert returnedSchedule.getOperationName().equals("testOp");
+ assert returnedSchedule.getParameters() != null;
+ assert returnedSchedule.getResource().getId() == resource.getId();
+
+ System.out.println("WAITING FOR 4s FOR THE SCHEDULED OPERATION TO
FINISH");
+ Thread.sleep(4000L);
+
+ PageList<ResourceOperationHistory> resultsHist;
+ resultsHist = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert resultsHist != null;
+ assert resultsHist.size() == 1;
+ ResourceOperationHistory history = resultsHist.get(0);
+ assert history.getId() > 0 : history;
+ assert history.getJobId() != null : history;
+ assert history.getJobName() != null : history;
+ assert history.getJobGroup() != null : history;
+ assert history.getErrorMessage() == null : history;
+ assert history.getStatus() == OperationRequestStatus.SUCCESS : history;
+ assert history.getSubjectName().equals(overlord.getName()) : history;
+
+ PageList<ResourceOperationLastCompletedComposite> list;
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 1;
+ assert list.get(0).getOperationHistoryId() == history.getId();
+ assert list.get(0).getResourceId() == resource.getId();
+ assert list.get(0).getResourceName().equals(resource.getName());
+ assert list.get(0).getOperationName().equals("Test Operation");
+
+ operationManager.deleteOperationHistory(overlord, history.getId(), false);
+ resultsHist = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert resultsHist != null;
+ assert resultsHist.size() == 0;
+
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 0;
+ }
+
+ @Test(enabled = ENABLE_TESTS)
+ public void testCronGroupScheduling() throws Exception {
+ Resource resource = newResource;
+ ResourceGroup group = newGroup;
+ Calendar calendar = new GregorianCalendar();
+ calendar.add(Calendar.SECOND, 2);
+ GroupOperationSchedule schedule =
operationManager.scheduleGroupOperationUsingCron(overlord, newGroup.getId(), new int[] {
resource.getId() }, true, "testOp", null, calendar.get(Calendar.SECOND) + "
" + calendar.get(Calendar.MINUTE)
+ + " * * * ?", 20, "desc");
+
+ assert schedule != null;
+ assert schedule.getDescription().equals("desc");
+ assert schedule.getOperationName().equals("testOp");
+ assert schedule.getParameters() != null;
+ assert schedule.getGroup().getId() == group.getId();
+
+ List<GroupOperationSchedule> results;
+ results = operationManager.findScheduledGroupOperations(overlord,
group.getId());
+ assert results != null;
+ assert results.size() == 1;
+ GroupOperationSchedule returnedSchedule = results.get(0);
+ assert returnedSchedule.getId() > 0 : returnedSchedule;
+ assert returnedSchedule.getJobId() != null : returnedSchedule;
+ assert returnedSchedule.getJobName() != null : returnedSchedule;
+ assert returnedSchedule.getJobGroup() != null : returnedSchedule;
+ assert returnedSchedule.getDescription().equals("desc");
+ assert returnedSchedule.getOperationName().equals("testOp");
+ assert returnedSchedule.getParameters() != null;
+ assert returnedSchedule.getGroup().getId() == group.getId();
+
+ System.out.println("WAITING FOR 4s FOR THE SCHEDULED OPERATION TO
FINISH");
+ Thread.sleep(4000L);
+
+ PageList<ResourceOperationHistory> resultsHist;
+ resultsHist = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert resultsHist != null;
+ assert resultsHist.size() == 1;
+ ResourceOperationHistory history = resultsHist.get(0);
+ assert history.getId() > 0 : history;
+ assert history.getJobId() != null : history;
+ assert history.getJobName() != null : history;
+ assert history.getJobGroup() != null : history;
+ assert history.getErrorMessage() == null : history;
+ assert history.getStatus() == OperationRequestStatus.SUCCESS : history;
+ assert history.getSubjectName().equals(overlord.getName()) : history;
+
+ PageList<ResourceOperationLastCompletedComposite> list;
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 1;
+ assert list.get(0).getOperationHistoryId() == history.getId();
+ assert list.get(0).getResourceId() == resource.getId();
+ assert list.get(0).getResourceName().equals(resource.getName());
+ assert list.get(0).getOperationName().equals("Test Operation");
+
+ operationManager.deleteOperationHistory(overlord, history.getId(), false);
+ resultsHist = operationManager.findCompletedResourceOperationHistories(overlord,
resource.getId(), null, null,
+ PageControl.getUnlimitedInstance());
+ assert resultsHist != null;
+ assert resultsHist.size() == 0;
+
+ list = operationManager.findRecentlyCompletedResourceOperations(overlord, null,
+ PageControl.getUnlimitedInstance());
+ assert list.size() == 0;
+ }
private Resource createNewResource() throws Exception {
getTransactionManager().begin();