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/03/20 21:56:38 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:
> > client/src/main/java/org/apache/oozie/cli/ApiJarFactory.java
> > Lines 68-73 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935972#file1935972line68>
> >
> >     Oozie's ````copyStream```` already has a method that does this.  If you don't want to pull in oozie-core, there should be some similar methods in Commons-IO

`IOUtils.copy(InputStream, OutputStream)` does the trick.


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > jobs/jobs-api/src/main/java/org/apache/oozie/jobs/api/action/ActionAttributes.java
> > Lines 28 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1935993#file1935993line28>
> >
> >     Is this something we're going to have to manually maintain going forward if the XML schema changes?  If so, and/or if there are other cases of that, we should have some comments or developer docs or something explaining what to do and when.  Otherwise, I can easily see this not getting updated when someone updates the schema.
> >     
> >     Even better would be to somehow have a unit test that fails if these get out of sync.

Actually, the binding between XSD attributes and Java attributes does not happen automatically, but is taken care of by Dozer framework. Please see `dozer_config.xml` and all the classes inside `org.apache.oozie.jobs.api.mapping` within `jobs-api`. So yes, we need to have a developer docs stating what else to update when there is a schema change / extension.

On the other hand, XSDs are versioned, and Dozer mapping files are bound to latest, v1.0 XSDs. That said, mapping etc. to the existing latest XSDs is tested within `org.apache.oozie.jobs.api.mapping` inside `jobs-api`, and `org.apache.oozie.jobs.client.jaxb.TestJAXBWorkflow` inside `jobs-client`.


> On Jan. 11, 2018, 1:53 a.m., Robert Kanter wrote:
> > pom.xml
> > Lines 131 (patched)
> > <https://reviews.apache.org/r/64029/diff/4/?file=1936212#file1936212line131>
> >
> >     I wonder if we should call this something else.  "jobs" isn't super clear, and we already have a number of things called jobs (e.g. Oozie Jobs (workflows, coords, etc), Hadoop Jobs (apps), etc).  Maybe "jobs-api"?  Though that's not much different.  I'm not sure of a good name.

The problem is here we should have two artifacts - `jobs-api` for the API itself, can be referenced by `client`, while `jobs-client` is a sample client using `jobs-api` consisting of examples and integration tests. The two are both children of `jobs` right now, that is a `pom` parent of both.

We want in the future to have not only workflow, but coordinator, and bundle jobs also generated by `jobs-api`. I don't find a better name for the parent, but clients will reference and use `jobs-api`, hence, not so important IMO.


- 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
> 
>