You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by pa...@apache.org on 2016/03/01 08:24:16 UTC

[2/7] falcon git commit: Removing addons/ non-docs directory from asf-site branch

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/hivedr/src/test/java/org/apache/falcon/hive/DBReplicationStatusTest.java
----------------------------------------------------------------------
diff --git a/addons/hivedr/src/test/java/org/apache/falcon/hive/DBReplicationStatusTest.java b/addons/hivedr/src/test/java/org/apache/falcon/hive/DBReplicationStatusTest.java
deleted file mode 100644
index bfeca8d..0000000
--- a/addons/hivedr/src/test/java/org/apache/falcon/hive/DBReplicationStatusTest.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/**
- * 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.
- */
-package org.apache.falcon.hive;
-
-import org.apache.falcon.hive.exception.HiveReplicationException;
-import org.apache.falcon.hive.util.DBReplicationStatus;
-import org.apache.falcon.hive.util.ReplicationStatus;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Unit tests for DBReplicationStatus.
- */
-@Test
-public class DBReplicationStatusTest {
-
-    private Map<String, ReplicationStatus> tableStatuses = new HashMap<String, ReplicationStatus>();
-    private ReplicationStatus dbReplicationStatus;
-    private ReplicationStatus tableStatus1;
-
-    public DBReplicationStatusTest() {
-    }
-
-    @BeforeClass
-    public void prepare() throws Exception {
-        dbReplicationStatus = new ReplicationStatus("source", "target", "jobname",
-                "Default1", null, ReplicationStatus.Status.FAILURE, 20L);
-        tableStatus1 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "Table1", ReplicationStatus.Status.SUCCESS, 20L);
-        tableStatuses.put("Table1", tableStatus1);
-
-    }
-
-    public void dBReplicationStatusSerializeTest() throws Exception {
-        DBReplicationStatus replicationStatus = new DBReplicationStatus(dbReplicationStatus, tableStatuses);
-
-        String expected = "{\n" + "    \"db_status\": {\n"
-                + "        \"sourceUri\": \"source\",\n" + "        \"targetUri\": \"target\",\n"
-                + "        \"jobName\": \"jobname\",\n" + "        \"database\": \"default1\",\n"
-                + "        \"status\": \"FAILURE\",\n" + "        \"eventId\": 20\n" + "    },\n"
-                + "    \"table_status\": {\"table1\": {\n" + "        \"sourceUri\": \"source\",\n"
-                + "        \"targetUri\": \"target\",\n" + "        \"jobName\": \"jobname\",\n"
-                + "        \"database\": \"default1\",\n" + "        \"table\": \"table1\",\n"
-                + "        \"status\": \"SUCCESS\",\n" + "        \"eventId\": 20\n" + "    }}\n" + "}";
-        String actual = replicationStatus.toJsonString();
-        Assert.assertEquals(actual, expected);
-    }
-
-    public void dBReplicationStatusDeserializeTest() throws Exception {
-
-        String jsonString = "{\"db_status\":{\"sourceUri\":\"source\","
-                + "\"targetUri\":\"target\",\"jobName\":\"jobname\",\"database\":\"default1\",\"status\":\"SUCCESS\","
-                + "\"eventId\":20},\"table_status\":{\"Table1\":{\"sourceUri\":\"source\",\"targetUri\":\"target\","
-                + "\"jobName\":\"jobname\",\"database\":\"default1\",\"table\":\"Table1\",\"status\":\"SUCCESS\","
-                + "\"eventId\":20},\"table3\":{\"sourceUri\":\"source\",\"targetUri\":\"target\","
-                + "\"jobName\":\"jobname\", \"database\":\"Default1\",\"table\":\"table3\",\"status\":\"FAILURE\","
-                + "\"eventId\":10}, \"table2\":{\"sourceUri\":\"source\",\"targetUri\":\"target\","
-                + "\"jobName\":\"jobname\", \"database\":\"default1\",\"table\":\"table2\",\"status\":\"INIT\"}}}";
-
-        DBReplicationStatus dbStatus = new DBReplicationStatus(jsonString);
-        Assert.assertEquals(dbStatus.getDatabaseStatus().getDatabase(), "default1");
-        Assert.assertEquals(dbStatus.getDatabaseStatus().getJobName(), "jobname");
-        Assert.assertEquals(dbStatus.getDatabaseStatus().getEventId(), 20);
-
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table1").getEventId(), 20);
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table1").getStatus(), ReplicationStatus.Status.SUCCESS);
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table2").getEventId(), -1);
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table2").getStatus(), ReplicationStatus.Status.INIT);
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table3").getEventId(), 10);
-        Assert.assertEquals(dbStatus.getTableStatuses().get("table3").getStatus(), ReplicationStatus.Status.FAILURE);
-
-
-    }
-
-    public void wrongDBForTableTest() throws Exception {
-
-        ReplicationStatus newDbStatus = new ReplicationStatus("source", "target", "jobname",
-                "wrongDb", null, ReplicationStatus.Status.FAILURE, 20L);
-        new DBReplicationStatus(newDbStatus);
-
-        try {
-            new DBReplicationStatus(newDbStatus, tableStatuses);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Cannot set status for table default1.table1, It does not belong to DB wrongdb");
-        }
-
-        String jsonString = "{\n" + "    \"db_status\": {\n"
-                + "        \"sourceUri\": \"source\",\n" + "        \"targetUri\": \"target\",\n"
-                + "        \"jobName\": \"jobname\",\n" + "        \"database\": \"wrongdb\",\n"
-                + "        \"status\": \"FAILURE\",\n" + "        \"eventId\": 20\n" + "    },\n"
-                + "    \"table_status\": {\"table1\": {\n" + "        \"sourceUri\": \"source\",\n"
-                + "        \"targetUri\": \"target\",\n" + "        \"jobName\": \"jobname\",\n"
-                + "        \"database\": \"default1\",\n" + "        \"table\": \"table1\",\n"
-                + "        \"status\": \"SUCCESS\",\n" + "        \"eventId\": 20\n" + "    }}\n" + "}";
-
-        try {
-            new DBReplicationStatus(jsonString);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Unable to create DBReplicationStatus from JsonString. Cannot set status for "
-                            + "table default1.table1, It does not belong to DB wrongdb");
-        }
-    }
-
-    public void updateTableStatusTest() throws Exception {
-        DBReplicationStatus replicationStatus = new DBReplicationStatus(dbReplicationStatus, tableStatuses);
-        replicationStatus.updateTableStatus(tableStatus1);
-
-        // wrong DB test
-        try {
-            replicationStatus.updateTableStatus(new ReplicationStatus("source", "target", "jobname",
-                    "wrongDB", "table2", ReplicationStatus.Status.INIT, -1L));
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Cannot update Table Status. TableDB wrongdb does not match current DB default1");
-        }
-
-        // wrong status test
-        try {
-            replicationStatus.updateTableStatus(dbReplicationStatus);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Cannot update Table Status. Table name is empty.");
-        }
-
-    }
-
-    public void updateDBStatusTest() throws Exception {
-        DBReplicationStatus replicationStatus = new DBReplicationStatus(dbReplicationStatus, tableStatuses);
-        replicationStatus.updateDbStatus(dbReplicationStatus);
-
-        // wrong DB test
-        try {
-            replicationStatus.updateDbStatus(new ReplicationStatus("source", "target", "jobname",
-                    "wrongDB", null, ReplicationStatus.Status.INIT, -1L));
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Cannot update Database Status. StatusDB wrongdb does not match current DB default1");
-        }
-
-        // wrong status test
-        try {
-            replicationStatus.updateDbStatus(tableStatus1);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Cannot update DB Status. This is table level status.");
-        }
-    }
-
-    public void updateDbStatusFromTableStatusesTest() throws Exception {
-
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "jobname",
-                "default1", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table1 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "table1", ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table2 = new ReplicationStatus("source", "target", "jobname",
-                "Default1", "table2", ReplicationStatus.Status.INIT, -1L);
-        ReplicationStatus table3 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "Table3", ReplicationStatus.Status.FAILURE, 15L);
-        ReplicationStatus table4 = new ReplicationStatus("source", "target", "jobname",
-                "Default1", "Table4", ReplicationStatus.Status.FAILURE, 18L);
-        Map<String, ReplicationStatus> tables = new HashMap<String, ReplicationStatus>();
-
-        tables.put("table1", table1);
-        tables.put("table2", table2);
-        tables.put("table3", table3);
-        tables.put("table4", table4);
-
-        // If there is a failue, last eventId should be lowest eventId of failed tables
-        DBReplicationStatus status = new DBReplicationStatus(dbStatus, tables);
-        Assert.assertEquals(status.getDatabaseStatus().getEventId(), 20);
-        Assert.assertEquals(status.getDatabaseStatus().getStatus(), ReplicationStatus.Status.SUCCESS);
-        status.updateDbStatusFromTableStatuses();
-        Assert.assertEquals(status.getDatabaseStatus().getEventId(), 15);
-        Assert.assertEquals(status.getDatabaseStatus().getStatus(), ReplicationStatus.Status.FAILURE);
-
-        // If all tables succeed, last eventId should be highest eventId of success tables
-        table3 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "table3", ReplicationStatus.Status.SUCCESS, 25L);
-        table4 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "table4", ReplicationStatus.Status.SUCCESS, 22L);
-        tables.put("Table3", table3);
-        tables.put("Table4", table4);
-        status = new DBReplicationStatus(dbStatus, tables);
-        status.updateDbStatusFromTableStatuses();
-        Assert.assertEquals(status.getDatabaseStatus().getEventId(), 25);
-        Assert.assertEquals(status.getDatabaseStatus().getStatus(), ReplicationStatus.Status.SUCCESS);
-
-        // Init tables should not change DB status.
-        Map<String, ReplicationStatus> initOnlyTables = new HashMap<String, ReplicationStatus>();
-        initOnlyTables.put("table2", table2);
-        dbStatus = new ReplicationStatus("source", "target", "jobname",
-                "default1", null, ReplicationStatus.Status.SUCCESS, 20L);
-        status = new DBReplicationStatus(dbStatus, initOnlyTables);
-        Assert.assertEquals(status.getDatabaseStatus().getEventId(), 20);
-        Assert.assertEquals(status.getDatabaseStatus().getStatus(), ReplicationStatus.Status.SUCCESS);
-        status.updateDbStatusFromTableStatuses();
-        Assert.assertEquals(status.getDatabaseStatus().getEventId(), 20);
-        Assert.assertEquals(status.getDatabaseStatus().getStatus(), ReplicationStatus.Status.SUCCESS);
-
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/hivedr/src/test/java/org/apache/falcon/hive/DRTest.java
----------------------------------------------------------------------
diff --git a/addons/hivedr/src/test/java/org/apache/falcon/hive/DRTest.java b/addons/hivedr/src/test/java/org/apache/falcon/hive/DRTest.java
deleted file mode 100644
index 1f44b62..0000000
--- a/addons/hivedr/src/test/java/org/apache/falcon/hive/DRTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * 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.
- */
-
-package org.apache.falcon.hive;
-
-/**
- * Test class for DR.
- */
-public class DRTest {
-    public void testHiveDr(String[] args) {
-        String[] testArgs = {
-            "-sourceMetastoreUri", "thrift://localhost:9083",
-            "-sourceDatabase", "default",
-            "-sourceTable", "test",
-            "-sourceStagingPath", "/apps/hive/tools/dr",
-            "-sourceNN", "hdfs://localhost:8020",
-            "-sourceRM", "local",
-
-            "-targetMetastoreUri", "thrift://localhost:9083",
-            "-targetStagingPath", "/apps/hive/tools/dr",
-            "-targetNN", "hdfs://localhost:8020",
-            "-targetRM", "local",
-
-            "-maxEvents", "5",
-            "-replicationMaxMaps", "1",
-            "-distcpMapBandwidth", "4",
-        };
-        HiveDRTool.main(testArgs);
-    }
-}

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRStatusStoreTest.java
----------------------------------------------------------------------
diff --git a/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRStatusStoreTest.java b/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRStatusStoreTest.java
deleted file mode 100644
index 5bc39df..0000000
--- a/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRStatusStoreTest.java
+++ /dev/null
@@ -1,343 +0,0 @@
-/**
- * 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.
- */
-package org.apache.falcon.hive;
-
-import org.apache.falcon.cluster.util.EmbeddedCluster;
-import org.apache.falcon.hadoop.JailedFileSystem;
-import org.apache.falcon.hive.exception.HiveReplicationException;
-import org.apache.falcon.hive.util.DRStatusStore;
-import org.apache.falcon.hive.util.HiveDRStatusStore;
-import org.apache.falcon.hive.util.ReplicationStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.LocalFileSystem;
-import org.apache.hadoop.fs.LocatedFileStatus;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.RemoteIterator;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * Unit tests for HiveDRStatusStore.
- */
-@Test
-public class HiveDRStatusStoreTest {
-    private HiveDRStatusStore drStatusStore;
-    private FileSystem fileSystem = new JailedFileSystem();
-
-    public HiveDRStatusStoreTest() throws Exception {
-        EmbeddedCluster cluster =  EmbeddedCluster.newCluster("hiveReplTest");
-        Path storePath = new Path(DRStatusStore.BASE_DEFAULT_STORE_PATH);
-
-        fileSystem.initialize(LocalFileSystem.getDefaultUri(cluster.getConf()), cluster.getConf());
-        if (fileSystem.exists(storePath)) {
-            fileSystem.delete(storePath, true);
-        }
-        FileSystem.mkdirs(fileSystem, storePath, DRStatusStore.DEFAULT_STORE_PERMISSION);
-        drStatusStore = new HiveDRStatusStore(fileSystem, fileSystem.getFileStatus(storePath).getGroup());
-    }
-
-    @BeforeClass
-    public  void updateReplicationStatusTest() throws Exception {
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "jobname",
-                "Default1", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table1 = new ReplicationStatus("source", "target", "jobname",
-                "Default1", "table1", ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table2 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "Table2", ReplicationStatus.Status.INIT, -1L);
-        ReplicationStatus table3 = new ReplicationStatus("source", "target", "jobname",
-                "Default1", "Table3", ReplicationStatus.Status.FAILURE, 15L);
-        ReplicationStatus table4 = new ReplicationStatus("source", "target", "jobname",
-                "default1", "table4", ReplicationStatus.Status.FAILURE, 18L);
-        ArrayList<ReplicationStatus> replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(table1);
-        replicationStatusList.add(table2);
-        replicationStatusList.add(table3);
-        replicationStatusList.add(table4);
-        replicationStatusList.add(dbStatus);
-        drStatusStore.updateReplicationStatus("jobname", replicationStatusList);
-    }
-
-    @Test(expectedExceptions = IOException.class,
-            expectedExceptionsMessageRegExp = ".*does not have correct ownership/permissions.*")
-    public void testDrStatusStoreWithFakeUser() throws IOException {
-        new HiveDRStatusStore(fileSystem, "fakeGroup");
-    }
-
-    public  void updateReplicationStatusNewTablesTest() throws Exception {
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "jobname2",
-                "default2", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table1 = new ReplicationStatus("source", "target", "jobname2",
-                "Default2", "table1", ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table2 = new ReplicationStatus("source", "target", "jobname2",
-                "default2", "Table2", ReplicationStatus.Status.INIT, -1L);
-        ReplicationStatus table3 = new ReplicationStatus("source", "target", "jobname2",
-                "default2", "table3", ReplicationStatus.Status.FAILURE, 15L);
-        ReplicationStatus table4 = new ReplicationStatus("source", "target", "jobname2",
-                "Default2", "Table4", ReplicationStatus.Status.FAILURE, 18L);
-        ArrayList<ReplicationStatus> replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(table1);
-        replicationStatusList.add(table2);
-        replicationStatusList.add(table3);
-        replicationStatusList.add(table4);
-        replicationStatusList.add(dbStatus);
-
-        drStatusStore.updateReplicationStatus("jobname2", replicationStatusList);
-        ReplicationStatus status = drStatusStore.getReplicationStatus("source", "target", "jobname2", "default2");
-        Assert.assertEquals(status.getEventId(), 15);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.FAILURE);
-        Assert.assertEquals(status.getJobName(), "jobname2");
-        Assert.assertEquals(status.getTable(), null);
-        Assert.assertEquals(status.getSourceUri(), "source");
-
-        Iterator<ReplicationStatus> iter = drStatusStore.getTableReplicationStatusesInDb("source", "target",
-                "jobname2", "default2");
-        int size = 0;
-        while(iter.hasNext()) {
-            iter.next();
-            size++;
-        }
-        Assert.assertEquals(4, size);
-
-        table3 = new ReplicationStatus("source", "target", "jobname2",
-                "default2", "table3", ReplicationStatus.Status.SUCCESS, 25L);
-        table4 = new ReplicationStatus("source", "target", "jobname2",
-                "Default2", "table4", ReplicationStatus.Status.SUCCESS, 22L);
-        ReplicationStatus table5 = new ReplicationStatus("source", "target", "jobname2",
-                "default2", "Table5", ReplicationStatus.Status.SUCCESS, 18L);
-        ReplicationStatus db1table1 = new ReplicationStatus("source", "target", "jobname2",
-                "Default1", "Table1", ReplicationStatus.Status.SUCCESS, 18L);
-        replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(table5);
-        replicationStatusList.add(table3);
-        replicationStatusList.add(table4);
-        replicationStatusList.add(db1table1);
-
-        drStatusStore.updateReplicationStatus("jobname2", replicationStatusList);
-        status = drStatusStore.getReplicationStatus("source", "target", "jobname2", "default1");
-        Assert.assertEquals(status.getEventId(), 18);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.SUCCESS);
-
-        status = drStatusStore.getReplicationStatus("source", "target", "jobname2", "default2");
-        Assert.assertEquals(status.getEventId(), 25);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.SUCCESS);
-
-        iter = drStatusStore.getTableReplicationStatusesInDb("source", "target",
-                "jobname2", "default2");
-        size = 0;
-        while(iter.hasNext()) {
-            iter.next();
-            size++;
-        }
-        Assert.assertEquals(5, size);
-    }
-
-    public void getReplicationStatusDBTest() throws HiveReplicationException {
-        ReplicationStatus status = drStatusStore.getReplicationStatus("source", "target", "jobname", "Default1");
-        Assert.assertEquals(status.getEventId(), 15);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.FAILURE);
-        Assert.assertEquals(status.getJobName(), "jobname");
-        Assert.assertEquals(status.getTable(), null);
-        Assert.assertEquals(status.getSourceUri(), "source");
-    }
-
-    public void checkReplicationConflictTest() throws HiveReplicationException {
-
-        try {
-            //same source, same job, same DB, null table : pass
-            drStatusStore.checkForReplicationConflict("source", "jobname", "default1", null);
-
-            //same source, same job, same DB, same table : pass
-            drStatusStore.checkForReplicationConflict("source", "jobname", "default1", "table1");
-
-            //same source, same job, different DB, null table : pass
-            drStatusStore.checkForReplicationConflict("source", "jobname", "diffDB", null);
-
-            //same source, same job, different DB, different table : pass
-            drStatusStore.checkForReplicationConflict("source", "jobname", "diffDB", "diffTable");
-
-            // same source, different job, same DB, diff table : pass
-            drStatusStore.checkForReplicationConflict("source", "diffJob", "default1", "diffTable");
-        } catch (Exception e) {
-            Assert.fail(e.getMessage());
-        }
-
-        try {
-            // different source, same job, same DB, null table : fail
-            drStatusStore.checkForReplicationConflict("diffSource", "jobname", "default1", null);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Two different sources are attempting to replicate to same db default1."
-                            + " New Source = diffSource, Existing Source = source");
-        }
-
-        try {
-            // same source, different job, same DB, null table : fail
-            drStatusStore.checkForReplicationConflict("source", "diffJob", "default1", null);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Two different jobs are attempting to replicate to same db default1."
-                            + " New Job = diffJob, Existing Job = jobname");
-        }
-
-        try {
-            // same source, different job, same DB, same table : fail
-            drStatusStore.checkForReplicationConflict("source", "diffJob", "default1", "table1");
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Two different jobs are trying to replicate to same table table1."
-                            + " New job = diffJob, Existing job = jobname");
-        }
-
-
-    }
-
-    public void deleteReplicationStatusTest() throws Exception {
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "deleteJob",
-                "deleteDB", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table1 = new ReplicationStatus("source", "target", "deleteJob",
-                "deleteDB", "Table1", ReplicationStatus.Status.SUCCESS, 20L);
-        ArrayList<ReplicationStatus> replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(table1);
-        replicationStatusList.add(dbStatus);
-        drStatusStore.updateReplicationStatus("deleteJob", replicationStatusList);
-
-        ReplicationStatus status = drStatusStore.getReplicationStatus("source", "target", "deleteJob", "deleteDB");
-        Path statusPath = drStatusStore.getStatusDirPath(status.getDatabase(), status.getJobName());
-        Assert.assertEquals(fileSystem.exists(statusPath), true);
-
-        drStatusStore.deleteReplicationStatus("deleteJob", "deleteDB");
-        Assert.assertEquals(fileSystem.exists(statusPath), false);
-    }
-
-    public void  getReplicationStatusTableTest() throws HiveReplicationException {
-        ReplicationStatus status = drStatusStore.getReplicationStatus("source", "target",
-                "jobname", "default1", "table1");
-        Assert.assertEquals(status.getEventId(), 20);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.SUCCESS);
-        Assert.assertEquals(status.getTable(), "table1");
-
-        status = drStatusStore.getReplicationStatus("source", "target",
-                "jobname", "Default1", "Table2");
-        Assert.assertEquals(status.getEventId(), -1);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.INIT);
-        Assert.assertEquals(status.getTable(), "table2");
-
-        status = drStatusStore.getReplicationStatus("source", "target",
-                "jobname", "default1", "Table3");
-        Assert.assertEquals(status.getEventId(), 15);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.FAILURE);
-        Assert.assertEquals(status.getTable(), "table3");
-
-        status = drStatusStore.getReplicationStatus("source", "target",
-                "jobname", "default1", "table4");
-        Assert.assertEquals(status.getEventId(), 18);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.FAILURE);
-        Assert.assertEquals(status.getTable(), "table4");
-    }
-
-    public void getTableReplicationStatusesInDbTest() throws HiveReplicationException {
-        Iterator<ReplicationStatus> iter = drStatusStore.getTableReplicationStatusesInDb("source", "target",
-                "jobname", "Default1");
-        int size = 0;
-        while(iter.hasNext()) {
-            size++;
-            ReplicationStatus status = iter.next();
-            if (status.getTable().equals("table3")) {
-                Assert.assertEquals(status.getEventId(), 15);
-                Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.FAILURE);
-                Assert.assertEquals(status.getTable(), "table3");
-            }
-        }
-        Assert.assertEquals(4, size);
-    }
-
-    public void fileRotationTest() throws Exception {
-        // initialize replication status store for db default3.
-        // This should init with eventId = -1 and status = INIT
-        ReplicationStatus status = drStatusStore.getReplicationStatus("source", "target",
-                "jobname3", "default3");
-        Assert.assertEquals(status.getEventId(), -1);
-        Assert.assertEquals(status.getStatus(), ReplicationStatus.Status.INIT);
-
-        // update status 5 times resulting in 6 files : latest.json + five rotated files
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "jobname3",
-                "Default3", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ReplicationStatus table1 = new ReplicationStatus("source", "target", "jobname3",
-                "default3", "Table1", ReplicationStatus.Status.SUCCESS, 20L);
-        ArrayList<ReplicationStatus> replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(table1);
-        replicationStatusList.add(dbStatus);
-
-        for(int i=0; i<5; i++) {
-            Thread.sleep(2000);
-            drStatusStore.updateReplicationStatus("jobname3", replicationStatusList);
-        }
-
-        status = drStatusStore.getReplicationStatus("source", "target", "jobname3", "default3");
-        Path statusPath = drStatusStore.getStatusDirPath(status.getDatabase(), status.getJobName());
-        RemoteIterator<LocatedFileStatus> iter = fileSystem.listFiles(statusPath, false);
-        Assert.assertEquals(getRemoteIterSize(iter), 6);
-
-        drStatusStore.rotateStatusFiles(statusPath, 3, 10000000);
-        iter = fileSystem.listFiles(statusPath, false);
-        Assert.assertEquals(getRemoteIterSize(iter), 6);
-
-        drStatusStore.rotateStatusFiles(statusPath, 3, 6000);
-        iter = fileSystem.listFiles(statusPath, false);
-        Assert.assertEquals(getRemoteIterSize(iter), 3);
-    }
-
-    public void wrongJobNameTest() throws Exception {
-        ReplicationStatus dbStatus = new ReplicationStatus("source", "target", "jobname3",
-                "Default3", null, ReplicationStatus.Status.SUCCESS, 20L);
-        ArrayList<ReplicationStatus> replicationStatusList = new ArrayList<ReplicationStatus>();
-        replicationStatusList.add(dbStatus);
-
-        try {
-            drStatusStore.updateReplicationStatus("jobname2", replicationStatusList);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            // Expected exception due to jobname mismatch
-        }
-    }
-
-    @AfterClass
-    public void cleanUp() throws IOException {
-        fileSystem.delete(new Path(DRStatusStore.BASE_DEFAULT_STORE_PATH), true);
-    }
-
-    private int getRemoteIterSize(RemoteIterator<LocatedFileStatus> iter) throws IOException {
-        int size = 0;
-        while(iter.hasNext()) {
-            iter.next();
-            size++;
-        }
-        return size;
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRTest.java
----------------------------------------------------------------------
diff --git a/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRTest.java b/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRTest.java
deleted file mode 100644
index cdeddaa..0000000
--- a/addons/hivedr/src/test/java/org/apache/falcon/hive/HiveDRTest.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/**
- * 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.
- */
-
-package org.apache.falcon.hive;
-
-import com.google.common.base.Function;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.io.IOUtils;
-import org.apache.falcon.cluster.util.EmbeddedCluster;
-import org.apache.falcon.hadoop.JailedFileSystem;
-import org.apache.falcon.hive.util.DRStatusStore;
-import org.apache.falcon.hive.util.DelimiterUtils;
-import org.apache.falcon.hive.util.EventSourcerUtils;
-import org.apache.falcon.hive.util.HiveDRStatusStore;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.LocalFileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.metastore.api.NotificationEvent;
-import org.apache.hadoop.hive.metastore.api.Table;
-import org.apache.hive.hcatalog.api.HCatClient;
-import org.apache.hive.hcatalog.api.HCatNotificationEvent;
-import org.apache.hive.hcatalog.api.repl.Command;
-import org.apache.hive.hcatalog.api.repl.ReplicationTask;
-import org.apache.hive.hcatalog.api.repl.ReplicationUtils;
-import org.apache.hive.hcatalog.api.repl.StagingDirectoryProvider;
-import org.apache.hive.hcatalog.common.HCatConstants;
-import org.apache.hive.hcatalog.messaging.MessageFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import javax.annotation.Nullable;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Test for Hive DR export and import.
- */
-public class HiveDRTest {
-    private FileSystem fileSystem;
-    private HCatClient client;
-    private MetaStoreEventSourcer sourcer;
-    private EmbeddedCluster cluster;
-    private String dbName = "testdb";
-    private String tableName = "testtable";
-    private StagingDirectoryProvider stagingDirectoryProvider;
-    private MessageFactory msgFactory = MessageFactory.getInstance();
-
-    @BeforeMethod
-    public void setup() throws Exception {
-        client = HCatClient.create(new HiveConf());
-        initializeFileSystem();
-        sourcer = new MetaStoreEventSourcer(client, null, new EventSourcerUtils(cluster.getConf(),
-                false, "hiveReplTest"), null);
-        stagingDirectoryProvider = new StagingDirectoryProvider.TrivialImpl("/tmp", "/");
-    }
-
-    private void initializeFileSystem() throws Exception {
-        cluster =  EmbeddedCluster.newCluster("hivedr");
-        fileSystem = new JailedFileSystem();
-        Path storePath = new Path(DRStatusStore.BASE_DEFAULT_STORE_PATH);
-        fileSystem.initialize(LocalFileSystem.getDefaultUri(cluster.getConf()), cluster.getConf());
-        if (fileSystem.exists(storePath)) {
-            fileSystem.delete(storePath, true);
-        }
-        FileSystem.mkdirs(fileSystem, storePath, DRStatusStore.DEFAULT_STORE_PERMISSION);
-        HiveDRStatusStore drStatusStore = new HiveDRStatusStore(fileSystem,
-                fileSystem.getFileStatus(storePath).getGroup());
-    }
-
-    // Dummy mapping used for all db and table name mappings
-    private Function<String, String> debugMapping = new Function<String, String>(){
-        @Nullable
-        @Override
-        public String apply(@Nullable String s) {
-            if (s == null){
-                return null;
-            } else {
-                StringBuilder sb = new StringBuilder(s);
-                return sb.toString() + sb.reverse().toString();
-            }
-        }
-    };
-
-    @Test
-    public void testExportImportReplication() throws Exception {
-        Table t = new Table();
-        t.setDbName(dbName);
-        t.setTableName(tableName);
-        NotificationEvent event = new NotificationEvent(getEventId(), getTime(),
-                HCatConstants.HCAT_CREATE_TABLE_EVENT, msgFactory.buildCreateTableMessage(t).toString());
-        event.setDbName(t.getDbName());
-        event.setTableName(t.getTableName());
-
-        HCatNotificationEvent hev = new HCatNotificationEvent(event);
-        ReplicationTask rtask = ReplicationTask.create(client, hev);
-
-        Assert.assertEquals(hev.toString(), rtask.getEvent().toString());
-        verifyExportImportReplicationTask(rtask);
-    }
-
-    private void verifyExportImportReplicationTask(ReplicationTask rtask) throws Exception {
-        Assert.assertEquals(true, rtask.needsStagingDirs());
-        Assert.assertEquals(false, rtask.isActionable());
-
-        rtask.withSrcStagingDirProvider(stagingDirectoryProvider)
-                .withDstStagingDirProvider(stagingDirectoryProvider)
-                .withDbNameMapping(debugMapping)
-                .withTableNameMapping(debugMapping);
-
-        List<ReplicationTask> taskAdd = new ArrayList<ReplicationTask>();
-        taskAdd.add(rtask);
-        sourcer.processTableReplicationEvents(taskAdd.iterator(), dbName, tableName,
-                stagingDirectoryProvider.toString(), stagingDirectoryProvider.toString());
-
-        String metaFileName = sourcer.persistToMetaFile("hiveReplTest");
-        String event = readEventFile(new Path(metaFileName));
-        Assert.assertEquals(event.split(DelimiterUtils.FIELD_DELIM).length, 4);
-        Assert.assertEquals(dbName,
-                new String(Base64.decodeBase64(event.split(DelimiterUtils.FIELD_DELIM)[0]), "UTF-8"));
-        Assert.assertEquals(tableName,
-                new String(Base64.decodeBase64(event.split(DelimiterUtils.FIELD_DELIM)[1]), "UTF-8"));
-
-        String exportStr = readEventFile(new Path(event.split(DelimiterUtils.FIELD_DELIM)[2]));
-        String[] commandList = exportStr.split(DelimiterUtils.NEWLINE_DELIM);
-        for (String command : commandList) {
-            Command cmd = ReplicationUtils.deserializeCommand(command);
-            Assert.assertEquals(cmd.getEventId(), 42);
-            for(String stmt : cmd.get()) {
-                Assert.assertTrue(stmt.startsWith("EXPORT TABLE"));
-            }
-        }
-
-        String importStr = readEventFile(new Path(event.split(DelimiterUtils.FIELD_DELIM)[3]));
-        commandList = importStr.split(DelimiterUtils.NEWLINE_DELIM);
-        for (String command : commandList) {
-            Command cmd = ReplicationUtils.deserializeCommand(command);
-            Assert.assertEquals(cmd.getEventId(), 42);
-            for (String stmt : cmd.get()) {
-                Assert.assertTrue(stmt.startsWith("IMPORT TABLE"));
-            }
-        }
-    }
-
-    @Test
-    public void testImportReplication() throws Exception {
-        Table t = new Table();
-        t.setDbName("testdb");
-        t.setTableName("testtable");
-        NotificationEvent event = new NotificationEvent(getEventId(), getTime(),
-                HCatConstants.HCAT_DROP_TABLE_EVENT, msgFactory.buildDropTableMessage(t).toString());
-        event.setDbName(t.getDbName());
-        event.setTableName(t.getTableName());
-
-        HCatNotificationEvent hev = new HCatNotificationEvent(event);
-        ReplicationTask rtask = ReplicationTask.create(client, hev);
-
-        Assert.assertEquals(hev.toString(), rtask.getEvent().toString());
-        verifyImportReplicationTask(rtask);
-    }
-
-    private void verifyImportReplicationTask(ReplicationTask rtask) throws Exception {
-        Assert.assertEquals(false, rtask.needsStagingDirs());
-        Assert.assertEquals(true, rtask.isActionable());
-        rtask.withDbNameMapping(debugMapping)
-                .withTableNameMapping(debugMapping);
-
-        List<ReplicationTask> taskAdd = new ArrayList<ReplicationTask>();
-        taskAdd.add(rtask);
-        sourcer.processTableReplicationEvents(taskAdd.iterator(), dbName, tableName,
-                stagingDirectoryProvider.toString(), stagingDirectoryProvider.toString());
-        String persistFileName = sourcer.persistToMetaFile("hiveReplTest");
-        String event = readEventFile(new Path(persistFileName));
-
-        Assert.assertEquals(event.split(DelimiterUtils.FIELD_DELIM).length, 4);
-        Assert.assertEquals(dbName,
-                new String(Base64.decodeBase64(event.split(DelimiterUtils.FIELD_DELIM)[0]), "UTF-8"));
-        Assert.assertEquals(tableName,
-                new String(Base64.decodeBase64(event.split(DelimiterUtils.FIELD_DELIM)[1]), "UTF-8"));
-
-        String exportStr = readEventFile(new Path(event.split(DelimiterUtils.FIELD_DELIM)[2]));
-        String[] commandList = exportStr.split(DelimiterUtils.NEWLINE_DELIM);
-        for (String command : commandList) {
-            Command cmd = ReplicationUtils.deserializeCommand(command);
-            Assert.assertEquals(cmd.getEventId(), 42);
-            Assert.assertEquals(cmd.get().size(), 0);   //In case of drop size of export is 0. Metadata operation
-        }
-
-        String importStr = readEventFile(new Path(event.split(DelimiterUtils.FIELD_DELIM)[3]));
-        commandList = importStr.split(DelimiterUtils.NEWLINE_DELIM);
-        for (String command : commandList) {
-            Command cmd = ReplicationUtils.deserializeCommand(command);
-            Assert.assertEquals(cmd.getEventId(), 42);
-            for (String stmt : cmd.get()) {
-                Assert.assertTrue(stmt.startsWith("DROP TABLE"));
-            }
-        }
-    }
-
-    private long getEventId() {
-        // Does not need to be unique, just non-zero distinct value to test against.
-        return 42;
-    }
-
-    private int getTime() {
-        // Does not need to be actual time, just non-zero distinct value to test against.
-        return 1729;
-    }
-
-    private String readEventFile(Path eventFileName) throws IOException {
-        StringBuilder eventString = new StringBuilder();
-        BufferedReader in = new BufferedReader(new InputStreamReader(
-                fileSystem.open(eventFileName)));
-        try {
-            String line;
-            while ((line=in.readLine())!=null) {
-                eventString.append(line);
-            }
-        } catch (Exception e) {
-            throw new IOException(e);
-        } finally {
-            IOUtils.closeQuietly(in);
-        }
-        return eventString.toString();
-    }
-
-    @AfterMethod
-    public void tearDown() throws Exception {
-        client.close();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/hivedr/src/test/java/org/apache/falcon/hive/ReplicationStatusTest.java
----------------------------------------------------------------------
diff --git a/addons/hivedr/src/test/java/org/apache/falcon/hive/ReplicationStatusTest.java b/addons/hivedr/src/test/java/org/apache/falcon/hive/ReplicationStatusTest.java
deleted file mode 100644
index a02639c..0000000
--- a/addons/hivedr/src/test/java/org/apache/falcon/hive/ReplicationStatusTest.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * 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.
- */
-package org.apache.falcon.hive;
-
-import org.apache.falcon.hive.exception.HiveReplicationException;
-import org.apache.falcon.hive.util.ReplicationStatus;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Unit tests for ReplicationStatus.
- */
-@Test
-public class ReplicationStatusTest {
-
-    private ReplicationStatus dbStatus, tableStatus;
-
-    public ReplicationStatusTest() {}
-
-
-    @BeforeClass
-    public void prepare() throws Exception {
-        dbStatus = new ReplicationStatus("source", "target", "jobname",
-                "default1", null, ReplicationStatus.Status.INIT, 0L);
-        tableStatus = new ReplicationStatus("source", "target", "jobname",
-                "testDb", "Table1", ReplicationStatus.Status.SUCCESS, 0L);
-    }
-
-    public void replicationStatusSerializeTest() throws Exception {
-        String expected = "{\n    \"sourceUri\": \"source\",\n"
-                + "    \"targetUri\": \"target\",\n    \"jobName\": \"jobname\",\n"
-                + "    \"database\": \"testdb\",\n    \"table\": \"table1\",\n"
-                + "    \"status\": \"SUCCESS\",\n    \"eventId\": 0\n}";
-        String actual = tableStatus.toJsonString();
-        Assert.assertEquals(actual, expected);
-
-        expected = "{\n    \"sourceUri\": \"source\",\n    \"targetUri\": \"target\",\n"
-                + "    \"jobName\": \"jobname\",\n    \"database\": \"default1\",\n"
-                + "    \"status\": \"INIT\",\n    \"eventId\": 0\n}";
-        actual = dbStatus.toJsonString();
-        Assert.assertEquals(actual, expected);
-    }
-
-    public void replicationStatusDeserializeTest() throws Exception {
-        String tableInput = "{\n    \"sourceUri\": \"source\",\n"
-                + "    \"targetUri\": \"target\",\n    \"jobName\": \"testJob\",\n"
-                + "    \"database\": \"Test1\",\n    \"table\": \"table1\",\n"
-                + "    \"status\": \"SUCCESS\",\n    \"eventId\": 0\n}";
-        String dbInput = "{ \"sourceUri\": \"source\", \"targetUri\": \"target\",\"jobName\": \"jobname\",\n"
-                + "    \"database\": \"default1\", \"status\": \"FAILURE\","
-                + "   \"eventId\": 27, \"statusLog\": \"testLog\"}";
-
-        ReplicationStatus newDbStatus = new ReplicationStatus(dbInput);
-        ReplicationStatus newTableStatus = new ReplicationStatus(tableInput);
-
-        Assert.assertEquals(newDbStatus.getTable(), null);
-        Assert.assertEquals(newDbStatus.getEventId(), 27);
-        Assert.assertEquals(newDbStatus.getDatabase(), "default1");
-        Assert.assertEquals(newDbStatus.getLog(), "testLog");
-        Assert.assertEquals(newDbStatus.getStatus(), ReplicationStatus.Status.FAILURE);
-
-
-        Assert.assertEquals(newTableStatus.getTable(), "table1");
-        Assert.assertEquals(newTableStatus.getEventId(), 0);
-        Assert.assertEquals(newTableStatus.getDatabase(), "test1");
-        Assert.assertEquals(newTableStatus.getJobName(), "testJob");
-
-        // no table, no eventId, no log
-        dbInput = "{\n    \"sourceUri\": \"source\",\n"
-                + "    \"targetUri\": \"target\",\n    \"jobName\": \"testJob\",\n"
-                + "    \"database\": \"Test1\",\n"
-                + "    \"status\": \"SUCCESS\"\n}";
-        newDbStatus = new ReplicationStatus(dbInput);
-
-        Assert.assertEquals(newDbStatus.getDatabase(), "test1");
-        Assert.assertEquals(newDbStatus.getTable(), null);
-        Assert.assertEquals(newDbStatus.getEventId(), -1);
-        Assert.assertEquals(newDbStatus.getLog(), null);
-
-    }
-
-    public void invalidEventIdTest() throws Exception {
-        String tableInput = "{\n    \"sourceUri\": \"source\",\n"
-                + "    \"targetUri\": \"target\",\n    \"jobName\": \"testJob\",\n"
-                + "    \"database\": \"test1\",\n    \"table\": \"table1\",\n"
-                + "    \"status\": \"SUCCESS\",\n    \"eventId\": -100\n}";
-
-        ReplicationStatus newTableStatus = new ReplicationStatus(tableInput);
-        Assert.assertEquals(newTableStatus.getEventId(), -1);
-
-        newTableStatus.setEventId(-200);
-        Assert.assertEquals(newTableStatus.getEventId(), -1);
-
-        String expected = "{\n    \"sourceUri\": \"source\",\n"
-                + "    \"targetUri\": \"target\",\n    \"jobName\": \"testJob\",\n"
-                + "    \"database\": \"test1\",\n    \"table\": \"table1\",\n"
-                + "    \"status\": \"SUCCESS\",\n    \"eventId\": -1\n}";
-        String actual = newTableStatus.toJsonString();
-        Assert.assertEquals(actual, expected);
-
-        newTableStatus.setEventId(50);
-        Assert.assertEquals(newTableStatus.getEventId(), 50);
-    }
-
-    public void invalidStatusTest() throws Exception {
-
-        String dbInput = "{ \"sourceUri\": \"source\", \"targetUri\": \"target\",\"jobName\": \"jobname\",\n"
-                + "    \"database\": \"default1\", \"status\": \"BLAH\","
-                + "   \"eventId\": 27, \"statusLog\": \"testLog\"}";
-
-        try {
-            new ReplicationStatus(dbInput);
-            Assert.fail();
-        } catch (HiveReplicationException e) {
-            Assert.assertEquals(e.getMessage(),
-                    "Unable to deserialize jsonString to ReplicationStatus. Invalid status BLAH");
-        }
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hdfs-replication/README.txt
----------------------------------------------------------------------
diff --git a/addons/recipes/hdfs-replication/README.txt b/addons/recipes/hdfs-replication/README.txt
deleted file mode 100644
index 5742d43..0000000
--- a/addons/recipes/hdfs-replication/README.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# 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.
-
-HDFS Directory Replication Recipe
-
-Overview
-This recipe implements replicating arbitrary directories on HDFS from one
-Hadoop cluster to another Hadoop cluster.
-This piggy backs on replication solution in Falcon which uses the DistCp tool.
-
-Use Case
-* Copy directories between HDFS clusters with out dated partitions
-* Archive directories from HDFS to Cloud. Ex: S3, Azure WASB
-
-Limitations
-As the data volume and number of files grow, this can get inefficient.

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hdfs-replication/pom.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hdfs-replication/pom.xml b/addons/recipes/hdfs-replication/pom.xml
deleted file mode 100644
index 98d9795..0000000
--- a/addons/recipes/hdfs-replication/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.falcon.recipes</groupId>
-    <artifactId>falcon-hdfs-replication-recipe</artifactId>
-    <version>0.10-SNAPSHOT</version>
-    <description>Apache Falcon Sample Hdfs Replicaiton Recipe</description>
-    <name>Apache Falcon Sample Hdfs Replication Recipe</name>
-    <packaging>jar</packaging>
-</project>

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-template.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-template.xml b/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-template.xml
deleted file mode 100644
index 441a189..0000000
--- a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-template.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-  -->
-
-<process name="##falcon.recipe.job.name##" xmlns="uri:falcon:process:0.1">
-    <clusters>
-        <!--  source  -->
-        <cluster name="##falcon.recipe.cluster.name##">
-            <validity end="##falcon.recipe.cluster.validity.end##" start="##falcon.recipe.cluster.validity.start##"/>
-        </cluster>
-    </clusters>
-
-    <tags>_falcon_mirroring_type=HDFS</tags>
-
-    <parallel>1</parallel>
-    <!-- Dir replication needs to run only once to catch up -->
-    <order>LAST_ONLY</order>
-    <frequency>##falcon.recipe.frequency##</frequency>
-    <timezone>UTC</timezone>
-
-    <properties>
-        <property name="oozie.wf.subworkflow.classpath.inheritance" value="true"/>
-    </properties>
-
-    <workflow name="##falcon.recipe.workflow.name##" engine="oozie" path="/apps/data-mirroring/workflows/hdfs-replication-workflow.xml" lib="##workflow.lib.path##"/>
-    <retry policy="##falcon.recipe.retry.policy##" delay="##falcon.recipe.retry.delay##" attempts="3"/>
-    <notification type="##falcon.recipe.notification.type##" to="##falcon.recipe.notification.receivers##"/>
-    <ACL/>
-</process>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-workflow.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-workflow.xml b/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-workflow.xml
deleted file mode 100644
index c1966be..0000000
--- a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication-workflow.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<!--
-  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.
-  -->
-<workflow-app xmlns='uri:oozie:workflow:0.3' name='falcon-dr-fs-workflow'>
-    <start to='dr-replication'/>
-    <!-- Replication action -->
-    <action name="dr-replication">
-        <java>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <configuration>
-                <property> <!-- hadoop 2 parameter -->
-                    <name>oozie.launcher.mapreduce.job.user.classpath.first</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.job.priority</name>
-                    <value>${jobPriority}</value>
-                </property>
-                <property>
-                    <name>oozie.use.system.libpath</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>oozie.action.sharelib.for.java</name>
-                    <value>distcp</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.oozie.libpath</name>
-                    <value>${wf:conf("falcon.libpath")}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.hdfs-servers</name>
-                    <value>${drSourceClusterFS},${drTargetClusterFS}</value>
-                </property>
-            </configuration>
-            <main-class>org.apache.falcon.replication.FeedReplicator</main-class>
-            <arg>-Dmapred.job.queue.name=${queueName}</arg>
-            <arg>-Dmapred.job.priority=${jobPriority}</arg>
-            <arg>-maxMaps</arg>
-            <arg>${distcpMaxMaps}</arg>
-            <arg>-mapBandwidth</arg>
-            <arg>${distcpMapBandwidth}</arg>
-            <arg>-sourcePaths</arg>
-            <arg>${drSourceDir}</arg>
-            <arg>-targetPath</arg>
-            <arg>${drTargetClusterFS}${drTargetDir}</arg>
-            <arg>-falconFeedStorageType</arg>
-            <arg>FILESYSTEM</arg>
-            <arg>-availabilityFlag</arg>
-            <arg>${availabilityFlag == 'NA' ? "NA" : availabilityFlag}</arg>
-            <arg>-counterLogDir</arg>
-            <arg>${logDir}/job-${nominalTime}/${srcClusterName == 'NA' ? '' : srcClusterName}</arg>
-        </java>
-        <ok to="end"/>
-        <error to="fail"/>
-    </action>
-    <kill name="fail">
-        <message>
-            Workflow action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
-        </message>
-    </kill>
-    <end name="end"/>
-</workflow-app>

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication.properties
----------------------------------------------------------------------
diff --git a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication.properties b/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication.properties
deleted file mode 100644
index 4642835..0000000
--- a/addons/recipes/hdfs-replication/src/main/resources/hdfs-replication.properties
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# 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.
-#
-
-##### NOTE: This is a TEMPLATE file which can be copied and edited
-
-##### Recipe properties
-##### Unique recipe job name
-falcon.recipe.name=sales-monthly
-
-##### Workflow properties
-falcon.recipe.workflow.name=hdfs-dr-workflow
-# Provide Wf absolute path. This can be HDFS or local FS path. If WF is on local FS it will be copied to HDFS
-falcon.recipe.workflow.path=/apps/data-mirroring/workflows/hdfs-replication-workflow.xml
-# Provide Wf lib absolute path. This can be HDFS or local FS path. If libs are on local FS it will be copied to HDFS
-#falcon.recipe.workflow.lib.path=/recipes/hdfs-replication/lib
-
-##### Cluster properties
-# Cluster where job should run
-falcon.recipe.cluster.name=primaryCluster
-# Change the cluster hdfs write end point here. This is mandatory.
-falcon.recipe.cluster.hdfs.writeEndPoint=hdfs://240.0.0.10:8020
-# Change the cluster validity start time here
-falcon.recipe.cluster.validity.start=2015-03-13T00:00Z
-# Change the cluster validity end time here
-falcon.recipe.cluster.validity.end=2016-12-30T00:00Z
-
-##### Scheduling properties
-# Change the recipe frequency here. Valid frequency type are minutes, hours, days, months
-falcon.recipe.process.frequency=minutes(5)
-
-##### Tag properties - An optional list of comma separated tags, Key Value Pairs, separated by comma
-##### Uncomment to add tags
-#falcon.recipe.tags=
-
-##### Retry policy properties
-
-falcon.recipe.retry.policy=periodic
-falcon.recipe.retry.delay=minutes(30)
-falcon.recipe.retry.attempts=3
-falcon.recipe.retry.onTimeout=false
-
-##### ACL properties - Uncomment and change ACL if authorization is enabled
-
-falcon.recipe.acl.owner=ambari-qa
-falcon.recipe.acl.group=users
-falcon.recipe.acl.permission=0x755
-falcon.recipe.nn.principal=nn/_HOST@EXAMPLE.COM
-
-##### Custom Job properties
-
-# Specify multiple comma separated source directories
-drSourceDir=/user/hrt_qa/dr/test/primaryCluster/input
-drSourceClusterFS=hdfs://240.0.0.10:8020
-drTargetDir=/user/hrt_qa/dr/test/backupCluster/input
-drTargetClusterFS=hdfs://240.0.0.11:8020
-
-# Change it to specify the maximum number of mappers for DistCP
-distcpMaxMaps=1
-# Change it to specify the bandwidth in MB for each mapper in DistCP
-distcpMapBandwidth=100
-
-##### Email Notification for Falcon instance completion
-falcon.recipe.notification.type=email
-falcon.recipe.notification.receivers=NA
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hive-disaster-recovery/README.txt
----------------------------------------------------------------------
diff --git a/addons/recipes/hive-disaster-recovery/README.txt b/addons/recipes/hive-disaster-recovery/README.txt
deleted file mode 100644
index ab393b1..0000000
--- a/addons/recipes/hive-disaster-recovery/README.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-# 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.
-
-Hive Metastore Disaster Recovery Recipe
-
-Overview
-This recipe implements replicating hive metadata and data from one
-Hadoop cluster to another Hadoop cluster.
-This piggy backs on replication solution in Falcon which uses the DistCp tool.
-
-Use Case
-*
-*
-
-Limitations
-*
-# 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.
-
-Hive Metastore Disaster Recovery Recipe
-
-Overview
-This recipe implements replicating hive metadata and data from one
-Hadoop cluster to another Hadoop cluster.
-This piggy backs on replication solution in Falcon which uses the DistCp tool.
-
-Use Case
-*
-*
-
-Limitations
-*

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hive-disaster-recovery/pom.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hive-disaster-recovery/pom.xml b/addons/recipes/hive-disaster-recovery/pom.xml
deleted file mode 100644
index 0f782d2..0000000
--- a/addons/recipes/hive-disaster-recovery/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-  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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.falcon.recipes</groupId>
-    <artifactId>falcon-hive-replication-recipe</artifactId>
-    <version>0.10-SNAPSHOT</version>
-    <description>Apache Falcon Hive Disaster Recovery Recipe</description>
-    <name>Apache Falcon Sample Hive Disaster Recovery Recipe</name>
-    <packaging>jar</packaging>
-</project>

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-template.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-template.xml b/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-template.xml
deleted file mode 100644
index f0de091..0000000
--- a/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-template.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
-  -->
-
-<process name="##name##" xmlns="uri:falcon:process:0.1">
-    <clusters>
-        <!--  source  -->
-        <cluster name="##cluster.name##">
-            <validity end="##cluster.validity.end##" start="##cluster.validity.start##"/>
-        </cluster>
-    </clusters>
-
-    <tags>_falcon_mirroring_type=HIVE</tags>
-
-    <parallel>1</parallel>
-    <!-- Replication needs to run only once to catch up -->
-    <order>LAST_ONLY</order>
-    <frequency>##process.frequency##</frequency>
-    <timezone>UTC</timezone>
-
-    <properties>
-        <property name="oozie.wf.subworkflow.classpath.inheritance" value="true"/>
-    </properties>
-
-    <workflow name="##workflow.name##" engine="oozie"
-              path="/apps/data-mirroring/workflows/hive-disaster-recovery-workflow.xml" lib="##workflow.lib.path##"/>
-    <retry policy="##retry.policy##" delay="##retry.delay##" attempts="3"/>
-    <notification type="##notification.type##" to="##notification.receivers##"/>
-    <ACL/>
-</process>

http://git-wip-us.apache.org/repos/asf/falcon/blob/6f5b476c/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-workflow.xml
----------------------------------------------------------------------
diff --git a/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-workflow.xml b/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-workflow.xml
deleted file mode 100644
index 0494cf6..0000000
--- a/addons/recipes/hive-disaster-recovery/src/main/resources/hive-disaster-recovery-secure-workflow.xml
+++ /dev/null
@@ -1,357 +0,0 @@
-<!--
-  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.
-  -->
-<workflow-app xmlns='uri:oozie:workflow:0.3' name='falcon-dr-hive-workflow'>
-    <credentials>
-        <credential name='hive_src_credentials' type='hcat'>
-            <property>
-                <name>hcat.metastore.uri</name>
-                <value>${sourceMetastoreUri}</value>
-            </property>
-            <property>
-                <name>hcat.metastore.principal</name>
-                <value>${sourceHiveMetastoreKerberosPrincipal}</value>
-            </property>
-        </credential>
-        <credential name='hive_tgt_credentials' type='hcat'>
-            <property>
-                <name>hcat.metastore.uri</name>
-                <value>${targetMetastoreUri}</value>
-            </property>
-            <property>
-                <name>hcat.metastore.principal</name>
-                <value>${targetHiveMetastoreKerberosPrincipal}</value>
-            </property>
-        </credential>
-        <credential name="hive2_src_credentials" type="hive2">
-            <property>
-                <name>hive2.server.principal</name>
-                <value>${sourceHive2KerberosPrincipal}</value>
-            </property>
-            <property>
-                <name>hive2.jdbc.url</name>
-                <value>jdbc:${sourceHiveServer2Uri}/${sourceDatabase}</value>
-            </property>
-        </credential>
-        <credential name="hive2_tgt_credentials" type="hive2">
-            <property>
-                <name>hive2.server.principal</name>
-                <value>${targetHive2KerberosPrincipal}</value>
-            </property>
-            <property>
-                <name>hive2.jdbc.url</name>
-                <value>jdbc:${targetHiveServer2Uri}/${sourceDatabase}</value>
-            </property>
-        </credential>
-    </credentials>
-    <start to='last-event'/>
-    <action name="last-event" cred="hive_tgt_credentials">
-        <java>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <configuration>
-                <property> <!-- hadoop 2 parameter -->
-                    <name>oozie.launcher.mapreduce.job.user.classpath.first</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.job.priority</name>
-                    <value>${jobPriority}</value>
-                </property>
-                <property>
-                    <name>oozie.use.system.libpath</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>oozie.action.sharelib.for.java</name>
-                    <value>distcp,hive,hive2,hcatalog</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-            </configuration>
-            <main-class>org.apache.falcon.hive.HiveDRTool</main-class>
-            <arg>-Dmapred.job.queue.name=${queueName}</arg>
-            <arg>-Dmapred.job.priority=${jobPriority}</arg>
-            <arg>-falconLibPath</arg>
-            <arg>${wf:conf("falcon.libpath")}</arg>
-            <arg>-sourceCluster</arg>
-            <arg>${sourceCluster}</arg>
-            <arg>-sourceMetastoreUri</arg>
-            <arg>${sourceMetastoreUri}</arg>
-            <arg>-sourceHiveServer2Uri</arg>
-            <arg>${sourceHiveServer2Uri}</arg>
-            <arg>-sourceDatabase</arg>
-            <arg>${sourceDatabase}</arg>
-            <arg>-sourceTable</arg>
-            <arg>${sourceTable}</arg>
-            <arg>-sourceStagingPath</arg>
-            <arg>${sourceStagingPath}</arg>
-            <arg>-sourceNN</arg>
-            <arg>${sourceNN}</arg>
-            <arg>-sourceNNKerberosPrincipal</arg>
-            <arg>${sourceNNKerberosPrincipal}</arg>
-            <arg>-sourceHiveMetastoreKerberosPrincipal</arg>
-            <arg>${sourceHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-sourceHive2KerberosPrincipal</arg>
-            <arg>${sourceHive2KerberosPrincipal}</arg>
-            <arg>-targetCluster</arg>
-            <arg>${targetCluster}</arg>
-            <arg>-targetMetastoreUri</arg>
-            <arg>${targetMetastoreUri}</arg>
-            <arg>-targetHiveServer2Uri</arg>
-            <arg>${targetHiveServer2Uri}</arg>
-            <arg>-targetStagingPath</arg>
-            <arg>${targetStagingPath}</arg>
-            <arg>-targetNN</arg>
-            <arg>${targetNN}</arg>
-            <arg>-targetNNKerberosPrincipal</arg>
-            <arg>${targetNNKerberosPrincipal}</arg>
-            <arg>-targetHiveMetastoreKerberosPrincipal</arg>
-            <arg>${targetHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-targetHive2KerberosPrincipal</arg>
-            <arg>${targetHive2KerberosPrincipal}</arg>
-            <arg>-maxEvents</arg>
-            <arg>${maxEvents}</arg>
-            <arg>-clusterForJobRun</arg>
-            <arg>${clusterForJobRun}</arg>
-            <arg>-clusterForJobRunWriteEP</arg>
-            <arg>${clusterForJobRunWriteEP}</arg>
-            <arg>-clusterForJobNNKerberosPrincipal</arg>
-            <arg>${clusterForJobNNKerberosPrincipal}</arg>
-            <arg>-drJobName</arg>
-            <arg>${drJobName}-${nominalTime}</arg>
-            <arg>-executionStage</arg>
-            <arg>lastevents</arg>
-        </java>
-        <ok to="export-dr-replication"/>
-        <error to="fail"/>
-    </action>
-    <!-- Export Replication action -->
-    <action name="export-dr-replication" cred="hive_src_credentials,hive2_src_credentials">
-        <java>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <configuration>
-                <property> <!-- hadoop 2 parameter -->
-                    <name>oozie.launcher.mapreduce.job.user.classpath.first</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.job.priority</name>
-                    <value>${jobPriority}</value>
-                </property>
-                <property>
-                    <name>oozie.use.system.libpath</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>oozie.action.sharelib.for.java</name>
-                    <value>distcp,hive,hive2,hcatalog</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-            </configuration>
-            <main-class>org.apache.falcon.hive.HiveDRTool</main-class>
-            <arg>-Dmapred.job.queue.name=${queueName}</arg>
-            <arg>-Dmapred.job.priority=${jobPriority}</arg>
-            <arg>-falconLibPath</arg>
-            <arg>${wf:conf("falcon.libpath")}</arg>
-            <arg>-replicationMaxMaps</arg>
-            <arg>${replicationMaxMaps}</arg>
-            <arg>-distcpMaxMaps</arg>
-            <arg>${distcpMaxMaps}</arg>
-            <arg>-sourceCluster</arg>
-            <arg>${sourceCluster}</arg>
-            <arg>-sourceMetastoreUri</arg>
-            <arg>${sourceMetastoreUri}</arg>
-            <arg>-sourceHiveServer2Uri</arg>
-            <arg>${sourceHiveServer2Uri}</arg>
-            <arg>-sourceDatabase</arg>
-            <arg>${sourceDatabase}</arg>
-            <arg>-sourceTable</arg>
-            <arg>${sourceTable}</arg>
-            <arg>-sourceStagingPath</arg>
-            <arg>${sourceStagingPath}</arg>
-            <arg>-sourceNN</arg>
-            <arg>${sourceNN}</arg>
-            <arg>-sourceNNKerberosPrincipal</arg>
-            <arg>${sourceNNKerberosPrincipal}</arg>
-            <arg>-sourceHiveMetastoreKerberosPrincipal</arg>
-            <arg>${sourceHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-sourceHive2KerberosPrincipal</arg>
-            <arg>${sourceHive2KerberosPrincipal}</arg>
-            <arg>-targetCluster</arg>
-            <arg>${targetCluster}</arg>
-            <arg>-targetMetastoreUri</arg>
-            <arg>${targetMetastoreUri}</arg>
-            <arg>-targetHiveServer2Uri</arg>
-            <arg>${targetHiveServer2Uri}</arg>
-            <arg>-targetStagingPath</arg>
-            <arg>${targetStagingPath}</arg>
-            <arg>-targetNN</arg>
-            <arg>${targetNN}</arg>
-            <arg>-targetNNKerberosPrincipal</arg>
-            <arg>${targetNNKerberosPrincipal}</arg>
-            <arg>-targetHiveMetastoreKerberosPrincipal</arg>
-            <arg>${targetHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-targetHive2KerberosPrincipal</arg>
-            <arg>${targetHive2KerberosPrincipal}</arg>
-            <arg>-maxEvents</arg>
-            <arg>${maxEvents}</arg>
-            <arg>-distcpMapBandwidth</arg>
-            <arg>${distcpMapBandwidth}</arg>
-            <arg>-clusterForJobRun</arg>
-            <arg>${clusterForJobRun}</arg>
-            <arg>-clusterForJobRunWriteEP</arg>
-            <arg>${clusterForJobRunWriteEP}</arg>
-            <arg>-clusterForJobNNKerberosPrincipal</arg>
-            <arg>${clusterForJobNNKerberosPrincipal}</arg>
-            <arg>-drJobName</arg>
-            <arg>${drJobName}-${nominalTime}</arg>
-            <arg>-executionStage</arg>
-            <arg>export</arg>
-            <arg>-counterLogDir</arg>
-            <arg>${logDir}/job-${nominalTime}/${srcClusterName == 'NA' ? '' : srcClusterName}/</arg>
-        </java>
-        <ok to="import-dr-replication"/>
-        <error to="fail"/>
-    </action>
-    <!-- Import Replication action -->
-    <action name="import-dr-replication" cred="hive_tgt_credentials,hive2_tgt_credentials">
-        <java>
-            <job-tracker>${jobTracker}</job-tracker>
-            <name-node>${nameNode}</name-node>
-            <configuration>
-                <property> <!-- hadoop 2 parameter -->
-                    <name>oozie.launcher.mapreduce.job.user.classpath.first</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>mapred.job.queue.name</name>
-                    <value>${queueName}</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapred.job.priority</name>
-                    <value>${jobPriority}</value>
-                </property>
-                <property>
-                    <name>oozie.use.system.libpath</name>
-                    <value>true</value>
-                </property>
-                <property>
-                    <name>oozie.action.sharelib.for.java</name>
-                    <value>distcp,hive,hive2,hcatalog</value>
-                </property>
-                <property>
-                    <name>oozie.launcher.mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-                <property>
-                    <name>mapreduce.job.hdfs-servers</name>
-                    <value>${sourceNN},${targetNN}</value>
-                </property>
-            </configuration>
-            <main-class>org.apache.falcon.hive.HiveDRTool</main-class>
-            <arg>-Dmapred.job.queue.name=${queueName}</arg>
-            <arg>-Dmapred.job.priority=${jobPriority}</arg>
-            <arg>-falconLibPath</arg>
-            <arg>${wf:conf("falcon.libpath")}</arg>
-            <arg>-replicationMaxMaps</arg>
-            <arg>${replicationMaxMaps}</arg>
-            <arg>-distcpMaxMaps</arg>
-            <arg>${distcpMaxMaps}</arg>
-            <arg>-sourceCluster</arg>
-            <arg>${sourceCluster}</arg>
-            <arg>-sourceMetastoreUri</arg>
-            <arg>${sourceMetastoreUri}</arg>
-            <arg>-sourceHiveServer2Uri</arg>
-            <arg>${sourceHiveServer2Uri}</arg>
-            <arg>-sourceDatabase</arg>
-            <arg>${sourceDatabase}</arg>
-            <arg>-sourceTable</arg>
-            <arg>${sourceTable}</arg>
-            <arg>-sourceStagingPath</arg>
-            <arg>${sourceStagingPath}</arg>
-            <arg>-sourceNN</arg>
-            <arg>${sourceNN}</arg>
-            <arg>-sourceNNKerberosPrincipal</arg>
-            <arg>${sourceNNKerberosPrincipal}</arg>
-            <arg>-sourceHiveMetastoreKerberosPrincipal</arg>
-            <arg>${sourceHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-sourceHive2KerberosPrincipal</arg>
-            <arg>${sourceHive2KerberosPrincipal}</arg>
-            <arg>-targetCluster</arg>
-            <arg>${targetCluster}</arg>
-            <arg>-targetMetastoreUri</arg>
-            <arg>${targetMetastoreUri}</arg>
-            <arg>-targetHiveServer2Uri</arg>
-            <arg>${targetHiveServer2Uri}</arg>
-            <arg>-targetStagingPath</arg>
-            <arg>${targetStagingPath}</arg>
-            <arg>-targetNN</arg>
-            <arg>${targetNN}</arg>
-            <arg>-targetNNKerberosPrincipal</arg>
-            <arg>${targetNNKerberosPrincipal}</arg>
-            <arg>-targetHiveMetastoreKerberosPrincipal</arg>
-            <arg>${targetHiveMetastoreKerberosPrincipal}</arg>
-            <arg>-targetHive2KerberosPrincipal</arg>
-            <arg>${targetHive2KerberosPrincipal}</arg>
-            <arg>-maxEvents</arg>
-            <arg>${maxEvents}</arg>
-            <arg>-distcpMapBandwidth</arg>
-            <arg>${distcpMapBandwidth}</arg>
-            <arg>-clusterForJobRun</arg>
-            <arg>${clusterForJobRun}</arg>
-            <arg>-clusterForJobRunWriteEP</arg>
-            <arg>${clusterForJobRunWriteEP}</arg>
-            <arg>-clusterForJobNNKerberosPrincipal</arg>
-            <arg>${clusterForJobNNKerberosPrincipal}</arg>
-            <arg>-drJobName</arg>
-            <arg>${drJobName}-${nominalTime}</arg>
-            <arg>-executionStage</arg>
-            <arg>import</arg>
-        </java>
-        <ok to="end"/>
-        <error to="fail"/>
-    </action>
-    <kill name="fail">
-        <message>
-            Workflow action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
-        </message>
-    </kill>
-    <end name="end"/>
-</workflow-app>