use of org.smartdata.protocol.message.StatusMessage in project SSM by Intel-bigdata.
the class TestCmdletExecutor method testCmdletExecutor.
@Test
public void testCmdletExecutor() throws InterruptedException {
final List<StatusMessage> statusMessages = new ArrayList<>();
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 EchoAction();
Map<String, String> args = new HashMap<>();
args.put(EchoAction.PRINT_MESSAGE, "message success");
action.setArguments(args);
action.setActionId(101);
Cmdlet cmdlet = new Cmdlet(Arrays.asList(action));
executor.execute(cmdlet);
Thread.sleep(2000);
StatusReport lastReport = (StatusReport) statusMessages.get(statusMessages.size() - 1);
ActionStatus status = lastReport.getActionStatuses().get(0);
Assert.assertTrue(status.isFinished());
Assert.assertNull(status.getThrowable());
executor.shutdown();
}
use of org.smartdata.protocol.message.StatusMessage 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