use of org.smartdata.server.engine.cmdlet.CmdletDispatcher in project SSM by Intel-bigdata.
the class TestCmdletManager method testWithoutCluster.
@Test
public void testWithoutCluster() throws MetaStoreException, IOException, InterruptedException {
long cmdletId = 10;
long actionId = 101;
MetaStore metaStore = mock(MetaStore.class);
Assert.assertNotNull(metaStore);
when(metaStore.getMaxCmdletId()).thenReturn(cmdletId);
when(metaStore.getMaxActionId()).thenReturn(actionId);
CmdletDispatcher dispatcher = mock(CmdletDispatcher.class);
Assert.assertNotNull(dispatcher);
when(dispatcher.canDispatchMore()).thenReturn(true);
ServerContext serverContext = new ServerContext(new SmartConf(), metaStore);
serverContext.setServiceMode(ServiceMode.HDFS);
CmdletManager cmdletManager = new CmdletManager(serverContext);
cmdletManager.init();
cmdletManager.setDispatcher(dispatcher);
cmdletManager.start();
cmdletManager.submitCmdlet("echo");
Thread.sleep(500);
verify(metaStore, times(1)).insertCmdlets(any(CmdletInfo[].class));
verify(metaStore, times(1)).insertActions(any(ActionInfo[].class));
Thread.sleep(500);
long startTime = System.currentTimeMillis();
ActionStatus actionStatus = new ActionStatus(cmdletId, true, actionId, startTime, null);
StatusReport statusReport = new StatusReport(Arrays.asList(actionStatus));
cmdletManager.updateStatus(statusReport);
ActionInfo actionInfo = cmdletManager.getActionInfo(actionId);
CmdletInfo cmdletInfo = cmdletManager.getCmdletInfo(cmdletId);
Assert.assertNotNull(actionInfo);
cmdletManager.updateStatus(new CmdletStatusUpdate(cmdletId, System.currentTimeMillis(), CmdletState.EXECUTING));
CmdletInfo info = cmdletManager.getCmdletInfo(cmdletId);
Assert.assertNotNull(info);
Assert.assertEquals(info.getParameters(), "echo");
Assert.assertEquals(info.getAids().size(), 1);
Assert.assertTrue(info.getAids().get(0) == actionId);
Assert.assertEquals(info.getState(), CmdletState.EXECUTING);
long finishTime = System.currentTimeMillis();
actionStatus = new ActionStatus(cmdletId, true, actionId, null, startTime, finishTime, null, true);
statusReport = new StatusReport(Arrays.asList(actionStatus));
cmdletManager.updateStatus(statusReport);
Assert.assertTrue(actionInfo.isFinished());
Assert.assertTrue(actionInfo.isSuccessful());
Assert.assertEquals(actionInfo.getCreateTime(), startTime);
Assert.assertEquals(actionInfo.getFinishTime(), finishTime);
Assert.assertEquals(cmdletInfo.getState(), CmdletState.DONE);
cmdletManager.updateStatus(new CmdletStatusUpdate(cmdletId, System.currentTimeMillis(), CmdletState.DONE));
Assert.assertEquals(info.getState(), CmdletState.DONE);
Thread.sleep(500);
verify(metaStore, times(2)).insertCmdlets(any(CmdletInfo[].class));
verify(metaStore, times(2)).insertActions(any(ActionInfo[].class));
cmdletManager.stop();
}
Aggregations