blob: 4f72d822bfdaf0d7236d1ccf93f0afb1bb88e241 [file] [log] [blame]
/**
* 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.cli;
import org.apache.falcon.FalconCLIConstants;
import org.apache.falcon.entity.v0.SchemaHelper;
import org.apache.falcon.metadata.RelationshipType;
import org.apache.falcon.resource.TestContext;
import org.apache.falcon.util.FalconTestUtil;
import org.apache.falcon.util.OozieTestUtils;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Date;
import java.util.Map;
/**
* Test for Falcon CLI.
*
* todo: Refactor both the classes to move this methods to helper;
*/
@Test(groups = {"exhaustive"})
public class FalconCLIIT {
private InMemoryWriter stream = new InMemoryWriter(System.out);
@BeforeClass
public void prepare() throws Exception {
TestContext.prepare();
}
@AfterClass
public void tearDown() throws Exception {
TestContext.deleteEntitiesFromStore();
}
public void testSubmitEntityValidCommands() throws Exception {
FalconCLI.OUT.set(stream);
String filePath;
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
filePath = TestContext.overlayParametersOverTemplate(TestContext.CLUSTER_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type cluster -file " + filePath), 0);
context.setCluster(overlay.get("cluster"));
Assert.assertEquals(stream.buffer.toString().trim(),
"falcon/default/Submit successful (cluster) " + context.getClusterName());
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
Assert.assertEquals(
stream.buffer.toString().trim(),
"falcon/default/Submit successful (feed) "
+ overlay.get("inputFeedName"));
// Test the lookup command
Assert.assertEquals(executeWithURL("entity -lookup -type feed -path "
+ "/falcon/test/input/2014/11/23/23"), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -file " + filePath), 0);
Assert.assertEquals(
stream.buffer.toString().trim(),
"falcon/default/Submit successful (feed) "
+ overlay.get("outputFeedName"));
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -file " + filePath), 0);
Assert.assertEquals(
stream.buffer.toString().trim(),
"falcon/default/Submit successful (process) "
+ overlay.get("processName"));
}
public void testListWithEmptyConfigStore() throws Exception {
Assert.assertEquals(executeWithURL("entity -list -type process "), 0);
}
public void testSubmitAndScheduleEntityValidCommands() throws Exception {
String filePath;
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
filePath = TestContext.overlayParametersOverTemplate(context.getClusterFileTemplate(), overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type cluster -file " + filePath), -1);
context.setCluster(overlay.get("cluster"));
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type process -file " + filePath), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
Assert.assertEquals(executeWithURL("entity -update -name " + overlay.get("processName")
+ " -type process -file " + filePath), 0);
Assert.assertEquals(0,
executeWithURL("entity -touch -name " + overlay.get("processName") + " -type process"));
}
public void testValidateValidCommands() throws Exception {
String filePath;
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
filePath = TestContext.overlayParametersOverTemplate(context.getClusterFileTemplate(), overlay);
Assert.assertEquals(executeWithURL("entity -validate -type cluster -file " + filePath), 0);
context.setCluster(overlay.get("cluster"));
Assert.assertEquals(executeWithURL("entity -submit -type cluster -file " + filePath), 0);
context.setCluster(overlay.get("cluster"));
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -validate -type feed -file " + filePath), 0);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -validate -type feed -file " + filePath), 0);
Assert.assertEquals(executeWithURL("entity -submit -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -validate -type process -file " + filePath), 0);
Assert.assertEquals(executeWithURL("entity -submit -type process -file " + filePath), 0);
}
public void testDefinitionEntityValidCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -definition -type cluster -name " + overlay.get("cluster")), 0);
Assert.assertEquals(executeWithURL("entity -definition -type feed -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -definition -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -definition -type process -name " + overlay.get("processName")), 0);
}
public void testScheduleEntityValidCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type cluster -name " + overlay.get("cluster")), -1);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")
+ " -properties key:value"), 0);
}
public void testSkipDryRunValidCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(
executeWithURL("entity -schedule -skipDryRun -type cluster -name " + overlay.get("cluster")), -1);
Assert.assertEquals(
executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(
executeWithURL("entity -schedule -type process -skipDryRun -name " + overlay.get("processName")), 0);
Assert.assertEquals(0,
executeWithURL("entity -touch -skipDryRun -name " + overlay.get("processName") + " -type process"));
String filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(
executeWithURL("entity -submitAndSchedule -skipDryRun -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(
executeWithURL("entity -validate -skipDryRun -type process -file " + filePath), 0);
}
public void testSuspendResumeStatusEntityValidCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -status -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
Assert.assertEquals(executeWithURL("entity -suspend -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -suspend -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -suspend -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -resume -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -resume -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -resume -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -status -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -summary -type feed -cluster "+ overlay.get("cluster")
+ " -fields status,tags -start " + START_INSTANCE
+ " -filterBy TYPE:FEED -orderBy name -sortOrder asc "
+ " -offset 0 -numResults 1 -numInstances 5"), 0);
Assert.assertEquals(executeWithURL("entity -summary -type process -fields status,pipelines"
+ " -cluster " + overlay.get("cluster")
+ " -start " + SchemaHelper.getDateFormat().format(new Date(0))
+ " -end " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy TYPE:PROCESS -orderBy name -sortOrder desc "
+ " -offset 0 -numResults 1 -numInstances 7"), 0);
Assert.assertEquals(executeWithURL("entity -summary -type process -fields status,pipelines"
+ " -cluster " + overlay.get("cluster")
+ " -start " + SchemaHelper.getDateFormat().format(new Date(0))
+ " -end " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy TYPE:PROCESS -orderBy name -sortOrder invalid "
+ " -offset 0 -numResults 1 -numInstances 7"), -1);
// No start or end date and with doAs option
Assert.assertEquals(executeWithURL("entity -summary -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -fields status,pipelines"
+ " -cluster " + overlay.get("cluster")
+ " -filterBy TYPE:PROCESS -orderBy name "
+ " -offset 0 -numResults 1 -numInstances 7"), 0);
}
public void testSubCommandPresence() throws Exception {
Assert.assertEquals(-1, executeWithURL("entity -type cluster "));
}
public void testDeleteEntityValidCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -delete -type cluster -name " + overlay.get("cluster")), -1);
Assert.assertEquals(executeWithURL("entity -delete -type feed -name " + overlay.get("inputFeedName")), -1);
Assert.assertEquals(executeWithURL("entity -delete -type feed -doAs " + FalconTestUtil.TEST_USER_2 + " -name "
+ overlay.get("outputFeedName")), -1);
Assert.assertEquals(executeWithURL("entity -delete -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -delete -type feed -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -delete -type feed -name " + overlay.get("outputFeedName")), 0);
}
public void testInvalidCLIEntitycommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -name " + "name"), -1);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -file " + "name"), -1);
}
public void testInstanceRunningAndStatusCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
//Test the dependency command
Assert.assertEquals(executeWithURL("instance -dependency -type feed -name " + overlay.get("inputFeedName")
+ " -instanceTime 2010-01-01T00:00Z"), 0);
//Test the dependency command with doAs
Assert.assertEquals(executeWithURL("instance -dependency -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("inputFeedName") + " -instanceTime 2010-01-01T00:00Z"), 0);
Assert.assertEquals(executeWithURL("instance -status -type feed -name "
+ overlay.get("outputFeedName")
+ " -start " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -running -type process -name " + overlay.get("processName")), 0);
// with doAs
Assert.assertEquals(executeWithURL("instance -running -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -listing -type feed -name "
+ overlay.get("outputFeedName") + " -start " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -status -type process -name "
+ overlay.get("processName") + " -start " + START_INSTANCE), 0);
//TEst instance status with doAs
Assert.assertEquals(executeWithURL("instance -status -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName") + " -start " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -status -type feed -lifecycle eviction,replication -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -status -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -params -type process -name "
+ overlay.get("processName") + " -start " + START_INSTANCE), 0);
// doAs option
Assert.assertEquals(executeWithURL("instance -params -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName") + " -start " + START_INSTANCE), 0);
// test filterBy, orderBy, offset, numResults
String startTimeString = SchemaHelper.getDateFormat().format(new Date());
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + startTimeString
+ " -orderBy startTime -sortOrder asc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -orderBy INVALID -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + startTimeString
+ " -orderBy startTime -sortOrder desc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + startTimeString
+ " -orderBy startTime -sortOrder invalid -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName") + " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy INVALID:FILTER -offset 0 -numResults 1"), -1);
// testcase : start str is older than entity schedule time.
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date(10000))
+ " -orderBy startTime -sortOrder asc -offset 0 -numResults 1"), 0);
// testcase : end str is in future
long futureTimeinMilliSecs = (new Date()).getTime()+ 86400000;
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date(10000))
+ " -end " + SchemaHelper.getDateFormat().format(new Date(futureTimeinMilliSecs))
+ " -orderBy startTime -offset 0 -numResults 1"), 0);
// Both start and end dates are optional
Assert.assertEquals(executeWithURL("instance -running -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -orderBy startTime -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -status -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED,STARTEDAFTER:" + START_INSTANCE
+ " -orderBy startTime -sortOrder desc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -status -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE
+ " -filterBy SOURCECLUSTER:" + overlay.get("cluster")
+ " -orderBy startTime -sortOrder desc -offset 0 -numResults 1"), 0);
//Test list with doAs
Assert.assertEquals(executeWithURL("instance -list -type feed -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("outputFeedName") + " -start "
+ SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -list -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy STATUS:SUCCEEDED -orderBy startTime -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -list -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy SOURCECLUSTER:" + overlay.get("src.cluster.name")
+ " -orderBy startTime -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -status -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())
+" -filterBy INVALID:FILTER -orderBy startTime -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -list -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())
+" -filterBy STATUS:SUCCEEDED -orderBy INVALID -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -status -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -filterBy STATUS:SUCCEEDED -orderBy startTime -offset 1 -numResults 1"), 0);
// When you get a cluster for which there are no feed entities,
Assert.assertEquals(executeWithURL("entity -summary -type feed -cluster " + overlay.get("cluster")
+ " -fields status,tags"
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -offset 0 -numResults 1 -numInstances 3"), 0);
}
public void testInstanceRunningAndSearchSummaryCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
Assert.assertEquals(executeWithURL("instance -status -type feed -name " + overlay.get("outputFeedName")
+ " -start " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -search"), 0);
Assert.assertEquals(executeWithURL("instance -running -type process -name " + overlay.get("processName")), 0);
//with doAs
Assert.assertEquals(executeWithURL(
"instance -search -type process -instanceStatus RUNNING -doAs " + FalconTestUtil.TEST_USER_2), 0);
Assert.assertEquals(executeWithURL("instance -running -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("instance -summary -type process -name "
+ overlay.get("processName") + " -start " + START_INSTANCE), 0);
//with doAs
Assert.assertEquals(executeWithURL("instance -summary -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName") + " -start " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -summary -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -params -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE), 0);
//with doAs
Assert.assertEquals(executeWithURL("instance -params -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName") + " -start " + START_INSTANCE), 0);
}
public void testInstanceSuspendAndResume() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
Assert.assertEquals(executeWithURL("instance -suspend -type feed -name "
+ overlay.get("inputFeedName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -suspend -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -name " + overlay.get("processName") + " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
// No end date, should fail.
Assert.assertEquals(executeWithURL("instance -suspend -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())), -1);
Assert.assertEquals(executeWithURL("instance -resume -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -resume -type feed -doAs " + FalconTestUtil.TEST_USER_2 + " -name "
+ overlay.get("inputFeedName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -resume -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -end " + SchemaHelper.getDateFormat().format(new Date())), 0);
}
private static final String START_INSTANCE = "2012-04-20T00:00Z";
public void testInstanceKillAndRerun() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -doAs " + FalconTestUtil.TEST_USER_2 + " -name "
+ overlay.get("inputFeedName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
Assert.assertEquals(executeWithURL("instance -kill -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -kill -type feed -doAs " + FalconTestUtil.TEST_USER_2 + " -name "
+ overlay.get("inputFeedName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
// Fail due to no end date
Assert.assertEquals(executeWithURL("instance -kill -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())), -1);
Assert.assertEquals(executeWithURL("instance -rerun -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -file " + createTempJobPropertiesFile()), 0);
Assert.assertEquals(executeWithURL("instance -rerun -type feed -doAs " + FalconTestUtil.TEST_USER_2 + " -name "
+ overlay.get("inputFeedName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -file " + createTempJobPropertiesFile()), 0);
Assert.assertEquals(executeWithURL("instance -rerun -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start " + SchemaHelper.getDateFormat().format(new Date())
+ " -end " + SchemaHelper.getDateFormat().format(new Date())
+ " -file " + createTempJobPropertiesFile()), 0);
}
@Test
public void testEntityLineage() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
String filePath;
filePath = TestContext.overlayParametersOverTemplate(context.getClusterFileTemplate(), overlay);
context.setCluster(overlay.get("cluster"));
Assert.assertEquals(executeWithURL("entity -submit -type cluster -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type process -file " + filePath), 0);
Assert.assertEquals(executeWithURL("metadata -lineage -pipeline testPipeline"), 0);
Assert.assertEquals(executeWithURL("metadata -lineage -doAs " + FalconTestUtil.TEST_USER_2
+ " -pipeline testPipeline"), 0);
}
@Test
public void testEntityPaginationFilterByCommands() throws Exception {
String filePath;
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
filePath = TestContext.overlayParametersOverTemplate(context.getClusterFileTemplate(), overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type cluster -file " + filePath), -1);
context.setCluster(overlay.get("cluster"));
// this is necessary for lineage
Assert.assertEquals(executeWithURL("entity -submit -type cluster -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -validate -type process -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submitAndSchedule -type process -file " + filePath), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
// test entity List cli
Assert.assertEquals(executeWithURL("entity -list -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type feed,process -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type feed,process -offset 0 -numResults 1 "
+ "-nameseq abc -tagkeys abc"), 0);
Assert.assertEquals(executeWithURL("entity -list -type cluster" + " -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status "
+ " -filterBy STATUS:SUBMITTED,TYPE:process -orderBy name "
+ " -sortOrder asc -offset 1 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status,pipelines "
+ " -filterBy STATUS:SUBMITTED,type:process -orderBy name -offset 1 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status,pipelines "
+ " -filterBy STATUS:SUBMITTED,pipelines:testPipeline "
+ " -orderBy name -sortOrder desc -offset 1 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status,tags "
+ " -tags owner=producer@xyz.com,department=forecasting "
+ " -filterBy STATUS:SUBMITTED,type:process -orderBy name -offset 1 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status "
+ " -filterBy STATUS:SUCCEEDED,TYPE:process -orderBy INVALID -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("entity -list -type process -fields INVALID "
+ " -filterBy STATUS:SUCCEEDED,TYPE:process -orderBy name -offset 1 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status "
+ " -filterBy INVALID:FILTER,TYPE:process -orderBy name -offset 1 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("entity -definition -type cluster -name " + overlay.get("cluster")), 0);
Assert.assertEquals(executeWithURL("entity -list -type process -fields status,tags "
+ " -tags owner=producer@xyz.com,department=forecasting "
+ " -filterBy STATUS:SUBMITTED,type:process "
+ " -orderBy name -sortOrder invalid -offset 1 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -status -type feed -name "
+ overlay.get("outputFeedName") + " -start " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -running -type process -name " + overlay.get("processName")), 0);
// with doAs
Assert.assertEquals(executeWithURL("entity -list -type process -doAs " + FalconTestUtil.TEST_USER_2
+ " -fields status -filterBy STATUS:SUBMITTED,TYPE:process -orderBy name "
+ " -sortOrder asc -offset 1 -numResults 1"), 0);
}
@Test
public void testMetadataListCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
String processName = overlay.get("processName");
String feedName = overlay.get("outputFeedName");
String clusterName = overlay.get("cluster");
Assert.assertEquals(executeWithURL(FalconCLIConstants.ENTITY_CMD + " -" + FalconCLIConstants.SCHEDULE_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " process -"
+ FalconCLIConstants.ENTITY_NAME_OPT + " " + processName), 0);
Assert.assertEquals(executeWithURL(FalconCLIConstants.ENTITY_CMD + " -" + FalconCLIConstants.SCHEDULE_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " feed -" + FalconCLIConstants.ENTITY_NAME_OPT + " " + feedName), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
String metadataListCommand = FalconCLIConstants.METADATA_CMD + " -" + FalconCLIConstants.LIST_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " ";
String metadataListCommandWithDoAs = FalconCLIConstants.METADATA_CMD + " -doAs " + FalconTestUtil.TEST_USER_2
+ " -" + FalconCLIConstants.LIST_OPT + " -" + FalconCLIConstants.TYPE_OPT + " ";
String clusterString = " -" + FalconCLIConstants.CLUSTER_OPT + " " + clusterName;
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.CLUSTER_ENTITY.name()), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.PROCESS_ENTITY.name()), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.FEED_ENTITY.name()), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.PROCESS_ENTITY.name()
+ clusterString), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.FEED_ENTITY.name()
+ clusterString), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + RelationshipType.CLUSTER_ENTITY.name()
+ clusterString), 0);
//with doAs
Assert.assertEquals(executeWithURL(metadataListCommandWithDoAs + RelationshipType.FEED_ENTITY.name()), 0);
Assert.assertEquals(executeWithURL(metadataListCommand + "feed"), -1);
Assert.assertEquals(executeWithURL(metadataListCommand + "invalid"), -1);
}
@Test
public void testMetadataRelationsCommands() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
String processName = overlay.get("processName");
String feedName = overlay.get("outputFeedName");
String clusterName = overlay.get("cluster");
Assert.assertEquals(executeWithURL(FalconCLIConstants.ENTITY_CMD + " -" + FalconCLIConstants.SCHEDULE_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " process -"
+ FalconCLIConstants.ENTITY_NAME_OPT + " " + processName), 0);
Assert.assertEquals(executeWithURL(FalconCLIConstants.ENTITY_CMD + " -" + FalconCLIConstants.SCHEDULE_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " feed -" + FalconCLIConstants.ENTITY_NAME_OPT + " " + feedName), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
String metadataRelationsCommand = FalconCLIConstants.METADATA_CMD + " -"
+ FalconCLIConstants.RELATIONS_OPT + " -" + FalconCLIConstants.TYPE_OPT + " ";
String metadataRelationsCommandWithDoAs = FalconCLIConstants.METADATA_CMD
+ " -doAs " + FalconTestUtil.TEST_USER_2 + " -" + FalconCLIConstants.RELATIONS_OPT + " -"
+ FalconCLIConstants.TYPE_OPT + " ";
Assert.assertEquals(executeWithURL(metadataRelationsCommand + RelationshipType.CLUSTER_ENTITY.name()
+ " -" + FalconCLIConstants.NAME_OPT + " " + clusterName), 0);
Assert.assertEquals(executeWithURL(metadataRelationsCommand + RelationshipType.PROCESS_ENTITY.name()
+ " -" + FalconCLIConstants.NAME_OPT + " " + processName), 0);
// with doAs
Assert.assertEquals(executeWithURL(metadataRelationsCommandWithDoAs + RelationshipType.PROCESS_ENTITY.name()
+ " -" + FalconCLIConstants.NAME_OPT + " " + processName), 0);
Assert.assertEquals(executeWithURL(metadataRelationsCommand + "feed -"
+ FalconCLIConstants.NAME_OPT + " " + clusterName), -1);
Assert.assertEquals(executeWithURL(metadataRelationsCommand + "invalid -"
+ FalconCLIConstants.NAME_OPT + " " + clusterName), -1);
Assert.assertEquals(executeWithURL(metadataRelationsCommand + RelationshipType.CLUSTER_ENTITY.name()), -1);
}
public void testContinue() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
OozieTestUtils.waitForProcessWFtoStart(context);
Assert.assertEquals(executeWithURL("instance -kill -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -kill -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())
+ " -end " + SchemaHelper.getDateFormat().format(new Date())), 0);
Assert.assertEquals(executeWithURL("instance -rerun -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE), -1);
Assert.assertEquals(executeWithURL("instance -rerun -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -rerun -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())
+ " -end " + SchemaHelper.getDateFormat().format(new Date())), 0);
}
public void testInvalidCLIInstanceCommands() throws Exception {
// no command
Assert.assertEquals(executeWithURL(" -kill -type process -name "
+ "name" + " -start 2010-01-01T01:00Z -end 2010-01-01T03:00Z"), -1);
Assert.assertEquals(executeWithURL("instance -kill " + "name"
+ " -start 2010-01-01T01:00Z -end 2010-01-01T01:00Z"), -1);
Assert.assertEquals(executeWithURL("instance -kill -type process -name " + "name"
+ " -end 2010-01-01T03:00Z"), -1);
Assert.assertEquals(executeWithURL("instance -kill -type process -name "
+ " -start 2010-01-01T01:00Z -end 2010-01-01T03:00Z"), -1);
}
public void testFalconURL() throws Exception {
Assert.assertEquals(new FalconCLI()
.run(("instance -status -type process -name " + "processName"
+ " -start 2010-01-01T01:00Z -end 2010-01-01T03:00Z")
.split("\\s")), -1);
Assert.assertEquals(new FalconCLI()
.run(("instance -status -type process -name "
+ "processName -url http://unknownhost:1234/"
+ " -start 2010-01-01T01:00Z -end 2010-01-01T03:00Z")
.split("\\s")), -1);
}
public void testClientProperties() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(new FalconCLI().run(("entity -schedule -type feed -name "
+ overlay.get("outputFeedName") + " -url "
+ TestContext.BASE_URL).split("\\s+")), 0);
Assert.assertEquals(new FalconCLI().run(("entity -schedule -type process -name "
+ overlay.get("processName") + " -url "
+ TestContext.BASE_URL).split("\\s+")), 0);
}
public void testGetVersion() throws Exception {
Assert.assertEquals(new FalconCLI().run(("admin -version -url " + TestContext.BASE_URL).split("\\s")), 0);
Assert.assertEquals(new FalconCLI().run(("admin -doAs " + FalconTestUtil.TEST_USER_2 + " -version -url "
+ TestContext.BASE_URL).split("\\s")), 0);
}
public void testGetStatus() throws Exception {
Assert.assertEquals(new FalconCLI().run(("admin -status -url " + TestContext.BASE_URL).split("\\s")), 0);
Assert.assertEquals(new FalconCLI().run(("admin -doAs " + FalconTestUtil.TEST_USER_2 + " -status -url "
+ TestContext.BASE_URL).split("\\s")), 0);
}
public void testGetThreadStackDump() throws Exception {
Assert.assertEquals(new FalconCLI().run(("admin -stack -url " + TestContext.BASE_URL).split("\\s")), 0);
Assert.assertEquals(new FalconCLI().run(("admin -doAs " + FalconTestUtil.TEST_USER_2 + " -stack -url "
+ TestContext.BASE_URL).split("\\s")), 0);
}
public void testInstanceGetLogs() throws Exception {
TestContext context = new TestContext();
Map<String, String> overlay = context.getUniqueOverlay();
submitTestFiles(context, overlay);
Assert.assertEquals(executeWithURL("entity -schedule -type process -name " + overlay.get("processName")), 0);
Assert.assertEquals(executeWithURL("entity -schedule -type feed -name " + overlay.get("outputFeedName")), 0);
Thread.sleep(500);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE), 0);
Assert.assertEquals(executeWithURL("instance -logs -type feed -lifecycle eviction -name "
+ overlay.get("outputFeedName")
+ " -start "+ SchemaHelper.getDateFormat().format(new Date())), 0);
// with doAs
Assert.assertEquals(executeWithURL("instance -logs -doAs " + FalconTestUtil.TEST_USER_2 + " -type feed "
+ "-lifecycle eviction -name " + overlay.get("outputFeedName") + " -start "
+ SchemaHelper.getDateFormat().format(new Date())), 0);
// test filterBy, orderBy, offset, numResults
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED -orderBy endtime "
+ " -sortOrder asc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED -orderBy starttime "
+ " -sortOrder asc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED -orderBy cluster "
+ " -sortOrder asc -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:WAITING -orderBy startTime -offset 0 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED -orderBy endtime "
+ " -sortOrder invalid -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED,STARTEDAFTER:"+START_INSTANCE+" -offset 1 -numResults 1"), 0);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy INVALID:FILTER -orderBy startTime -offset 0 -numResults 1"), -1);
Assert.assertEquals(executeWithURL("instance -logs -type process -name "
+ overlay.get("processName")
+ " -start " + START_INSTANCE + " -end " + START_INSTANCE
+ " -filterBy STATUS:SUCCEEDED -orderBy wrongOrder -offset 0 -numResults 1"), -1);
}
private int executeWithURL(String command) throws Exception {
//System.out.println("COMMAND IS "+command + " -url " + TestContext.BASE_URL);
return new FalconCLI()
.run((command + " -url " + TestContext.BASE_URL).split("\\s+"));
}
private String createTempJobPropertiesFile() throws IOException {
File target = new File("webapp/target");
if (!target.exists()) {
target = new File("target");
}
File tmpFile = File.createTempFile("job", ".properties", target);
OutputStream out = new FileOutputStream(tmpFile);
out.write("oozie.wf.rerun.failnodes=true\n".getBytes());
out.close();
return tmpFile.getAbsolutePath();
}
private void submitTestFiles(TestContext context, Map<String, String> overlay) throws Exception {
String filePath = TestContext.overlayParametersOverTemplate(context.getClusterFileTemplate(),
overlay);
Assert.assertEquals(executeWithURL("entity -submit -type cluster -file " + filePath), 0);
context.setCluster(overlay.get("cluster"));
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE1, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.FEED_TEMPLATE2, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type feed -file " + filePath), 0);
filePath = TestContext.overlayParametersOverTemplate(TestContext.PROCESS_TEMPLATE, overlay);
Assert.assertEquals(executeWithURL("entity -submit -type process -file " + filePath), 0);
}
private static class InMemoryWriter extends PrintStream {
private StringBuffer buffer = new StringBuffer();
public InMemoryWriter(OutputStream out) {
super(out);
}
@Override
public void println(String x) {
clear();
buffer.append(x);
super.println(x);
}
@SuppressWarnings("UnusedDeclaration")
public String getBuffer() {
return buffer.toString();
}
public void clear() {
buffer.delete(0, buffer.length());
}
}
}