use of org.apache.oozie.CoordinatorActionBean in project oozie by apache.
the class CoordWfActionInfoXCommand method execute.
@Override
protected List<CoordinatorWfActionBean> execute() throws CommandException {
List<CoordinatorWfActionBean> coordWfActions = new ArrayList<CoordinatorWfActionBean>();
for (CoordinatorActionBean coordAction : coordActions) {
String wfId = coordAction.getExternalId();
String nullReason = null;
WorkflowActionBean wfAction = null;
if (wfId != null) {
String wfActionId = wfId + "@" + actionName;
try {
wfAction = jpaService.execute(new WorkflowActionGetJPAExecutor(wfActionId, true));
if (wfAction == null) {
nullReason = CoordinatorWfAction.NullReason.ACTION_NULL.getNullReason(actionName, wfId);
}
} catch (JPAExecutorException ex) {
throw new CommandException(ex);
}
} else {
nullReason = CoordinatorWfAction.NullReason.PARENT_NULL.getNullReason();
LOG.warn(nullReason);
wfAction = null;
}
int actionNumber = coordAction.getActionNumber();
CoordinatorWfActionBean coordWfAction = new CoordinatorWfActionBean(actionNumber, wfAction, nullReason);
coordWfActions.add(coordWfAction);
}
return coordWfActions;
}
use of org.apache.oozie.CoordinatorActionBean in project oozie by apache.
the class TestCoordinatorInputLogic method testSingeSetWithMin.
public void testSingeSetWithMin() throws Exception {
Configuration conf = getConf();
// @formatter:off
String inputLogic = "<or name=\"test\">" + "<data-in dataset=\"A\" min=\"3\" />" + "</or>";
// @formatter:on
conf.set("initial_instance_a", "2014-10-07T00:00Z");
conf.set("initial_instance_b", "2014-10-07T00:00Z");
String jobId = _testCoordSubmit("coord-inputlogic-range.xml", conf, inputLogic, getInputEventForRange());
String input1 = createTestCaseSubDir("input-data/a/2014/10/08/00/_SUCCESS".split("/"));
String input2 = createTestCaseSubDir("input-data/a/2014/10/07/23/_SUCCESS".split("/"));
// dataset with gap
String input3 = createTestCaseSubDir("input-data/a/2014/10/07/19/_SUCCESS".split("/"));
startCoordAction(jobId);
CoordinatorActionBean actionBean = CoordActionQueryExecutor.getInstance().get(CoordActionQuery.GET_COORD_ACTION, jobId + "@1");
assertFalse(CoordinatorAction.Status.WAITING.equals(actionBean.getStatus()));
XConfiguration runConf = new XConfiguration(new StringReader(actionBean.getRunConf()));
String dataSets = runConf.get("inputLogicData");
assertEquals(dataSets.split(",").length, 3);
checkDataSets(dataSets, input1, input2, input3);
}
use of org.apache.oozie.CoordinatorActionBean in project oozie by apache.
the class TestCoordinatorInputLogic method testNestedCondition.
public void testNestedCondition() throws Exception {
Configuration conf = getConf();
// @formatter:off
String inputLogic = "<or name=\"test\">" + "<and>" + "<or>" + "<data-in dataset=\"A\" />" + "<data-in dataset=\"B\" />" + "</or>" + "<or>" + "<data-in dataset=\"C\" />" + "<data-in dataset=\"D\" />" + "</or>" + "</and>" + "<and>" + "<data-in dataset=\"A\" />" + "<data-in dataset=\"B\" />" + "</and>" + "</or>";
// @formatter:on
conf.set("partitionName", "test");
final String jobId = _testCoordSubmit("coord-inputlogic.xml", conf, inputLogic);
new CoordMaterializeTransitionXCommand(jobId, 3600).call();
new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();
String input1 = createTestCaseSubDir("input-data/a/2014/10/08/00/_SUCCESS".split("/"));
String input2 = createTestCaseSubDir("input-data/b/2014/10/08/00/_SUCCESS".split("/"));
startCoordAction(jobId);
CoordinatorActionBean actionBean = CoordActionQueryExecutor.getInstance().get(CoordActionQuery.GET_COORD_ACTION, jobId + "@1");
XConfiguration runConf = new XConfiguration(new StringReader(actionBean.getRunConf()));
String dataSets = runConf.get("inputLogicData");
assertEquals(dataSets.split(",").length, 2);
checkDataSets(dataSets, input1, input2);
}
use of org.apache.oozie.CoordinatorActionBean in project oozie by apache.
the class TestCoordinatorInputLogic method testMinWait.
public void testMinWait() throws Exception {
Configuration conf = getConf();
Date now = new Date();
String inputLogic = // @formatter:off
"<combine name=\"test\" min= \"4\" wait=\"1\">" + "<data-in dataset=\"A\" />" + "<data-in dataset=\"B\" />" + "</combine>";
// @formatter:on
conf.set("start_time", DateUtils.formatDateOozieTZ(now));
conf.set("end_time", DateUtils.formatDateOozieTZ(new Date(now.getTime() + 3 * 60 * 60 * 1000)));
// 5 hour before
conf.set("initial_instance_a", DateUtils.formatDateOozieTZ(new Date(now.getTime() - 5 * 60 * 60 * 1000)));
// 5 hour before
conf.set("initial_instance_b", DateUtils.formatDateOozieTZ(new Date(now.getTime() - 5 * 60 * 60 * 1000)));
String jobId = _testCoordSubmit("coord-inputlogic-range.xml", conf, inputLogic, getInputEventForRange());
new CoordMaterializeTransitionXCommand(jobId, 3600).call();
List<String> inputDir = createDirWithTime("input-data/b/", now, 0, 1, 2, 3, 4);
startCoordActionForWaiting(jobId);
// wait for 1 min
sleep(60 * 1000);
new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();
CoordinatorActionBean actionBean = CoordActionQueryExecutor.getInstance().get(CoordActionQuery.GET_COORD_ACTION, jobId + "@1");
assertFalse(CoordinatorAction.Status.WAITING.equals(actionBean.getStatus()));
XConfiguration runConf = new XConfiguration(new StringReader(actionBean.getRunConf()));
String dataSets = runConf.get("inputLogicData");
assertEquals(dataSets.split(",").length, 5);
checkDataSets(dataSets, inputDir.toArray(new String[inputDir.size()]));
}
use of org.apache.oozie.CoordinatorActionBean in project oozie by apache.
the class TestCoordinatorInputLogic method testCombineNegative.
public void testCombineNegative() throws Exception {
Configuration conf = getConf();
// @formatter:off
String inputLogic = "<combine name=\"test\">" + "<data-in dataset=\"A\" />" + "<data-in dataset=\"B\" />" + "</combine>";
// @formatter:on
conf.set("initial_instance_a", "2014-10-07T00:00Z");
conf.set("initial_instance_b", "2014-10-07T00:00Z");
final String jobId = _testCoordSubmit("coord-inputlogic-range.xml", conf, inputLogic, getInputEventForRange());
createTestCaseSubDir("input-data/a/2014/10/08/00/_SUCCESS".split("/"));
createTestCaseSubDir("input-data/a/2014/10/07/23/_SUCCESS".split("/"));
createTestCaseSubDir("input-data/b/2014/10/07/21/_SUCCESS".split("/"));
createTestCaseSubDir("input-data/b/2014/10/07/20/_SUCCESS".split("/"));
new CoordMaterializeTransitionXCommand(jobId, 3600).call();
new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();
waitFor(5 * 1000, new Predicate() {
public boolean evaluate() throws Exception {
CoordinatorActionBean actionBean = CoordActionQueryExecutor.getInstance().get(CoordActionQuery.GET_COORD_ACTION, jobId + "@1");
return !actionBean.getStatus().equals(CoordinatorAction.Status.WAITING);
}
});
CoordinatorAction actionBean = CoordActionQueryExecutor.getInstance().get(CoordActionQuery.GET_COORD_ACTION, jobId + "@1");
assertEquals(actionBean.getStatus(), CoordinatorAction.Status.WAITING);
}
Aggregations