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 2015/11/24 09:35:02 UTC
falcon git commit: FALCON-1557 Supporting some Entity Management
Api's and admin api in Falcon Unit (Narayan Periwal)
Repository: falcon
Updated Branches:
refs/heads/master f018fafb4 -> ef4e8a4b1
FALCON-1557 Supporting some Entity Management Api's and admin api in Falcon Unit (Narayan Periwal)
Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/ef4e8a4b
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/ef4e8a4b
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/ef4e8a4b
Branch: refs/heads/master
Commit: ef4e8a4b11f0920431aa0fd5c0ca1ed8d3301571
Parents: f018faf
Author: Pallavi Rao <pa...@inmobi.com>
Authored: Tue Nov 24 14:04:49 2015 +0530
Committer: Pallavi Rao <pa...@inmobi.com>
Committed: Tue Nov 24 14:04:49 2015 +0530
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../falcon/client/AbstractFalconClient.java | 102 +++++++++++++++++++
.../org/apache/falcon/client/FalconClient.java | 5 +
.../workflow/engine/OozieWorkflowEngine.java | 2 +-
.../client/LocalOozieClientCoordProxy.java | 16 +++
.../oozie/client/LocalProxyOozieClient.java | 2 +-
.../falcon/resource/admin/AdminResource.java | 12 ++-
.../apache/falcon/unit/FalconUnitClient.java | 62 ++++++++++-
.../unit/LocalSchedulableEntityManager.java | 42 ++++++++
.../apache/falcon/unit/FalconUnitTestBase.java | 18 +++-
.../org/apache/falcon/unit/TestFalconUnit.java | 77 ++++++++++----
.../resource/ProcessInstanceManagerIT.java | 24 ++---
.../apache/falcon/resource/UnitTestContext.java | 14 +--
13 files changed, 325 insertions(+), 53 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 66bfa9d..62e5725 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -18,6 +18,8 @@ Trunk (Unreleased)
FALCON-1213 Base framework of the native scheduler(Pallavi Rao)
IMPROVEMENTS
+ FALCON-1557 Supporting some Entity Management Api's and admin api in Falcon Unit (Narayan Periwal via Pallavi Rao)
+
FALCON-1622 On starting falcon server JPS shows Main and not Falcon(Sandeep Samudrala via Ajay Yadava)
FALCON-1607 Native Scheduler - Code refactoring: Refactor ID into more specific sub classes(Ajay Yadava)
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java b/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java
index 27b93c0..43a342d 100644
--- a/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java
+++ b/client/src/main/java/org/apache/falcon/client/AbstractFalconClient.java
@@ -21,6 +21,8 @@ import org.apache.falcon.LifeCycle;
import org.apache.falcon.entity.v0.Entity;
import org.apache.falcon.entity.v0.EntityType;
import org.apache.falcon.resource.APIResult;
+import org.apache.falcon.resource.EntityList;
+import org.apache.falcon.resource.EntitySummaryResult;
import org.apache.falcon.resource.FeedInstanceResult;
import org.apache.falcon.resource.InstanceDependencyResult;
import org.apache.falcon.resource.InstancesResult;
@@ -176,6 +178,100 @@ public abstract class AbstractFalconClient {
FalconCLIException;
/**
+ * Submits and schedules an entity.
+ * @param entityType Valid options are feed or process.
+ * @param filePath Path for the entity definition
+ * @param skipDryRun Optional query param, Falcon skips oozie dryrun when value is set to true.
+ * @param doAsUser proxy user
+ * @return Result of the submit and schedule command.
+ */
+ public abstract APIResult submitAndSchedule(String entityType, String filePath, Boolean skipDryRun, String doAsUser,
+ String properties) throws FalconCLIException;
+
+ /**
+ *
+ * Get list of the entities.
+ * We have two filtering parameters for entity tags: "tags" and "tagkeys".
+ * "tags" does the exact match in key=value fashion, while "tagkeys" finds all the entities with the given key as a
+ * substring in the tags. This "tagkeys" filter is introduced for the user who doesn't remember the exact tag but
+ * some keywords in the tag. It also helps users to save the time of typing long tags.
+ * The returned entities will match all the filtering criteria.
+ * @param entityType Comma-separated entity types. Can be empty. Valid entity types are cluster, feed or process.
+ * @param fields <optional param> Fields of entity that the user wants to view, separated by commas.
+ * Valid options are STATUS, TAGS, PIPELINES, CLUSTERS.
+ * @param nameSubsequence <optional param> Subsequence of entity name. Not case sensitive.
+ * The entity name needs to contain all the characters in the subsequence in the same order.
+ * Example 1: "sample1" will match the entity named "SampleFeed1-2".
+ * Example 2: "mhs" will match the entity named "New-My-Hourly-Summary".
+ * @param tagKeywords <optional param> Keywords in tags, separated by comma. Not case sensitive.
+ * The returned entities will have tags that match all the tag keywords.
+ * @param filterTags <optional param> Return list of entities that have specified tags, separated by a comma.
+ * Query will do AND on tag values.
+ * Example: tags=consumer=consumer@xyz.com,owner=producer@xyz.com
+ * @param filterBy <optional param> Filter results by list of field:value pairs.
+ * Example: filterBy=STATUS:RUNNING,PIPELINES:clickLogs
+ * Supported filter fields are NAME, STATUS, PIPELINES, CLUSTER.
+ * Query will do an AND among filterBy fields.
+ * @param orderBy <optional param> Field by which results should be ordered.
+ * Supports ordering by "name".
+ * @param sortOrder <optional param> Valid options are "asc" and "desc"
+ * @param offset <optional param> Show results from the offset, used for pagination. Defaults to 0.
+ * @param numResults <optional param> Number of results to show per request, used for pagination. Only
+ * integers > 0 are valid, Default is 10.
+ * @param doAsUser proxy user
+ * @return Total number of results and a list of entities.
+ */
+ public abstract EntityList getEntityList(String entityType, String fields, String nameSubsequence, String
+ tagKeywords, String filterBy, String filterTags, String orderBy, String sortOrder, Integer offset, Integer
+ numResults, String doAsUser) throws FalconCLIException;
+
+ /**
+ * Given an EntityType and cluster, get list of entities along with summary of N recent instances of each entity.
+ * @param entityType Valid options are feed or process.
+ * @param cluster Show entities that belong to this cluster.
+ * @param start <optional param> Show entity summaries from this date. Date format is yyyy-MM-dd'T'HH:mm'Z'.
+ * By default, it is set to (end - 2 days).
+ * @param end <optional param> Show entity summary up to this date. Date format is yyyy-MM-dd'T'HH:mm'Z'.
+ * Default is set to now.
+ * @param fields <optional param> Fields of entity that the user wants to view, separated by commas.
+ * Valid options are STATUS, TAGS, PIPELINES.
+ * @param filterBy <optional param> Filter results by list of field:value pairs.
+ * Example: filterBy=STATUS:RUNNING,PIPELINES:clickLogs
+ * Supported filter fields are NAME, STATUS, PIPELINES, CLUSTER.
+ * Query will do an AND among filterBy fields.
+ * @param filterTags <optional param> Return list of entities that have specified tags, separated by a comma.
+ * Query will do AND on tag values.
+ * Example: tags=consumer=consumer@xyz.com,owner=producer@xyz.com
+ * @param orderBy <optional param> Field by which results should be ordered.
+ * Supports ordering by "name".
+ * @param sortOrder <optional param> Valid options are "asc" and "desc"
+ * @param offset <optional param> Show results from the offset, used for pagination. Defaults to 0.
+ * @param numInstances <optional param> Number of results to show per request, used for pagination. Only
+ * integers > 0 are valid, Default is 10.
+ * @param numResults <optional param> Number of recent instances to show per entity. Only integers > 0 are
+ * valid, Default is 7.
+ * @param doAsUser proxy user
+ * @return Show entities along with summary of N instances for each entity.
+ */
+ public abstract EntitySummaryResult getEntitySummary(String entityType, String cluster, String start, String end,
+ String fields, String filterBy, String filterTags, String
+ orderBy, String sortOrder, Integer offset, Integer
+ numResults, Integer numInstances, String doAsUser) throws
+ FalconCLIException;
+
+ /**
+ * Force updates the entity.
+ * @param entityType Valid options are feed or process.
+ * @param entityName Name of the entity.
+ * @param colo Colo on which the query should be run.
+ * @param skipDryRun Optional query param, Falcon skips oozie dryrun when value is set to true.
+ * @param doAsUser proxy user
+ * @return Result of the validation.
+ */
+ public abstract APIResult touch(String entityType, String entityName, String colo, Boolean skipDryRun,
+ String doAsUser) throws FalconCLIException;
+
+ /**
* Kill currently running instance(s) of an entity.
* @param type Valid options are feed or process.
* @param entity name of the entity.
@@ -345,6 +441,12 @@ public abstract class AbstractFalconClient {
String instanceTime, String colo) throws
FalconCLIException;
+ /**
+ * Get version of the falcon server.
+ * @return Version of the server.
+ */
+ public abstract String getVersion(String doAsUser) throws FalconCLIException;
+
protected InputStream getServletInputStream(String clusters, String sourceClusters, String properties) throws
FalconCLIException, UnsupportedEncodingException {
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/client/src/main/java/org/apache/falcon/client/FalconClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/client/FalconClient.java b/client/src/main/java/org/apache/falcon/client/FalconClient.java
index c49dd08..471cab4 100644
--- a/client/src/main/java/org/apache/falcon/client/FalconClient.java
+++ b/client/src/main/java/org/apache/falcon/client/FalconClient.java
@@ -377,6 +377,7 @@ public class FalconClient extends AbstractFalconClient {
return parseAPIResult(clientResponse);
}
+ @Override
public APIResult submitAndSchedule(String entityType, String filePath,
Boolean skipDryRun, String doAsUser, String properties)
throws FalconCLIException {
@@ -439,6 +440,7 @@ public class FalconClient extends AbstractFalconClient {
return clientResponse.getEntity(TriageResult.class);
}
+ @Override
public EntityList getEntityList(String entityType, String fields, String nameSubsequence, String tagKeywords,
String filterBy, String filterTags, String orderBy, String sortOrder,
Integer offset, Integer numResults, String doAsUser) throws FalconCLIException {
@@ -446,6 +448,7 @@ public class FalconClient extends AbstractFalconClient {
filterTags, orderBy, sortOrder, offset, numResults, doAsUser);
}
+ @Override
public EntitySummaryResult getEntitySummary(String entityType, String cluster, String start, String end,
String fields, String filterBy, String filterTags,
String orderBy, String sortOrder,
@@ -455,6 +458,7 @@ public class FalconClient extends AbstractFalconClient {
orderBy, sortOrder, offset, numResults, numInstances, doAsUser);
}
+ @Override
public APIResult touch(String entityType, String entityName, String colo,
Boolean skipDryRun, String doAsUser) throws FalconCLIException {
Entities operation = Entities.TOUCH;
@@ -595,6 +599,7 @@ public class FalconClient extends AbstractFalconClient {
return sendAdminRequest(AdminOperations.STACK, doAsUser);
}
+ @Override
public String getVersion(String doAsUser) throws FalconCLIException {
return sendAdminRequest(AdminOperations.VERSION, doAsUser);
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
----------------------------------------------------------------------
diff --git a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
index b1cec41..724f646 100644
--- a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
+++ b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
@@ -1302,7 +1302,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
coord.getId(), SchemaHelper.formatDateUTC(pauseTime));
change(cluster, coord.getId(), concurrency, null, SchemaHelper.formatDateUTC(pauseTime));
}
- change(cluster, coord.getId(), concurrency, endTime, "");
+ change(cluster, coord.getId(), concurrency, endTime, null);
}
}
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/oozie/src/main/java/org/apache/oozie/client/LocalOozieClientCoordProxy.java
----------------------------------------------------------------------
diff --git a/oozie/src/main/java/org/apache/oozie/client/LocalOozieClientCoordProxy.java b/oozie/src/main/java/org/apache/oozie/client/LocalOozieClientCoordProxy.java
index 093d6ff..ff4561b 100644
--- a/oozie/src/main/java/org/apache/oozie/client/LocalOozieClientCoordProxy.java
+++ b/oozie/src/main/java/org/apache/oozie/client/LocalOozieClientCoordProxy.java
@@ -20,6 +20,7 @@ package org.apache.oozie.client;
import org.apache.oozie.BaseEngineException;
import org.apache.oozie.CoordinatorEngine;
+import org.apache.oozie.CoordinatorEngineException;
import org.apache.oozie.LocalOozieClientCoord;
/**
@@ -59,4 +60,19 @@ public class LocalOozieClientCoordProxy extends LocalOozieClientCoord {
throw new OozieClientException(bex.getErrorCode().toString(), bex);
}
}
+
+ /**
+ * Change a coordinator job.
+ *
+ * @param jobId job Id.
+ * @param changeValue change value.
+ * @throws OozieClientException thrown if the job could not be changed.
+ */
+ public void change(String jobId, String changeValue) throws OozieClientException {
+ try {
+ coordEngine.change(jobId, changeValue);
+ } catch (CoordinatorEngineException e) {
+ throw new OozieClientException(e.getErrorCode().toString(), e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/oozie/src/main/java/org/apache/oozie/client/LocalProxyOozieClient.java
----------------------------------------------------------------------
diff --git a/oozie/src/main/java/org/apache/oozie/client/LocalProxyOozieClient.java b/oozie/src/main/java/org/apache/oozie/client/LocalProxyOozieClient.java
index 6ae92de..f6e87c4 100644
--- a/oozie/src/main/java/org/apache/oozie/client/LocalProxyOozieClient.java
+++ b/oozie/src/main/java/org/apache/oozie/client/LocalProxyOozieClient.java
@@ -188,7 +188,7 @@ public class LocalProxyOozieClient extends OozieClient {
@Override
public void change(final String jobId, final String changeValue) throws OozieClientException {
- throw new IllegalStateException("Change not supported");
+ getClient(jobId).change(jobId, changeValue);
}
@Override
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/prism/src/main/java/org/apache/falcon/resource/admin/AdminResource.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/admin/AdminResource.java b/prism/src/main/java/org/apache/falcon/resource/admin/AdminResource.java
index ace21cb..a75c97c 100644
--- a/prism/src/main/java/org/apache/falcon/resource/admin/AdminResource.java
+++ b/prism/src/main/java/org/apache/falcon/resource/admin/AdminResource.java
@@ -151,20 +151,28 @@ public class AdminResource {
}
//SUSPEND CHECKSTYLE CHECK VisibilityModifierCheck
+
+ /**
+ * Class for property.
+ */
@XmlRootElement(name = "property")
@XmlAccessorType(XmlAccessType.FIELD)
@edu.umd.cs.findbugs.annotations.SuppressWarnings({"URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
- protected static class Property {
+ public static class Property {
public String key;
public String value;
}
//RESUME CHECKSTYLE CHECK VisibilityModifierCheck
//SUSPEND CHECKSTYLE CHECK VisibilityModifierCheck
+
+ /**
+ * Class for list of Properties.
+ */
@XmlRootElement(name = "properties")
@XmlAccessorType(XmlAccessType.FIELD)
@edu.umd.cs.findbugs.annotations.SuppressWarnings({"URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"})
- protected static class PropertyList {
+ public static class PropertyList {
public List<Property> properties;
}
//RESUME CHECKSTYLE CHECK VisibilityModifierCheck
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java
----------------------------------------------------------------------
diff --git a/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java b/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java
index 9f2b714..9eb4277 100644
--- a/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java
+++ b/unit/src/main/java/org/apache/falcon/unit/FalconUnitClient.java
@@ -32,13 +32,17 @@ import org.apache.falcon.entity.v0.process.Cluster;
import org.apache.falcon.entity.v0.process.Process;
import org.apache.falcon.entity.v0.process.Validity;
import org.apache.falcon.resource.APIResult;
+import org.apache.falcon.resource.EntityList;
+import org.apache.falcon.resource.EntitySummaryResult;
import org.apache.falcon.resource.FeedInstanceResult;
import org.apache.falcon.resource.InstanceDependencyResult;
import org.apache.falcon.resource.InstancesResult;
import org.apache.falcon.resource.InstancesSummaryResult;
+import org.apache.falcon.resource.admin.AdminResource;
import org.apache.falcon.util.DateUtil;
import org.apache.falcon.workflow.WorkflowEngineFactory;
import org.apache.falcon.workflow.engine.AbstractWorkflowEngine;
+import org.apache.hadoop.security.authorize.AuthorizationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -111,7 +115,13 @@ public class FalconUnitClient extends AbstractFalconClient {
@Override
public APIResult schedule(EntityType entityType, String entityName, String cluster,
Boolean skipDryRun, String doAsUser, String properties) throws FalconCLIException {
- return schedule(entityType, entityName, null, 0, cluster, skipDryRun, properties);
+ try {
+ return localSchedulableEntityManager.schedule(entityType, entityName, skipDryRun, properties);
+ } catch (FalconException e) {
+ throw new FalconCLIException(e);
+ } catch (AuthorizationException e) {
+ throw new FalconCLIException(e);
+ }
}
@Override
@@ -242,6 +252,42 @@ public class FalconUnitClient extends AbstractFalconClient {
return localSchedulableEntityManager.getStatus(entityType.name(), entityName, colo);
}
+ @Override
+ public APIResult submitAndSchedule(String entityType, String filePath, Boolean skipDryRun, String doAsUser,
+ String properties) throws FalconCLIException {
+ try {
+ return localSchedulableEntityManager.submitAndSchedule(entityType, filePath, skipDryRun, doAsUser,
+ properties);
+ } catch (FalconException e) {
+ throw new FalconCLIException(e);
+ } catch (IOException e) {
+ throw new FalconCLIException(e);
+ }
+ }
+
+ @Override
+ public EntityList getEntityList(String entityType, String fields, String nameSubsequence, String tagKeywords,
+ String filterBy, String filterTags, String orderBy, String sortOrder,
+ Integer offset, Integer numResults, String doAsUser) throws FalconCLIException {
+ return localSchedulableEntityManager.getEntityList(fields, nameSubsequence, tagKeywords, entityType, filterTags,
+ filterBy, orderBy, sortOrder, offset, numResults, doAsUser);
+ }
+
+ @Override
+ public EntitySummaryResult getEntitySummary(String entityType, String cluster, String start, String end,
+ String fields, String filterBy, String filterTags, String orderBy,
+ String sortOrder, Integer offset, Integer numResults,
+ Integer numInstances, String doAsUser) throws FalconCLIException {
+ return localSchedulableEntityManager.getEntitySummary(entityType, cluster, start, end, fields, filterBy,
+ filterTags, orderBy, sortOrder, offset, numResults, numInstances, doAsUser);
+ }
+
+ @Override
+ public APIResult touch(String entityType, String entityName, String colo, Boolean skipDryRun,
+ String doAsUser) throws FalconCLIException {
+ return localSchedulableEntityManager.touch(entityType, entityName, colo, skipDryRun);
+ }
+
public InstancesResult killInstances(String type, String entity, String start, String end, String colo,
String clusters, String sourceClusters, List<LifeCycle> lifeCycles,
String doAsUser) throws FalconCLIException, UnsupportedEncodingException {
@@ -304,6 +350,20 @@ public class FalconUnitClient extends AbstractFalconClient {
return localInstanceManager.getInstanceDependencies(entityType, entityName, instanceTime, colo);
}
+ @Override
+ public String getVersion(String doAsUser) throws FalconCLIException {
+ AdminResource resource = new AdminResource();
+ AdminResource.PropertyList propertyList = resource.getVersion();
+ StringBuilder properties = new StringBuilder();
+ for(AdminResource.Property property : propertyList.properties) {
+ if (properties.length() > 1) {
+ properties.append(",");
+ }
+ properties.append(property.key).append(":").append(property.value);
+ }
+ return properties.toString();
+ }
+
private boolean checkAndUpdateCluster(Entity entity, EntityType entityType, String cluster) {
if (entityType == EntityType.FEED) {
return checkAndUpdateFeedClusters(entity, cluster);
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/unit/src/main/java/org/apache/falcon/unit/LocalSchedulableEntityManager.java
----------------------------------------------------------------------
diff --git a/unit/src/main/java/org/apache/falcon/unit/LocalSchedulableEntityManager.java b/unit/src/main/java/org/apache/falcon/unit/LocalSchedulableEntityManager.java
index 42adc9a..0065c71 100644
--- a/unit/src/main/java/org/apache/falcon/unit/LocalSchedulableEntityManager.java
+++ b/unit/src/main/java/org/apache/falcon/unit/LocalSchedulableEntityManager.java
@@ -18,10 +18,14 @@
package org.apache.falcon.unit;
import org.apache.falcon.FalconException;
+import org.apache.falcon.entity.EntityUtil;
import org.apache.falcon.entity.v0.Entity;
import org.apache.falcon.entity.v0.EntityType;
import org.apache.falcon.resource.APIResult;
import org.apache.falcon.resource.AbstractSchedulableEntityManager;
+import org.apache.falcon.resource.EntityList;
+import org.apache.falcon.resource.EntitySummaryResult;
+import org.apache.hadoop.security.authorize.AuthorizationException;
import java.io.IOException;
import java.io.InputStream;
@@ -69,4 +73,42 @@ public class LocalSchedulableEntityManager extends AbstractSchedulableEntityMana
Entity entity = super.submitInternal(inputStream, entityType, doAsUser);
return new APIResult(APIResult.Status.SUCCEEDED, "Submit successful (" + entityType + ") " + entity.getName());
}
+
+ public APIResult schedule(EntityType entityType, String entityName, Boolean skipDryRun, String properties) throws
+ FalconException, AuthorizationException {
+ scheduleInternal(entityType.name(), entityName, skipDryRun, EntityUtil.getPropertyMap(properties));
+ return new APIResult(APIResult.Status.SUCCEEDED, entityName + "(" + entityType + ") scheduled successfully");
+ }
+
+ public APIResult submitAndSchedule(String entityType, String filePath, Boolean skipDryRun, String doAsUser,
+ String properties) throws FalconException, IOException {
+ InputStream inputStream = FalconUnitHelper.getFileInputStream(filePath);
+ Entity entity = super.submitInternal(inputStream, entityType, doAsUser);
+ scheduleInternal(entityType, entity.getName(), skipDryRun, EntityUtil.getPropertyMap(properties));
+ return new APIResult(APIResult.Status.SUCCEEDED,
+ entity.getName() + "(" + entityType + ") scheduled successfully");
+ }
+
+ //SUSPEND CHECKSTYLE CHECK ParameterNumberCheck
+ public EntityList getEntityList(String fieldStr, String nameSubsequence, String tagKeywords,
+ String filterType, String filterTags, String filterBy,
+ String orderBy, String sortOrder, Integer offset,
+ Integer resultsPerPage, final String doAsUser) {
+ return super.getEntityList(fieldStr, nameSubsequence, tagKeywords, filterType, filterTags, filterBy, orderBy,
+ sortOrder, offset, resultsPerPage, doAsUser);
+ }
+
+ public EntitySummaryResult getEntitySummary(String type, String cluster, String startDate, String endDate,
+ String fields, String filterBy, String filterTags,
+ String orderBy, String sortOrder, Integer offset,
+ Integer resultsPerPage, Integer numInstances, final String doAsUser) {
+ return super.getEntitySummary(type, cluster, startDate, endDate, fields, filterBy, filterTags, orderBy,
+ sortOrder, offset, resultsPerPage, numInstances, doAsUser);
+ }
+
+ public APIResult touch(String type, String entityName, String colo, Boolean skipDryRun) {
+ return super.touch(type, entityName, colo, skipDryRun);
+ }
+ //RESUME CHECKSTYLE CHECK ParameterNumberCheck
+
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java
----------------------------------------------------------------------
diff --git a/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java b/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java
index 42cb779..2a73516 100644
--- a/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java
+++ b/unit/src/test/java/org/apache/falcon/unit/FalconUnitTestBase.java
@@ -179,15 +179,15 @@ public class FalconUnitTestBase {
skipDryRun, properties);
}
- public APIResult scheduleProcess(String processName, String startTime, int numInstances,
- String cluster, Boolean skipDryRun,
- String properties) throws FalconException, FalconCLIException {
+ public APIResult scheduleProcess(String processName, String cluster, String localWfPath) throws FalconException,
+ IOException, FalconCLIException {
Process processEntity = configStore.get(EntityType.PROCESS, processName);
if (processEntity == null) {
throw new FalconException("Process not found " + processName);
}
- return falconUnitClient.schedule(EntityType.PROCESS, processName, startTime, numInstances, cluster,
- skipDryRun, properties);
+ String workflowPath = processEntity.getWorkflow().getPath();
+ fs.copyFromLocalFile(new Path(localWfPath), new Path(workflowPath, "workflow.xml"));
+ return falconUnitClient.schedule(EntityType.PROCESS, processName, cluster, false, null, null);
}
public APIResult schedule(EntityType entityType, String entityName, String cluster) throws FalconException,
@@ -199,6 +199,14 @@ public class FalconUnitTestBase {
return falconUnitClient.schedule(entityType, entityName, cluster, false, null, null);
}
+ public APIResult submitAndSchedule(String type, String filePath, String localWfPath, Boolean skipDryRun,
+ String doAsUser, String properties, String appDirectory) throws IOException,
+ FalconException, FalconCLIException {
+ createDir(appDirectory);
+ fs.copyFromLocalFile(new Path(localWfPath), new Path(appDirectory, "workflow.xml"));
+ return falconUnitClient.submitAndSchedule(type, filePath, skipDryRun, doAsUser, properties);
+ }
+
private Map<String, String> updateColoAndCluster(String colo, String cluster, Map<String, String> props) {
if (props == null) {
props = new HashMap<>();
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/unit/src/test/java/org/apache/falcon/unit/TestFalconUnit.java
----------------------------------------------------------------------
diff --git a/unit/src/test/java/org/apache/falcon/unit/TestFalconUnit.java b/unit/src/test/java/org/apache/falcon/unit/TestFalconUnit.java
index 2c8642d..68c09d5 100644
--- a/unit/src/test/java/org/apache/falcon/unit/TestFalconUnit.java
+++ b/unit/src/test/java/org/apache/falcon/unit/TestFalconUnit.java
@@ -24,6 +24,8 @@ import org.apache.falcon.entity.v0.EntityType;
import org.apache.falcon.entity.v0.process.Process;
import org.apache.falcon.entity.v0.process.Property;
import org.apache.falcon.resource.APIResult;
+import org.apache.falcon.resource.EntityList;
+import org.apache.falcon.resource.EntitySummaryResult;
import org.apache.falcon.resource.FeedInstanceResult;
import org.apache.falcon.resource.InstanceDependencyResult;
import org.apache.falcon.resource.InstancesResult;
@@ -56,8 +58,8 @@ public class TestFalconUnit extends FalconUnitTestBase {
private static final String PROCESS_NAME = "process";
private static final String OUTPUT_FEED_NAME = "out";
private static final String INPUT_FILE_NAME = "input.txt";
- private static final String SCHEDULE_TIME = "2015-06-20T00:00Z";
- private static final String END_TIME = "2015-06-20T00:01Z";
+ private static final String SCHEDULE_TIME = "2013-11-18T00:05Z";
+ private static final String END_TIME = "2013-11-18T00:07Z";
private static final String WORKFLOW = "workflow.xml";
private static final String SLEEP_WORKFLOW = "sleepWorkflow.xml";
@@ -68,8 +70,7 @@ public class TestFalconUnit extends FalconUnitTestBase {
createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
APIResult result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
- result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 1, CLUSTER_NAME, getAbsolutePath(WORKFLOW),
- true, "");
+ result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 1, CLUSTER_NAME, getAbsolutePath(WORKFLOW), true, "");
assertStatus(result);
waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.SUCCEEDED);
InstancesResult.WorkflowStatus status = getClient().getInstanceStatus(EntityType.PROCESS.name(),
@@ -81,7 +82,6 @@ public class TestFalconUnit extends FalconUnitTestBase {
Assert.assertTrue(files.length > 0);
}
-
@Test
public void testRetention() throws IOException, FalconCLIException, FalconException,
ParseException, InterruptedException {
@@ -109,16 +109,13 @@ public class TestFalconUnit extends FalconUnitTestBase {
@Test
public void testSuspendAndResume() throws Exception {
submitClusterAndFeeds();
- // submitting and scheduling process
- String scheduleTime = "2015-06-20T00:00Z";
- //String processName = "process1";
- createData(INPUT_FEED_NAME, CLUSTER_NAME, scheduleTime, INPUT_FILE_NAME);
+ // submitting and scheduling process;
+ createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
APIResult result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
- result = scheduleProcess(PROCESS_NAME, scheduleTime, 2, CLUSTER_NAME, getAbsolutePath(WORKFLOW),
- true, "");
+ result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 2, CLUSTER_NAME, getAbsolutePath(WORKFLOW), true, "");
assertStatus(result);
- waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, scheduleTime, InstancesResult.WorkflowStatus.SUCCEEDED);
+ waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.SUCCEEDED);
result = getClient().suspend(EntityType.PROCESS, PROCESS_NAME, CLUSTER_NAME, null);
assertStatus(result);
result = getClient().getStatus(EntityType.PROCESS, PROCESS_NAME, CLUSTER_NAME, null);
@@ -141,8 +138,7 @@ public class TestFalconUnit extends FalconUnitTestBase {
createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
- result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 10, CLUSTER_NAME, getAbsolutePath(WORKFLOW),
- true, "");
+ result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 2, CLUSTER_NAME, getAbsolutePath(WORKFLOW), true, "");
assertStatus(result);
waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.SUCCEEDED);
result = getClient().delete(EntityType.PROCESS, PROCESS_NAME, null);
@@ -180,8 +176,8 @@ public class TestFalconUnit extends FalconUnitTestBase {
}
@Test
- public void testUpdate() throws IOException, FalconCLIException, FalconException,
- ParseException, InterruptedException {
+ public void testUpdateAndTouch() throws IOException, FalconCLIException, FalconException, ParseException,
+ InterruptedException {
submitClusterAndFeeds();
APIResult result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
@@ -208,6 +204,8 @@ public class TestFalconUnit extends FalconUnitTestBase {
result = falconUnitClient.update(EntityType.PROCESS.name(), PROCESS_NAME, file.getAbsolutePath(), true, null);
assertStatus(result);
+ result = falconUnitClient.touch(EntityType.PROCESS.name(), PROCESS_NAME, null, true, null);
+ assertStatus(result);
process = getEntity(EntityType.PROCESS,
PROCESS_NAME);
@@ -230,7 +228,6 @@ public class TestFalconUnit extends FalconUnitTestBase {
property.setName("dummy");
property.setValue("dummy");
process.getProperties().getProperties().add(property);
-
}
@Test
@@ -240,7 +237,7 @@ public class TestFalconUnit extends FalconUnitTestBase {
createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
APIResult result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
- result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 3, CLUSTER_NAME, getAbsolutePath(SLEEP_WORKFLOW), true,
+ result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 2, CLUSTER_NAME, getAbsolutePath(SLEEP_WORKFLOW), true,
"");
assertStatus(result);
InstancesResult.WorkflowStatus currentStatus;
@@ -280,8 +277,8 @@ public class TestFalconUnit extends FalconUnitTestBase {
createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
APIResult result = submitProcess(getAbsolutePath(PROCESS), PROCESS_APP_PATH);
assertStatus(result);
- result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 3, CLUSTER_NAME, getAbsolutePath(WORKFLOW), true, "");
- assertStatus(result);
+ result = scheduleProcess(PROCESS_NAME, SCHEDULE_TIME, 2, CLUSTER_NAME, getAbsolutePath(SLEEP_WORKFLOW), true,
+ "");
InstancesResult.WorkflowStatus currentStatus;
waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.SUCCEEDED);
currentStatus = getClient().getInstanceStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME);
@@ -329,4 +326,44 @@ public class TestFalconUnit extends FalconUnitTestBase {
SCHEDULE_TIME, END_TIME, null, null);
Assert.assertEquals(feedInstanceResult.getStatus(), APIResult.Status.SUCCEEDED);
}
+
+ @Test
+ public void testEntityList() throws Exception {
+ submitClusterAndFeeds();
+ // submitting and scheduling process
+ createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
+ APIResult result = submitAndSchedule(EntityType.PROCESS.name(), getAbsolutePath(PROCESS),
+ getAbsolutePath(SLEEP_WORKFLOW), true, null, "", PROCESS_APP_PATH);
+ assertStatus(result);
+ waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.RUNNING);
+ InstancesResult.WorkflowStatus currentStatus = getClient().getInstanceStatus(EntityType.PROCESS.name(),
+ PROCESS_NAME, SCHEDULE_TIME);
+ Assert.assertEquals(currentStatus, InstancesResult.WorkflowStatus.RUNNING);
+
+ EntityList entityList = getClient().getEntityList(EntityType.PROCESS.name(), "", "", null, null, null, null,
+ null, new Integer(0), new Integer(1), null);
+ Assert.assertNotNull(entityList.getElements());
+ Assert.assertEquals(entityList.getElements().length, 1);
+ Assert.assertEquals(entityList.getElements()[0].name, PROCESS_NAME);
+ }
+
+ @Test
+ public void testEntitySummary() throws Exception {
+ submitClusterAndFeeds();
+ // submitting and scheduling process
+ createData(INPUT_FEED_NAME, CLUSTER_NAME, SCHEDULE_TIME, INPUT_FILE_NAME);
+ APIResult result = submitAndSchedule(EntityType.PROCESS.name(), getAbsolutePath(PROCESS),
+ getAbsolutePath(SLEEP_WORKFLOW), true, null, "", PROCESS_APP_PATH);
+ assertStatus(result);
+ waitForStatus(EntityType.PROCESS.name(), PROCESS_NAME, SCHEDULE_TIME, InstancesResult.WorkflowStatus.RUNNING);
+ InstancesResult.WorkflowStatus currentStatus = getClient().getInstanceStatus(EntityType.PROCESS.name(),
+ PROCESS_NAME, SCHEDULE_TIME);
+ Assert.assertEquals(currentStatus, InstancesResult.WorkflowStatus.RUNNING);
+ EntitySummaryResult summaryResult = getClient().getEntitySummary(EntityType.PROCESS.name(), CLUSTER_NAME,
+ SCHEDULE_TIME, END_TIME, "", "", null, null, null, new Integer(0), new Integer(1), new Integer(1),
+ null);
+ Assert.assertEquals(summaryResult.getStatus(), APIResult.Status.SUCCEEDED);
+ Assert.assertNotNull(summaryResult.getEntitySummaries());
+ Assert.assertEquals(summaryResult.getEntitySummaries().length, 1);
+ }
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/webapp/src/test/java/org/apache/falcon/resource/ProcessInstanceManagerIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/resource/ProcessInstanceManagerIT.java b/webapp/src/test/java/org/apache/falcon/resource/ProcessInstanceManagerIT.java
index 8dbbd7d..6458b59 100644
--- a/webapp/src/test/java/org/apache/falcon/resource/ProcessInstanceManagerIT.java
+++ b/webapp/src/test/java/org/apache/falcon/resource/ProcessInstanceManagerIT.java
@@ -123,22 +123,22 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
submitCluster(context.colo, context.clusterName, null);
context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-21T00:00Z";
+ String endTime = "2012-04-20T00:01Z";
InstancesResult response = context.getClient().getStatusOfInstances(EntityType.PROCESS.name(),
context.processName, START_INSTANCE, endTime, context.colo, null, null, "", "", 0, 1, null);
Assert.assertEquals(response.getStatus(), APIResult.Status.SUCCEEDED);
Assert.assertNotNull(response.getInstances());
Assert.assertEquals(response.getInstances().length, 1);
- assertInstance(response.getInstances()[0], START_INSTANCE, WorkflowStatus.RUNNING);
+ Assert.assertEquals(response.getInstances()[0].getStatus(), WorkflowStatus.RUNNING);
}
@Test
public void testGetInstanceStatusPagination() throws Exception {
UnitTestContext context = new UnitTestContext();
submitCluster(context.colo, context.clusterName, null);
- context.scheduleProcessForPagination();
+ context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-20T00:03Z";
+ String endTime = "2012-04-20T00:02Z";
InstancesResult response = context.getClient().getStatusOfInstances(EntityType.PROCESS.name(),
context.processName, START_INSTANCE, endTime, context.colo, null, "STATUS:RUNNING", "startTime",
"", 0, new Integer(1), null);
@@ -154,7 +154,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
submitCluster(context.colo, context.clusterName, null);
context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-21T00:00Z";
+ String endTime = "2012-04-20T00:01Z";
context.getClient().killInstances(EntityType.PROCESS.name(), context.processName, START_INSTANCE, endTime,
context.colo, null, null, null, null);
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.KILLED);
@@ -172,7 +172,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
Assert.assertEquals(response.getStatus(), APIResult.Status.SUCCEEDED);
Assert.assertNotNull(response.getInstances());
Assert.assertEquals(response.getInstances().length, 1);
- assertInstance(response.getInstances()[0], START_INSTANCE, WorkflowStatus.KILLED);
+ Assert.assertEquals(response.getInstances()[0].getStatus(), WorkflowStatus.KILLED);
}
@Test
@@ -181,7 +181,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
submitCluster(context.colo, context.clusterName, null);
context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-21T00:00Z";
+ String endTime = "2012-04-20T00:01Z";
context.getClient().killInstances(EntityType.PROCESS.name(), context.processName, START_INSTANCE, endTime,
context.colo, null, null, null, null);
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.KILLED);
@@ -202,7 +202,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
Assert.assertEquals(response.getStatus(), APIResult.Status.SUCCEEDED);
Assert.assertNotNull(response.getInstances());
Assert.assertEquals(response.getInstances().length, 1);
- assertInstance(response.getInstances()[0], START_INSTANCE, WorkflowStatus.RUNNING);
+ Assert.assertEquals(response.getInstances()[0].getStatus(), WorkflowStatus.RUNNING);
}
@Test
@@ -211,7 +211,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
submitCluster(context.colo, context.clusterName, null);
context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-21T00:00Z";
+ String endTime = "2012-04-20T00:01Z";
context.getClient().suspendInstances(EntityType.PROCESS.name(), context.processName, START_INSTANCE,
endTime, context.colo, context.clusterName, null, null, null);
@@ -222,7 +222,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
Assert.assertEquals(response.getStatus(), APIResult.Status.SUCCEEDED);
Assert.assertNotNull(response.getInstances());
Assert.assertEquals(response.getInstances().length, 1);
- assertInstance(response.getInstances()[0], START_INSTANCE, WorkflowStatus.SUSPENDED);
+ Assert.assertEquals(response.getInstances()[0].getStatus(), WorkflowStatus.SUSPENDED);
}
@Test
@@ -231,7 +231,7 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
submitCluster(context.colo, context.clusterName, null);
context.scheduleProcess();
waitForStatus(EntityType.PROCESS.name(), context.processName, START_INSTANCE, WorkflowStatus.RUNNING);
- String endTime = "2012-04-21T00:00Z";
+ String endTime = "2012-04-20T00:01Z";
context.getClient().suspendInstances(EntityType.PROCESS.name(), context.processName, START_INSTANCE,
endTime, context.colo, context.clusterName, null, null, null);
@@ -253,6 +253,6 @@ public class ProcessInstanceManagerIT extends FalconUnitTestBase {
Assert.assertEquals(response.getStatus(), APIResult.Status.SUCCEEDED);
Assert.assertNotNull(response.getInstances());
Assert.assertEquals(response.getInstances().length, 1);
- assertInstance(response.getInstances()[0], START_INSTANCE, WorkflowStatus.RUNNING);
+ Assert.assertEquals(response.getInstances()[0].getStatus(), WorkflowStatus.RUNNING);
}
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/ef4e8a4b/webapp/src/test/java/org/apache/falcon/resource/UnitTestContext.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/resource/UnitTestContext.java b/webapp/src/test/java/org/apache/falcon/resource/UnitTestContext.java
index 37442c3..1d49353 100644
--- a/webapp/src/test/java/org/apache/falcon/resource/UnitTestContext.java
+++ b/webapp/src/test/java/org/apache/falcon/resource/UnitTestContext.java
@@ -44,8 +44,6 @@ public class UnitTestContext {
public static final String FEED_TEMPLATE2 = "/feed-template2.xml";
public static final String PROCESS_TEMPLATE = "/process-template.xml";
- private static final String START_INSTANCE = "2012-04-20T00:00Z";
-
protected String colo;
protected String clusterName;
protected String processName;
@@ -99,14 +97,10 @@ public class UnitTestContext {
}
public void scheduleProcess() throws Exception {
- scheduleProcess(PROCESS_TEMPLATE, overlay, 1);
- }
-
- public void scheduleProcessForPagination() throws Exception {
- scheduleProcess(PROCESS_TEMPLATE, overlay, 2);
+ scheduleProcess(PROCESS_TEMPLATE, overlay);
}
- public void scheduleProcess(String processTemplate, Map<String, String> uniqueOverlay, int numInstances) throws
+ public void scheduleProcess(String processTemplate, Map<String, String> uniqueOverlay) throws
Exception {
prepare();
@@ -122,9 +116,7 @@ public class UnitTestContext {
result = client.submit(EntityType.PROCESS.name(), tmpFile, null);
Assert.assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED);
- String scheduleTime = START_INSTANCE;
-
- result = client.schedule(EntityType.PROCESS, processName, scheduleTime, numInstances, clusterName, true, "");
+ result = client.schedule(EntityType.PROCESS, processName, clusterName, true, null, null);
Assert.assertEquals(result.getStatus(), APIResult.Status.SUCCEEDED);
}