use of org.smartdata.protocol.message.ActionStatus in project SSM by Intel-bigdata.
the class Cmdlet method getActionStatuses.
public synchronized List<ActionStatus> getActionStatuses() throws UnsupportedEncodingException {
if (actionReportList.isEmpty()) {
return null;
}
// get status in the order of the descend action id.
// The cmdletmanager should update action status in the ascend order.
List<ActionStatus> statuses = new ArrayList<>();
Iterator<SmartAction> iter = actionReportList.iterator();
while (iter.hasNext()) {
SmartAction action = iter.next();
ActionStatus status = action.getActionStatus();
statuses.add(status);
if (status.isFinished()) {
iter.remove();
}
}
return Lists.reverse(statuses);
}
use of org.smartdata.protocol.message.ActionStatus in project SSM by Intel-bigdata.
the class TestCmdletExecutor method testStop.
@Test
public void testStop() throws InterruptedException {
final List<StatusMessage> statusMessages = new Vector<>();
StatusReporter reporter = new StatusReporter() {
@Override
public void report(StatusMessage status) {
statusMessages.add(status);
}
};
CmdletExecutor executor = new CmdletExecutor(new SmartConf());
StatusReportTask statusReportTask = new StatusReportTask(reporter, executor, new SmartConf());
ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(statusReportTask, 100, 10, TimeUnit.MILLISECONDS);
SmartAction action = new HangingAction();
action.setActionId(101);
Cmdlet cmdlet = new Cmdlet(Arrays.asList(action));
cmdlet.setId(10);
executor.execute(cmdlet);
Thread.sleep(1000);
executor.stop(10L);
Thread.sleep(2000);
StatusReport lastReport = (StatusReport) statusMessages.get(statusMessages.size() - 1);
ActionStatus status = lastReport.getActionStatuses().get(0);
Assert.assertTrue(status.isFinished());
Assert.assertNotNull(status.getThrowable());
executor.shutdown();
}
Aggregations