You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by András Piros via Review Board <no...@reviews.apache.org> on 2018/02/01 20:00:44 UTC

Re: Review Request 64029: OOZIE-2339 Provide an API for writing jobs based on the XSD schemas


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > .gitignore
> > Line 10 (original), 13 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935970#file1935970line13>
> >
> >     This can be in a followup JIRA if you want (in which case, please file it), but we should add an example or two to the oozie-examples of a workflow using the jobs-api.

There are already several new `jobs-api` examples here in `jobs-client` artifact: `jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/Test*Example.java`. `TestJavaMainExample.java` rebuilds the `java-main` workflow using `jobs-api`, `TestShellExample.java` does the same for `shell`, `TestSparkExample.java` for `spark-file-copy`, etc.

Should I move these to a folder under `oozie-examples` artifact?


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > core/src/main/java/org/apache/oozie/servlet/BaseJobsServlet.java
> > Lines 118 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935980#file1935980line118>
> >
> >     This should be a constant.
> >     
> >     Also, what happens if this is not set?  You'll end up with a path ````/application_<current_time>```` which I don't think we want to do.
> >     
> >     Also, I don't think we should do ````application_<current_time>````.  That might get confusion with Yarn APP IDs, which look like ````application_<RM_start_time>_<id>````.  Perhaps ````gen_app_```` instead of ````application````?

Actually, I think this should rather be configurable. Most users are expected to use Jobs API workflow submission without putting `job.properties` or any other thing to HDFS - we want to make life as easy as possible. So a default place where generated `workflow.xml` and `job.properties` are put by Oozie deserves configuration.

We have a sane default for the prefix in `oozie-default.xml`: `/user/${user.name}/jobs/application/generated`. However, postfix renamed to `gen_app_` plus timestamp to avoid any confusions.


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > core/src/main/java/org/apache/oozie/servlet/V1JobsServlet.java
> > Lines 117 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935983#file1935983line120>
> >
> >     IIRC, APP_PATH, COORDINATOR_APP_PATH, and BUNDLE_APP_PATH can all actually take an arbitrarily named XML file.  For example, you can set it to ````hdfs://host:8020/user/rkanter/my-wf/foo.xml```` instead of ````hdfs://host:8020/user/rkanter/my-wf/```` and Oozie will use foo.xml instead of workflow.xml.  Someone may even just do ````hdfs://host:8020/user/rkanter/my-wf/workflow.xml````.  We need to be careful to check for that any not always append /workflow|coordinator|bundle.xml.

Refactored in a way that if the user submits using `/path/to/something.xml`, we just take it (differentiating based on extension only). Otherwise, depending on whether the user submits a workflow, coordinator, or bundle job, we put the postfix `/workflow.xml`, `/coordinator.xml`, or `/bundle.xml`, respectively.


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > core/src/main/resources/oozie-default.xml
> > Lines 3312-3322 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935985#file1935985line3312>
> >
> >     Or would we be better off putting these under a special directory under each user's home dir?  For example ````/user/rkanter/oozie-generated-workflows````
> >     
> >     With the current way, we're going to store all users' generated workflows under the oozie user's home dir, which means that all users need access to this directory.  I think that's probably okay, but it's a little funny.  If we put these under each user's home dir, there's no problem.

Those are HDFS folders, so maybe have a HDFS folder for each submitting user would be overkill. Anyway, isn't `${user.name}` the submitting user's login name when going via `OozieCLI`?


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/GraphVisualization.java
> > Lines 38 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935991#file1935991line38>
> >
> >     Why is this here?

Putting class and method level Javadoc. For examples, for better understanding, we're generating also PNG images from the graphs.

Removed its unused `main()` method.


- András


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/64029/#review195200
-----------------------------------------------------------


On Jan. 8, 2018, 10:31 p.m., András Piros wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/64029/
> -----------------------------------------------------------
> 
> (Updated Jan. 8, 2018, 10:31 p.m.)
> 
> 
> Review request for oozie, Attila Sasvari, Peter Cseh, and Robert Kanter.
> 
> 
> Repository: oozie-git
> 
> 
> Description
> -------
> 
> OOZIE-2339 Provide an API for writing jobs based on the XSD schemas
> 
> 
> Diffs
> -----
> 
>   .gitignore a4285a0d77ac2e4e8fc4afbfa21bf9fd287b3e4d 
>   client/pom.xml 3b67d1286499337d61c269f9dbd1ff65ba23b903 
>   client/src/main/java/org/apache/oozie/cli/ApiJarFactory.java PRE-CREATION 
>   client/src/main/java/org/apache/oozie/cli/ApiJarLoader.java PRE-CREATION 
>   client/src/main/java/org/apache/oozie/cli/OozieCLI.java 4abc7502c0c9d8b59ded2baaed30c407ad073008 
>   client/src/main/java/org/apache/oozie/cli/WorkflowFactoryCompiler.java PRE-CREATION 
>   client/src/main/java/org/apache/oozie/client/OozieClient.java 7e41ef89c784882c26f4af0da0110101fa1a61a0 
>   core/src/main/java/org/apache/oozie/BaseLocalOozieClient.java 38fb006980c0acb582b4f91175be1ced8a1afa79 
>   core/src/main/java/org/apache/oozie/local/LocalOozie.java 9ab646cd53223d903e387eb92aa103a7b6577d0f 
>   core/src/main/java/org/apache/oozie/servlet/BaseJobServlet.java e1bd3cf61aabfa4311881b2944fc9f10ffe9145d 
>   core/src/main/java/org/apache/oozie/servlet/BaseJobsServlet.java d4b08711223356c8d4f58a3391b6b87efa0a2b73 
>   core/src/main/java/org/apache/oozie/servlet/ServletUtilities.java 9cdd915c02a3e34ad211cf6cced2e64f3a1196a0 
>   core/src/main/java/org/apache/oozie/servlet/V0JobsServlet.java ff50f3d121d8af7d607124424915e1bf30ffb109 
>   core/src/main/java/org/apache/oozie/servlet/V1JobsServlet.java c1ca65fd2f8bf0f3e5c618dddcba3bf52eaf5420 
>   core/src/main/java/org/apache/oozie/servlet/V2ValidateServlet.java 7bf8fb3f0ce9253d553c7b1883666811686f6a9f 
>   core/src/main/resources/oozie-default.xml 830893fc50f0eb044df91c15ba87ed17761836d4 
>   core/src/test/java/org/apache/oozie/client/TestOozieCLI.java cf7663102b2054c6f20a7bb09800f06bd11cfffb 
>   core/src/test/java/org/apache/oozie/test/MiniOozieTestCase.java 12ede028655f2a30613a9f802e48cd3a27af6ed9 
>   docs/src/site/twiki/DG_CommandLineTool.twiki 24fb1c99101b20c2ce2a6f103288fc090ceab3e7 
>   jobs/jobs-api/pom.xml PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/Condition.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/GraphVisualization.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/ModifyOnce.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ActionAttributes.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ActionAttributesBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Builder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ChFSBase.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ChFSBaseBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Chgrp.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ChgrpBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Chmod.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ChmodBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Delete.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/DistcpAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/DistcpActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/EmailAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/EmailActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ErrorHandler.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/FSAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/FSActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/HasAttributes.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Hive2Action.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Hive2ActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/HiveAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/HiveActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/JavaAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/JavaActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Launcher.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/LauncherBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/MapReduceAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/MapReduceActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Mkdir.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Move.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Node.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/NodeBuilderBaseImpl.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/PigAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/PigActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Pipes.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/PipesBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Prepare.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/PrepareBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ShellAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ShellActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SparkAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SparkActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SqoopAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SqoopActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SshAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SshActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Streaming.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/StreamingBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SubWorkflowAction.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/SubWorkflowActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/Touchz.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/factory/SimpleWorkflowFactory.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/factory/WorkflowFactory.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/BooleanToFLAGConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/BooleanToShellFLAGConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/BooleanToSshFLAGConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/CredentialsConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/DecisionConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/DistcpConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/DistcpPrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/DozerMapperSingletonWrapper.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ExplicitNodeConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ForkConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/GlobalConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/GraphNodes.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/GraphNodesToWORKFLOWAPPConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/GraphToWORKFLOWAPPConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/Hive2ConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/Hive2LauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/Hive2PrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/HiveConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/HiveLauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/HivePrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/InlineWorkflowConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/InlineWorkflowLauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/InlineWorkflowPrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/JoinConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/MapToConfigurationPropertyConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ParametersConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/RealChildLocator.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ShellConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ShellLauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/ShellPrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SparkConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SparkLauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SparkPrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SqoopConfigurationConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SqoopLauncherConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/SqoopPrepareConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/mapping/StartConverter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/DagNodeWithCondition.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/Decision.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/DecisionJoin.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/End.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/ExplicitNode.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/Fork.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/Graph.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/Join.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/JoiningNodeBase.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/NodeBase.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/oozie/dag/Start.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/serialization/WorkflowMarshaller.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/ConfigurationEntry.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Credential.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Credentials.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/CredentialsBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Global.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/GlobalBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Parameter.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Parameters.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/ParametersBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/Workflow.java PRE-CREATION 
>   jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/workflow/WorkflowBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/main/resources/action_mappings.xml PRE-CREATION 
>   jobs/jobs-api/src/main/resources/checkstyle-header.txt PRE-CREATION 
>   jobs/jobs-api/src/main/resources/checkstyle.xml PRE-CREATION 
>   jobs/jobs-api/src/main/resources/dozer_config.xml PRE-CREATION 
>   jobs/jobs-api/src/main/resources/mappingGraphToWORKFLOWAPP.xml PRE-CREATION 
>   jobs/jobs-api/src/main/xjb/bindings.xml PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/NodesToPng.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/TestCondition.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/TestModifyOnce.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestActionAttributesBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestChBaseBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestChgrpBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestChmodBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestDelete.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestDistcpActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestEmailActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestErrorHandler.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestFSActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestHive2ActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestHiveActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestJavaActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestLauncherBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestMapReduceActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestMove.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestNodeBuilderBaseImpl.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestPigActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestPipesBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestPrepareBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestShellActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestSparkActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestSqoopActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestSshActionBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestStreamingBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestSubWorkflowBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/action/TestTouchz.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestConfigurationMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestControlNodeMappingBase.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestCredentialsMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestDecisionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestDeleteMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestDistcpActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestEmailActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestEndMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestExplicitNodeMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestFSActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestForkMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestGlobalMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestGraphMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestHive2ActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestHiveActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestJavaActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestJoinMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestMapReduceActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestMappings.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestMkdirMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestParametersMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestPigActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestPipesMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestPrepareMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestShellActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestSparkActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestSqoopActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestSshActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestStartMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestStreamingMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/mapping/TestSubWorkflowActionMapping.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestDecision.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestDecisionJoin.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestEnd.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestExplicitNode.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestFork.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestGraph.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestJoin.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestJoiningNodeBase.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestNodeBase.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/oozie/dag/TestStart.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/workflow/TestCredentialsBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/workflow/TestGlobalBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/workflow/TestParametersBuilder.java PRE-CREATION 
>   jobs/jobs-api/src/test/java/org/apache/oozie/jobs/api/workflow/TestWorkflowBuilder.java PRE-CREATION 
>   jobs/jobs-client/pom.xml PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestCredentialsExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestGlobalExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestJavaMainExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestParametersExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestShellExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/examples/TestSparkExample.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/jaxb/TestJAXBWorkflow.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestDistcpAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestEmailAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestFSAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestHive2Action.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestHiveAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestJavaAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestMapReduceAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestPigAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestShellAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestSparkAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestSqoopAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/java/org/apache/oozie/jobs/client/minitest/TestSshAction.java PRE-CREATION 
>   jobs/jobs-client/src/test/resources/workflow-all-actions.xml PRE-CREATION 
>   jobs/jobs-client/src/test/resources/workflow-mapreduce-action.xml PRE-CREATION 
>   jobs/pom.xml PRE-CREATION 
>   minitest/pom.xml 82c27b6ebee55f339627723c688c951462d11a79 
>   minitest/src/test/java/org/apache/oozie/test/TestWorkflow.java 4257b60b132d40a9bbaf24ec75ae1a125ecb6855 
>   minitest/src/test/java/org/apache/oozie/test/WorkflowTestCase.java PRE-CREATION 
>   pom.xml 2c526487a751e6426737690404e6ad4b9b7e5551 
> 
> 
> Diff: https://reviews.apache.org/r/64029/diff/4/
> 
> 
> Testing
> -------
> 
> More hundred JUnit test cases under `jobs-api` module. Some of these leverage `TestWorkflow` from `minitest` that uses `OozieClient`, `MiniDFSCluster`, `MiniMRCluster` for integration testing.
> 
> 
> Thanks,
> 
> András Piros
> 
>