<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<coordinator-app xmlns="uri:oozie:coordinator:0.2" name="COORD-TEST" frequency="1" start="#start" end="#end" timezone="UTC" freq_timeunit="DAY" end_of_duration="NONE">
        <controls>
        	<timeout>10</timeout>
        	<concurrency>2</concurrency>
        	<execution>LIFO</execution>
        </controls>
        <action>
        	<workflow>
        	<app-path>hdfs:///tmp/workflows/</app-path>
        	</workflow>
        </action>
</coordinator-app>
