Repository: oozie
Updated Branches:
  refs/heads/master 790aac020 -> 87040a1f1


amend OOZIE-1976 Specifying coordinator input datasets in more logical ways


Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/87040a1f
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/87040a1f
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/87040a1f

Branch: refs/heads/master
Commit: 87040a1f1f9ab1ccaecff640b56c33b9900eca2a
Parents: 790aac0
Author: Purshotam Shah <[email protected]>
Authored: Fri May 27 16:07:48 2016 -0700
Committer: Purshotam Shah <[email protected]>
Committed: Fri May 27 16:07:48 2016 -0700

----------------------------------------------------------------------
 .../coord/CoordPushDependencyCheckXCommand.java |  5 +-
 .../apache/oozie/coord/CoordELEvaluator.java    |  3 +-
 .../apache/oozie/coord/CoordELFunctions.java    |  3 +-
 .../dependency/CoordInputDependencyFactory.java | 16 ++---
 .../dependency/CoordOldInputDependency.java     | 76 +++++++++++---------
 .../logic/CoordInputLogicEvaluatorPhaseOne.java |  5 +-
 .../logic/CoordInputLogicEvaluatorUtil.java     | 19 ++---
 .../coord/input/logic/OozieJexlInterpreter.java | 12 +++-
 .../input/logic/TestCoordInputLogicPush.java    |  5 +-
 .../input/logic/TestCoordinatorInputLogic.java  | 11 ++-
 core/src/test/resources/coord-inputlogic.xml    |  1 +
 11 files changed, 89 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
 
b/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
index 2600a2b..6d8aa0f 100644
--- 
a/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
+++ 
b/core/src/main/java/org/apache/oozie/command/coord/CoordPushDependencyCheckXCommand.java
@@ -36,6 +36,7 @@ import org.apache.oozie.command.CommandException;
 import org.apache.oozie.command.PreconditionException;
 import org.apache.oozie.coord.input.dependency.CoordInputDependency;
 import org.apache.oozie.dependency.ActionDependency;
+import org.apache.oozie.dependency.DependencyChecker;
 import org.apache.oozie.dependency.URIHandler;
 import org.apache.oozie.executor.jpa.CoordActionGetForInputCheckJPAExecutor;
 import org.apache.oozie.executor.jpa.CoordActionQueryExecutor;
@@ -147,8 +148,8 @@ public class CoordPushDependencyCheckXCommand extends 
CoordinatorXCommand<Void>
                     isChangeInDependency = false;
                 }
                 else {
-                    
coordPushInputDependency.setMissingDependencies(StringUtils.join(
-                            actionDependency.getMissingDependencies(), 
CoordCommandUtils.RESOLVED_UNRESOLVED_SEPARATOR));
+                    String stillMissingDeps = 
DependencyChecker.dependenciesAsString(actionDependency.getMissingDependencies());
+                    
coordPushInputDependency.setMissingDependencies(stillMissingDeps);
                 }
 
                 if (coordPushInputDependency.isDependencyMet()) {

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java 
b/core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java
index fba8ac1..809c026 100644
--- a/core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java
+++ b/core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java
@@ -219,7 +219,8 @@ public class CoordELEvaluator {
                     // check
                     // null
                 }
-                Element doneFlagElement = data.getChild("done-flag", 
data.getNamespace());
+                Element doneFlagElement = data.getChild("dataset", 
data.getNamespace()).getChild("done-flag",
+                        data.getNamespace());
                 String doneFlag = CoordUtils.getDoneFlag(doneFlagElement);
                 e.setVariable(".datain." + data.getAttributeValue("name") + 
".doneFlag", doneFlag);
             }

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java 
b/core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
index ffa0943..5bb8be6 100644
--- a/core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
+++ b/core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
@@ -503,7 +503,8 @@ public class CoordELFunctions {
         String uris = "";
         ELEvaluator eval = ELEvaluator.getCurrent();
         if (eval.getVariable(".datain." + dataInName) == null
-                && 
!StringUtils.isEmpty(eval.getVariable(".actionInputLogic").toString())) {
+                && (eval.getVariable(".actionInputLogic") != null && 
!StringUtils.isEmpty(eval.getVariable(
+                        ".actionInputLogic").toString()))) {
             try {
                 return new 
CoordInputLogicEvaluatorUtil().getInputDependencies(dataInName,
                         (SyncCoordAction) eval.getVariable(COORD_ACTION));

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordInputDependencyFactory.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordInputDependencyFactory.java
 
b/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordInputDependencyFactory.java
index ad50890..ea15467 100644
--- 
a/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordInputDependencyFactory.java
+++ 
b/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordInputDependencyFactory.java
@@ -72,18 +72,14 @@ public class CoordInputDependencyFactory {
      */
     public static CoordInputDependency getPullInputDependencies(StringBlob 
missingDependencies) {
         if (missingDependencies == null) {
-            return new CoordPullInputDependency();
+            return new CoordOldInputDependency();
         }
         return getPullInputDependencies(missingDependencies.getString());
     }
 
     public static CoordInputDependency getPullInputDependencies(String 
dependencies) {
 
-        if (StringUtils.isEmpty(dependencies)) {
-            return new CoordPullInputDependency();
-        }
-
-        if (!hasInputLogic(dependencies)) {
+        if (StringUtils.isEmpty(dependencies) || !hasInputLogic(dependencies)) 
{
             return new CoordOldInputDependency(dependencies);
         }
         else
@@ -105,7 +101,7 @@ public class CoordInputDependencyFactory {
     public static CoordInputDependency getPushInputDependencies(StringBlob 
pushMissingDependencies) {
 
         if (pushMissingDependencies == null) {
-            return new CoordPushInputDependency();
+            return new CoordOldInputDependency();
         }
         return getPushInputDependencies(pushMissingDependencies.getString());
 
@@ -113,11 +109,7 @@ public class CoordInputDependencyFactory {
 
     public static CoordInputDependency getPushInputDependencies(String 
dependencies) {
 
-
-        if (StringUtils.isEmpty(dependencies)) {
-            return new CoordPushInputDependency();
-        }
-        if (!hasInputLogic(dependencies)) {
+        if (StringUtils.isEmpty(dependencies) || !hasInputLogic(dependencies)) 
{
             return new CoordOldInputDependency(dependencies);
         }
 

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordOldInputDependency.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordOldInputDependency.java
 
b/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordOldInputDependency.java
index 9fc348f..aabd2bf 100644
--- 
a/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordOldInputDependency.java
+++ 
b/core/src/main/java/org/apache/oozie/coord/input/dependency/CoordOldInputDependency.java
@@ -258,49 +258,55 @@ public class CoordOldInputDependency implements 
CoordInputDependency {
         String actualTimeStr = eAction.getAttributeValue("action-actual-time");
         Element inputList = eAction.getChild("input-events", 
eAction.getNamespace());
 
+        if(inputList==null){
+            return true;
+        }
+
         List<Element> eDataEvents = inputList.getChildren("data-in", 
eAction.getNamespace());
         Configuration actionConf = new XConfiguration(new 
StringReader(coordAction.getRunConf()));
 
-        Date actualTime = null;
-        if (actualTimeStr == null) {
-            actualTime = new Date();
-        }
-        else {
-            actualTime = DateUtils.parseDateOozieTZ(actualTimeStr);
-        }
-
-        for (Element dEvent : eDataEvents) {
-            if (dEvent.getChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG, 
dEvent.getNamespace()) == null) {
-                continue;
+        if (eDataEvents != null) {
+            Date actualTime = null;
+            if (actualTimeStr == null) {
+                actualTime = new Date();
             }
-            ELEvaluator eval = 
CoordELEvaluator.createLazyEvaluator(actualTime, nominalTime, dEvent, 
actionConf);
-            String unResolvedInstance = 
dEvent.getChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG,
-                    dEvent.getNamespace()).getTextTrim();
-            String unresolvedList[] = 
unResolvedInstance.split(CoordELFunctions.INSTANCE_SEPARATOR);
-            StringBuffer resolvedTmp = new StringBuffer();
-            for (int i = 0; i < unresolvedList.length; i++) {
-                String returnData = CoordELFunctions.evalAndWrap(eval, 
unresolvedList[i]);
-                Boolean isResolved = (Boolean) 
eval.getVariable(CoordELConstants.IS_RESOLVED);
-                if (isResolved == false) {
-                    log.info("[" + coordAction.getId() + "] :: Cannot resolve 
: " + returnData);
-                    return false;
+            else {
+                actualTime = DateUtils.parseDateOozieTZ(actualTimeStr);
+            }
+
+            for (Element dEvent : eDataEvents) {
+                if 
(dEvent.getChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG, 
dEvent.getNamespace()) == null) {
+                    continue;
                 }
-                if (resolvedTmp.length() > 0) {
-                    resolvedTmp.append(CoordELFunctions.INSTANCE_SEPARATOR);
+                ELEvaluator eval = 
CoordELEvaluator.createLazyEvaluator(actualTime, nominalTime, dEvent, 
actionConf);
+                String unResolvedInstance = 
dEvent.getChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG,
+                        dEvent.getNamespace()).getTextTrim();
+                String unresolvedList[] = 
unResolvedInstance.split(CoordELFunctions.INSTANCE_SEPARATOR);
+                StringBuffer resolvedTmp = new StringBuffer();
+                for (int i = 0; i < unresolvedList.length; i++) {
+                    String returnData = CoordELFunctions.evalAndWrap(eval, 
unresolvedList[i]);
+                    Boolean isResolved = (Boolean) 
eval.getVariable(CoordELConstants.IS_RESOLVED);
+                    if (isResolved == false) {
+                        log.info("[" + coordAction.getId() + "] :: Cannot 
resolve : " + returnData);
+                        return false;
+                    }
+                    if (resolvedTmp.length() > 0) {
+                        
resolvedTmp.append(CoordELFunctions.INSTANCE_SEPARATOR);
+                    }
+                    resolvedTmp.append((String) 
eval.getVariable(CoordELConstants.RESOLVED_PATH));
                 }
-                resolvedTmp.append((String) 
eval.getVariable(CoordELConstants.RESOLVED_PATH));
-            }
-            if (resolvedTmp.length() > 0) {
-                if (dEvent.getChild("uris", dEvent.getNamespace()) != null) {
-                    
resolvedTmp.append(CoordELFunctions.INSTANCE_SEPARATOR).append(
-                            dEvent.getChild("uris", 
dEvent.getNamespace()).getTextTrim());
-                    dEvent.removeChild("uris", dEvent.getNamespace());
+                if (resolvedTmp.length() > 0) {
+                    if (dEvent.getChild("uris", dEvent.getNamespace()) != 
null) {
+                        
resolvedTmp.append(CoordELFunctions.INSTANCE_SEPARATOR).append(
+                                dEvent.getChild("uris", 
dEvent.getNamespace()).getTextTrim());
+                        dEvent.removeChild("uris", dEvent.getNamespace());
+                    }
+                    Element uriInstance = new Element("uris", 
dEvent.getNamespace());
+                    uriInstance.addContent(resolvedTmp.toString());
+                    dEvent.getContent().add(1, uriInstance);
                 }
-                Element uriInstance = new Element("uris", 
dEvent.getNamespace());
-                uriInstance.addContent(resolvedTmp.toString());
-                dEvent.getContent().add(1, uriInstance);
+                dEvent.removeChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG, 
dEvent.getNamespace());
             }
-            dEvent.removeChild(CoordCommandUtils.UNRESOLVED_INSTANCES_TAG, 
dEvent.getNamespace());
         }
 
         return true;

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorPhaseOne.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorPhaseOne.java
 
b/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorPhaseOne.java
index f54d305..6525125 100644
--- 
a/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorPhaseOne.java
+++ 
b/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorPhaseOne.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.oozie.CoordinatorActionBean;
 import org.apache.oozie.ErrorCode;
@@ -34,6 +35,7 @@ import org.apache.oozie.command.coord.CoordCommandUtils;
 import org.apache.oozie.coord.input.dependency.AbstractCoordInputDependency;
 import org.apache.oozie.coord.input.dependency.CoordInputDependency;
 import org.apache.oozie.coord.input.dependency.CoordInputInstance;
+import org.apache.oozie.coord.input.dependency.CoordPullInputDependency;
 import 
org.apache.oozie.coord.input.logic.CoordInputLogicEvaluatorResult.STATUS;
 import org.apache.oozie.dependency.URIHandlerException;
 import org.apache.oozie.util.LogUtils;
@@ -83,8 +85,7 @@ public class CoordInputLogicEvaluatorPhaseOne implements 
CoordInputLogicEvaluato
         List<String> availableList = new ArrayList<String>();
         if (coordInputDependency.getDependencyMap().get(dataSet) == null) {
             CoordInputLogicEvaluatorResult retData = new 
CoordInputLogicEvaluatorResult();
-            if (coordInputDependency.getAvailableDependencies(dataSet) == null
-                    || 
coordInputDependency.getAvailableDependencies(dataSet).isEmpty()) {
+            if (((CoordPullInputDependency) 
coordAction.getPullInputDependencies()).getUnResolvedDependency(dataSet) != 
null) {
                 log.debug("Data set [{0}] is unresolved set, will get resolved 
in phasetwo", dataSet);
                 
retData.setStatus(CoordInputLogicEvaluatorResult.STATUS.PHASE_TWO_EVALUATION);
             }

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorUtil.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorUtil.java
 
b/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorUtil.java
index 63c0760..653fb2a 100644
--- 
a/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorUtil.java
+++ 
b/core/src/main/java/org/apache/oozie/coord/input/logic/CoordInputLogicEvaluatorUtil.java
@@ -71,7 +71,7 @@ public class CoordInputLogicEvaluatorUtil {
         JexlContext jc = new OozieJexlParser(jexl, new 
CoordInputLogicBuilder(new CoordInputLogicEvaluatorPhaseOne(
                 coordAction, coordAction.getPullInputDependencies())));
         CoordInputLogicEvaluatorResult result = 
(CoordInputLogicEvaluatorResult) e.evaluate(jc);
-        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.isTrue());
+        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.getStatus());
 
         if (result.isWaiting()) {
             return false;
@@ -134,13 +134,16 @@ public class CoordInputLogicEvaluatorUtil {
         JexlContext jc = new OozieJexlParser(jexl, new 
CoordInputLogicBuilder(new CoordInputLogicEvaluatorPhaseThree(
                 coordAction, eval)));
         CoordInputLogicEvaluatorResult result = 
(CoordInputLogicEvaluatorResult) e.evaluate(jc);
-        log.debug("Input logic expression for [{0}] is [{1}] and evaluate 
result is [{2}]", name, expression,
-                result.isTrue());
 
-        if (!result.isTrue()) {
-            return name + " is not resolved";
+        if (result == null || !result.isTrue()) {
+            log.debug("Input logic expression for [{0}] is [{1}] and it is not 
resolved", name, expression);
+            return "${coord:dataIn('" + name + "')}";
+        }
+        else {
+            log.debug("Input logic expression for [{0}] is [{1}] and evaluate 
result is [{2}]", name, expression,
+                    result.getStatus());
+            return result.getDataSets();
         }
-        return result.getDataSets();
 
     }
 
@@ -162,7 +165,7 @@ public class CoordInputLogicEvaluatorUtil {
         JexlContext jc = new OozieJexlParser(jexl, new 
CoordInputLogicBuilder(new CoordInputLogicEvaluatorPhaseOne(
                 coordAction, coordAction.getPushInputDependencies())));
         CoordInputLogicEvaluatorResult result = 
(CoordInputLogicEvaluatorResult) e.evaluate(jc);
-        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.isTrue());
+        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.getStatus());
 
         if (result.isWaiting()) {
             return false;
@@ -189,7 +192,7 @@ public class CoordInputLogicEvaluatorUtil {
         JexlContext jc = new OozieJexlParser(jexl, new 
CoordInputLogicBuilder(new CoordInputLogicEvaluatorPhaseTwo(
                 coordAction, actualTime)));
         CoordInputLogicEvaluatorResult result = 
(CoordInputLogicEvaluatorResult) e.evaluate(jc);
-        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.isTrue());
+        log.debug("Input logic expression for [{0}] and evaluate result is 
[{1}]", expression, result.getStatus());
 
         if (result.isWaiting()) {
             return false;

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/main/java/org/apache/oozie/coord/input/logic/OozieJexlInterpreter.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/coord/input/logic/OozieJexlInterpreter.java
 
b/core/src/main/java/org/apache/oozie/coord/input/logic/OozieJexlInterpreter.java
index 2044723..7577788 100644
--- 
a/core/src/main/java/org/apache/oozie/coord/input/logic/OozieJexlInterpreter.java
+++ 
b/core/src/main/java/org/apache/oozie/coord/input/logic/OozieJexlInterpreter.java
@@ -24,6 +24,7 @@ import org.apache.commons.jexl2.JexlEngine;
 import org.apache.commons.jexl2.parser.ASTAndNode;
 import org.apache.commons.jexl2.parser.ASTOrNode;
 import org.apache.commons.jexl2.parser.JexlNode;
+import 
org.apache.oozie.coord.input.logic.CoordInputLogicEvaluatorResult.STATUS;
 
 /**
  * Oozie implementation of jexl Interpreter
@@ -58,15 +59,22 @@ public class OozieJexlInterpreter extends Interpreter {
         CoordInputLogicEvaluatorResult left = (CoordInputLogicEvaluatorResult) 
node.jjtGetChild(0)
                 .jjtAccept(this, data);
 
-        if (!left.isTrue()) {
+        if(left.isWaiting() || !left.isTrue()){
             return left;
         }
+
         CoordInputLogicEvaluatorResult right = 
(CoordInputLogicEvaluatorResult) node.jjtGetChild(1).jjtAccept(this,
                 data);
+        if(right.isWaiting()){
+            return right;
+        }
+        if(left.isPhaseTwoEvaluation() || right.isPhaseTwoEvaluation()){
+            return new 
CoordInputLogicEvaluatorResult(STATUS.PHASE_TWO_EVALUATION);
+        }
+
         if (right.isTrue()) {
             right.appendDataSets(left.getDataSets());
         }
-
         return right;
     }
 

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordInputLogicPush.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordInputLogicPush.java
 
b/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordInputLogicPush.java
index c58b18b..6684a1f 100644
--- 
a/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordInputLogicPush.java
+++ 
b/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordInputLogicPush.java
@@ -356,6 +356,10 @@ public class TestCoordInputLogicPush extends XHCatTestCase 
{
         String input1 = 
createTestCaseSubDir("input-data/b/2014/10/08/_SUCCESS".split("/"));
         String input2 = addPartition("db_a", "table1", 
"dt=20141008;country=usa");
 
+        new CoordMaterializeTransitionXCommand(jobId, 3600).call();
+        new CoordPushDependencyCheckXCommand(jobId + "@1").call();
+        new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();
+
         startCoordAction(jobId);
 
         CoordinatorActionBean actionBean = 
CoordActionQueryExecutor.getInstance().get(
@@ -546,7 +550,6 @@ public class TestCoordInputLogicPush extends XHCatTestCase {
 
     private void startCoordAction(final String jobId) throws CommandException, 
JPAExecutorException {
         new CoordMaterializeTransitionXCommand(jobId, 3600).call();
-
         new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();
         new CoordPushDependencyCheckXCommand(jobId + "@1").call();
         new CoordActionInputCheckXCommand(jobId + "@1", jobId).call();

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordinatorInputLogic.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordinatorInputLogic.java
 
b/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordinatorInputLogic.java
index 0679c8c..aa0d5d6 100644
--- 
a/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordinatorInputLogic.java
+++ 
b/core/src/test/java/org/apache/oozie/coord/input/logic/TestCoordinatorInputLogic.java
@@ -202,9 +202,10 @@ public class TestCoordinatorInputLogic extends 
XDataTestCase {
          "</and>";
         //@formatter:on
         conf.set("partitionName", "test");
+        conf.set("A_done_flag", "done");
         final String jobId = _testCoordSubmit("coord-inputlogic.xml", conf, 
inputLogic);
 
-        String input1 = 
createTestCaseSubDir("input-data/a/2014/10/08/00/_SUCCESS".split("/"));
+        String input1 = 
createTestCaseSubDir("input-data/a/2014/10/08/00/done".split("/"));
         String input2 = 
createTestCaseSubDir("input-data/b/2014/10/08/00/_SUCCESS".split("/"));
         String input3 = 
createTestCaseSubDir("input-data/e/2014/10/08/00/_SUCCESS".split("/"));
         String input4 = 
createTestCaseSubDir("input-data/f/2014/10/08/00/_SUCCESS".split("/"));
@@ -216,7 +217,7 @@ public class TestCoordinatorInputLogic extends 
XDataTestCase {
         XConfiguration runConf = new XConfiguration(new 
StringReader(actionBean.getRunConf()));
         String dataSets = runConf.get("inputLogicData");
         assertEquals(dataSets.split(",").length, 4);
-        checkDataSets(dataSets, input1, input2, input3, input4);
+        checkDataSets(dataSets, input1.replace("/done", ""), input2, input3, 
input4);
 
     }
 
@@ -239,9 +240,10 @@ public class TestCoordinatorInputLogic extends 
XDataTestCase {
          "</or>";
         //@formatter:on
         conf.set("partitionName", "test");
+        conf.set("A_done_flag", "done");
         final String jobId = _testCoordSubmit("coord-inputlogic.xml", conf, 
inputLogic);
 
-        String input1 = 
createTestCaseSubDir("input-data/a/2014/10/08/00/_SUCCESS".split("/"));
+        String input1 = 
createTestCaseSubDir("input-data/a/2014/10/08/00/done".split("/"));
         String input2 = 
createTestCaseSubDir("input-data/b/2014/10/08/00/_SUCCESS".split("/"));
         String input3 = 
createTestCaseSubDir("input-data/c/2014/10/08/00/_SUCCESS".split("/"));
         String input4 = 
createTestCaseSubDir("input-data/e/2014/10/08/00/_SUCCESS".split("/"));
@@ -872,6 +874,9 @@ public class TestCoordinatorInputLogic extends 
XDataTestCase {
         conf.set("queueName", "default");
         conf.set("jobTracker", "localhost:9001");
         conf.set("examplesRoot", "examples");
+        if (conf.get("A_done_flag") == null) {
+            conf.set("A_done_flag", "_SUCCESS");
+        }
 
         return new CoordSubmitXCommand(dryRun, conf).call();
     }

http://git-wip-us.apache.org/repos/asf/oozie/blob/87040a1f/core/src/test/resources/coord-inputlogic.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/coord-inputlogic.xml 
b/core/src/test/resources/coord-inputlogic.xml
index 51b67ac..b87445d 100644
--- a/core/src/test/resources/coord-inputlogic.xml
+++ b/core/src/test/resources/coord-inputlogic.xml
@@ -29,6 +29,7 @@
             initial-instance="${initial_instance_a}" timezone="UTC">
             <uri-template>${data_set_a}/${YEAR}/${MONTH}/${DAY}/${HOUR}
             </uri-template>
+            <done-flag>${A_done_flag}</done-flag>
         </dataset>
         <dataset name="b" frequency="${coord:hours(1)}"
             initial-instance="${initial_instance_b}" timezone="UTC">

Reply via email to