Return-Path: X-Original-To: apmail-falcon-commits-archive@minotaur.apache.org Delivered-To: apmail-falcon-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 504DB18912 for ; Wed, 6 Jan 2016 11:41:04 +0000 (UTC) Received: (qmail 80254 invoked by uid 500); 6 Jan 2016 11:41:04 -0000 Delivered-To: apmail-falcon-commits-archive@falcon.apache.org Received: (qmail 80218 invoked by uid 500); 6 Jan 2016 11:41:04 -0000 Mailing-List: contact commits-help@falcon.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@falcon.apache.org Delivered-To: mailing list commits@falcon.apache.org Received: (qmail 80209 invoked by uid 99); 6 Jan 2016 11:41:04 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Jan 2016 11:41:04 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 03D72DFE6E; Wed, 6 Jan 2016 11:41:04 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ajayyadava@apache.org To: commits@falcon.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: falcon git commit: FALCON-1698 New tests for ProcessSetupTest, ClusterSetupTest, UI test fixes. Contributed by Paul Isaychuk. Date: Wed, 6 Jan 2016 11:41:04 +0000 (UTC) Repository: falcon Updated Branches: refs/heads/master ccb6df38b -> eeb7ff081 FALCON-1698 New tests for ProcessSetupTest, ClusterSetupTest, UI test fixes. Contributed by Paul Isaychuk. Project: http://git-wip-us.apache.org/repos/asf/falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/eeb7ff08 Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/eeb7ff08 Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/eeb7ff08 Branch: refs/heads/master Commit: eeb7ff081e905040cf98796f86361e63dd89fae1 Parents: ccb6df3 Author: Ajay Yadava Authored: Wed Jan 6 17:08:56 2016 +0530 Committer: Ajay Yadava Committed: Wed Jan 6 17:08:56 2016 +0530 ---------------------------------------------------------------------- falcon-regression/CHANGES.txt | 4 +- .../regression/Entities/ClusterMerlin.java | 8 ++- .../regression/Entities/ProcessMerlin.java | 3 ++ .../falcon/regression/core/bundle/Bundle.java | 2 +- .../regression/ui/search/ClusterWizardPage.java | 55 ++++++++++++++------ .../falcon/regression/ui/search/EntityPage.java | 4 ++ .../falcon/regression/ui/search/PageHeader.java | 18 ++++--- .../regression/ui/search/ProcessWizardPage.java | 17 +++++- .../regression/searchUI/ClusterSetupTest.java | 28 ++++++++-- .../regression/searchUI/MirrorSummaryTest.java | 4 +- .../regression/searchUI/ProcessSetupTest.java | 25 ++++++++- 11 files changed, 133 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/CHANGES.txt ---------------------------------------------------------------------- diff --git a/falcon-regression/CHANGES.txt b/falcon-regression/CHANGES.txt index c083c2c..1888401 100644 --- a/falcon-regression/CHANGES.txt +++ b/falcon-regression/CHANGES.txt @@ -5,7 +5,7 @@ Trunk (Unreleased) INCOMPATIBLE CHANGES NEW FEATURES - FALCON-1697 Stabilization of scenarios which are based on instances lifecycle(Paul Isaychuk via Ajay Yadava) + FALCON-1698 New tests for ProcessSetupTest, ClusterSetupTest, UI test fixes(Paul Isaychuk via Ajay Yadava) FALCON-1700 Add new test cases to HiveDRTest(Paul Isaychuk & Murali Ramasami via Ajay Yadava) @@ -113,6 +113,8 @@ Trunk (Unreleased) via Samarth Gupta) IMPROVEMENTS + FALCON-1697 Stabilization of scenarios which are based on instances lifecycle(Paul Isaychuk via Ajay Yadava) + FALCON-1543 Upgrade Falcon regression to use Active MQ 5.12(Pragya Mittal via Pallavi Rao) FALCON-1502 Checkstyle failures in Falcon Regression(Pragya Mittal via Ajay Yadava) http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ClusterMerlin.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ClusterMerlin.java b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ClusterMerlin.java index fe1338a..1d25d12 100644 --- a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ClusterMerlin.java +++ b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ClusterMerlin.java @@ -19,6 +19,7 @@ package org.apache.falcon.regression.Entities; import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.falcon.entity.v0.EntityType; import org.apache.falcon.entity.v0.cluster.ACL; @@ -92,12 +93,15 @@ public class ClusterMerlin extends Cluster { this.setACL(acl); } - public void setInterface(Interfacetype interfacetype, String value) { + public void setInterface(Interfacetype interfacetype, String endpoint, String version) { final Interfaces interfaces = this.getInterfaces(); final List interfaceList = interfaces.getInterfaces(); for (final Interface anInterface : interfaceList) { if (anInterface.getType() == interfacetype) { - anInterface.setEndpoint(value); + anInterface.setEndpoint(endpoint); + if (StringUtils.isNotBlank(version)) { + anInterface.setVersion(version); + } } } } http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ProcessMerlin.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ProcessMerlin.java b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ProcessMerlin.java index 7607aa6..fb76da1 100644 --- a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ProcessMerlin.java +++ b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/Entities/ProcessMerlin.java @@ -575,6 +575,9 @@ public class ProcessMerlin extends Process { softAssert.assertEquals(newProcess.getInputs().getInputs().get(i).getEnd(), getInputs().getInputs().get(i).getEnd(), "Process Input End is different"); + softAssert.assertEquals(newProcess.getInputs().getInputs().get(i).isOptional(), + getInputs().getInputs().get(i).isOptional(), + "Process Input optional param is different"); } softAssert.assertAll(); } http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/bundle/Bundle.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/bundle/Bundle.java b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/bundle/Bundle.java index 67d9ee2..9758d12 100644 --- a/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/bundle/Bundle.java +++ b/falcon-regression/merlin-core/src/main/java/org/apache/falcon/regression/core/bundle/Bundle.java @@ -559,7 +559,7 @@ public class Bundle { public void setClusterInterface(Interfacetype interfacetype, String value) { ClusterMerlin c = getClusterElement(); - c.setInterface(interfacetype, value); + c.setInterface(interfacetype, value, null); writeClusterElement(c); } http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ClusterWizardPage.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ClusterWizardPage.java b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ClusterWizardPage.java index bcada4a..f19fc23 100644 --- a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ClusterWizardPage.java +++ b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ClusterWizardPage.java @@ -138,12 +138,19 @@ public class ClusterWizardPage extends EntityWizardPage { * Common method to fill interfaces. */ public void setInterface(Interface iface) { - String root = String.format("//div[contains(., '%s')]", iface.getType().value()); - String xpath = root + "/div/input[contains(@ng-model, '%s')]"; - WebElement ifaceEndpoint = clusterBox.findElement(By.xpath(String.format(xpath, "_interface._endpoint"))); - WebElement ifaceVersion = clusterBox.findElement(By.xpath(String.format(xpath, "_interface._version"))); + String xpath = "//input[contains(@ng-model," + + " 'clusterEntity.clusterModel.cluster.interfaces.interface[%sPos]._endpoint')]"; + WebElement ifaceEndpoint = clusterBox.findElement(By.xpath(String.format(xpath, iface.getType().value()))); ifaceEndpoint.clear(); sendKeysSlowly(ifaceEndpoint, iface.getEndpoint()); + setInterfaceVersion(iface); + } + + /** + * Set interface version by interface type. + */ + public void setInterfaceVersion(Interface iface) { + WebElement ifaceVersion = getInterfaceVersionInput(iface.getType()); if (iface.getVersion() != null) { ifaceVersion.clear(); sendKeysSlowly(ifaceVersion, iface.getVersion()); @@ -151,6 +158,15 @@ public class ClusterWizardPage extends EntityWizardPage { } /** + * Get input for interface version by interface type. + */ + private WebElement getInterfaceVersionInput(Interfacetype interfacetype) { + return clusterBox.findElement(By.xpath(String.format( + "//input[@ng-model='clusterEntity.clusterModel.cluster.interfaces.interface[%sPos]._version']", + interfacetype.value()))); + } + + /** * Populates form with tags. */ public void setTags(String tagsStr){ @@ -199,7 +215,7 @@ public class ClusterWizardPage extends EntityWizardPage { List valueInputs = clusterBox.findElements(By.xpath("//input[@ng-model='property._value']")); WebElement propInput = propInputs.get(propInputs.size()-1); sendKeysSlowly(propInput, name); - WebElement valueInput = valueInputs.get(valueInputs.size()-1); + WebElement valueInput = valueInputs.get(valueInputs.size() - 1); sendKeysSlowly(valueInput, value); clickAddProperty(); } @@ -418,25 +434,32 @@ public class ClusterWizardPage extends EntityWizardPage { waitForAngularToFinish(); } - public String getInterfaceEndpoint(Interfacetype interfacetype) { - String xpath = String.format("(//input[@ng-model='_interface._endpoint'])[%s]", interfacetype.ordinal() + 1); - WebElement endpoint = clusterBox.findElement(By.xpath(xpath)); - return endpoint.getAttribute("value"); + public WebElement getInterfaceEndpoint(Interfacetype interfacetype) { + String xpath = String.format("//input[@ng-model='clusterEntity.clusterModel.cluster.interfaces" + + ".interface[%sPos]._endpoint']", interfacetype.value()); + return clusterBox.findElement(By.xpath(xpath)); + } + + public String getInterfaceEndpointValue(Interfacetype interfacetype) { + return getInterfaceEndpoint(interfacetype).getAttribute("value"); + } + + public WebElement getInterfaceVersion(Interfacetype interfacetype) { + String xpath = String.format("//input[@ng-model='clusterEntity.clusterModel.cluster.interfaces" + + ".interface[%sPos]._version']", interfacetype.value()); + return clusterBox.findElement(By.xpath(xpath)); } - public String getInterfaceVersion(Interfacetype interfacetype) { - String xpath = String.format("(//input[@ng-model='_interface._version'])[%s]", interfacetype.ordinal() + 1); - WebElement version = clusterBox.findElement(By.xpath(xpath)); - return version.getAttribute("value"); + public String getInterfaceVersionValue(Interfacetype interfacetype) { + return getInterfaceVersion(interfacetype).getAttribute("value"); } /** * Checks whether registry interface is enabled for input or not. */ public boolean isRegistryEnabled() { - WebElement endpoint = clusterBox.findElement(By.xpath("(//input[@ng-model='_interface._endpoint'])[6]")); - WebElement version = clusterBox.findElement(By.xpath("(//input[@ng-model='_interface._version'])[6]")); - return endpoint.isEnabled() && version.isEnabled(); + return getInterfaceEndpoint(Interfacetype.REGISTRY).isEnabled() + && getInterfaceVersion(Interfacetype.REGISTRY).isEnabled(); } private WebElement getNameUnavailable(){ http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/EntityPage.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/EntityPage.java b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/EntityPage.java index f7499b7..98bf9b5 100644 --- a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/EntityPage.java +++ b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/EntityPage.java @@ -30,6 +30,7 @@ import org.apache.falcon.entity.v0.process.Output; import org.apache.falcon.entity.v0.process.Retry; import org.apache.falcon.regression.Entities.FeedMerlin; import org.apache.falcon.regression.Entities.ProcessMerlin; +import org.apache.falcon.regression.core.util.TimeUtil; import org.apache.falcon.regression.core.util.UIAssert; import org.apache.falcon.resource.InstancesResult; import org.apache.log4j.Logger; @@ -401,9 +402,12 @@ public class EntityPage extends AbstractSearchPage { softAssert.assertAll(); } } + public void performActionOnSelectedInstances(InstanceAction instanceAction) { driver.findElement(By.xpath(String.format("//td/div[%d]", instanceAction.ordinal() + 1))).click(); waitForAngularToFinish(); + //timeout to refresh a view + TimeUtil.sleepSeconds(2); } public InstanceSummary getInstanceSummary() { http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/PageHeader.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/PageHeader.java b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/PageHeader.java index 7f87091..61d9475 100644 --- a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/PageHeader.java +++ b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/PageHeader.java @@ -89,13 +89,11 @@ public class PageHeader { private WebElement mirrorCreateButton; @FindBys({ - @FindBy(className = "navbar"), - @FindBy(className = "uploadNavWrapper") + @FindBy(className = "uploadNavWrapper"), }) private WebElement uploadEntityBox; @FindBys({ - @FindBy(className = "navbar"), @FindBy(className = "uploadNavWrapper"), @FindBy(className = "btn-file") }) @@ -153,7 +151,6 @@ public class PageHeader { final WebElement uploadEntityLabel = uploadEntityBox.findElement(By.tagName("h4")); Assert.assertEquals(uploadEntityLabel.getText(), "Upload an entity", "Unexpected upload entity text"); - UIAssert.assertDisplayed(uploadEntityButton, "Create entity box"); Assert.assertEquals(uploadEntityButton.getText(), "Browse for the XML file", "Unexpected text on upload entity button"); //checking if logged-in username is displayed @@ -180,14 +177,23 @@ public class PageHeader { //help link navigation Assert.assertEquals(helpLink.getText(), "Help", "Help link expected to have text 'Help'"); - helpLink.click(); - new WebDriverWait(driver, AbstractSearchPage.PAGELOAD_TIMEOUT_THRESHOLD).until( + clickLink(helpLink); + int helpPageloadTimeoutThreshold = 30; + new WebDriverWait(driver, helpPageloadTimeoutThreshold).until( ExpectedConditions.stalenessOf(helpLink)); Assert.assertEquals(driver.getCurrentUrl(), MerlinConstants.HELP_URL, "Unexpected help url"); driver.get(oldUrl); } + /** + * Useful in cases when selenium fails to click a link due to it's bugs. + */ + private void clickLink(WebElement link) { + JavascriptExecutor executor = (JavascriptExecutor) driver; + executor.executeScript("arguments[0].click();", link); + } + public void uploadXml(String filePath) throws IOException { final WebElement uploadEntityTextBox = uploadEntityBox.findElement(By.id("files")); uploadEntityTextBox.sendKeys(filePath); http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ProcessWizardPage.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ProcessWizardPage.java b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ProcessWizardPage.java index 5dcd700..8fcc5b7 100644 --- a/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ProcessWizardPage.java +++ b/falcon-regression/merlin/src/main/java/org/apache/falcon/regression/ui/search/ProcessWizardPage.java @@ -694,9 +694,18 @@ public class ProcessWizardPage extends EntityWizardPage { getInputFeed(i).selectByVisibleText(inputs.getInputs().get(i).getFeed()); sendKeysSlowly(getInputStart(i), inputs.getInputs().get(i).getStart()); sendKeysSlowly(getInputEnd(i), inputs.getInputs().get(i).getEnd()); + clickCheckBoxSecurely(getOptionalCheckbox(), inputs.getInputs().get(i).isOptional()); } } + private WebElement getOptionalCheckbox() { + return formBox.findElement(By.xpath("//input[@ng-model='input.optional']")); + } + + public boolean isOptionalSelected() { + return getOptionalCheckbox().isSelected(); + } + public void clickAddInput(){ waitForAngularToFinish(); getAddInputButton().click(); @@ -832,7 +841,7 @@ public class ProcessWizardPage extends EntityWizardPage { public ProcessMerlin getProcessFromSummaryBox(ProcessMerlin draft) { String text = summaryBox.getText().trim(); draft.setName(getProperty(text, null, "Tags", 2)); - String currentBlock = text.substring(text.indexOf("Tags"), text.indexOf("Workflow")); + String currentBlock = text.substring(text.indexOf("Tags"), text.indexOf("Access Control List")); String [] parts; parts = currentBlock.trim().split("\\n"); String tags = ""; @@ -846,6 +855,7 @@ public class ProcessWizardPage extends EntityWizardPage { if (!tags.isEmpty()) { draft.setTags(tags); } + Workflow workflow = new Workflow(); workflow.setName(getProperty(text, "Workflow", "Engine", 2)); workflow.setEngine(EngineType.fromValue(getProperty(text, "Engine", "Version", 1))); @@ -859,6 +869,11 @@ public class ProcessWizardPage extends EntityWizardPage { draft.setParallel(Integer.parseInt(getProperty(text, "Max. parallel instances", "Order", 1))); draft.setOrder(ExecutionType.fromValue(getProperty(text, "Order", "Retry", 1))); + String aclOwner = getProperty(text, "Owner", "Group", 1); + String aclGroup = getProperty(text, "Group", "Permissions", 1); + String aclPermission = getProperty(text, "Permissions", "Workflow", 1); + draft.setACL(aclOwner, aclGroup, aclPermission); + Retry retry = new Retry(); retry.setPolicy(PolicyType.fromValue(getProperty(text, "Retry", "Attempts", 2))); retry.setAttempts(Integer.parseInt(getProperty(text, "Attempts", "Delay", 1))); http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ClusterSetupTest.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ClusterSetupTest.java b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ClusterSetupTest.java index 5efa5b2..e0b69e1 100644 --- a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ClusterSetupTest.java +++ b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ClusterSetupTest.java @@ -226,6 +226,26 @@ public class ClusterSetupTest extends BaseUITestClass{ } /** + * Check that interface version with different length and parts is allowed. + */ + @Test + public void testDifferentInterfaceVersions() { + sourceCluster.addInterface(Interfacetype.REGISTRY, "http://colo-1.example.com:15000", "1.1.1"); + clusterSetup.checkRegistry(true); + clusterSetup.fillForm(sourceCluster); + StringBuilder partialVersion = new StringBuilder(""); + for (String c : new String[]{"3", ".", "2", ".", "0"}) { + partialVersion.append(c); + for (Interface inface : sourceCluster.getInterfaces().getInterfaces()) { + inface.setVersion(partialVersion.toString()); + clusterSetup.setInterfaceVersion(inface); + } + clusterSetup.clickNext(); + clusterSetup.clickPrevious(); + } + } + + /** * Populate working location with value pointing to directory with wider permissions then 755. * Check that user is not allowed to create a cluster and is notified with an alert. */ @@ -287,9 +307,9 @@ public class ClusterSetupTest extends BaseUITestClass{ public void testEditXml() { clusterSetup.fillForm(sourceCluster); //check that registry is empty - String registryEndpoint = clusterSetup.getInterfaceEndpoint(Interfacetype.REGISTRY); + String registryEndpoint = clusterSetup.getInterfaceEndpointValue(Interfacetype.REGISTRY); Assert.assertTrue(StringUtils.isEmpty(registryEndpoint), "Registry endpoint should be empty"); - String registryVersion = clusterSetup.getInterfaceVersion(Interfacetype.REGISTRY); + String registryVersion = clusterSetup.getInterfaceVersionValue(Interfacetype.REGISTRY); Assert.assertTrue(StringUtils.isEmpty(registryVersion), "Registry version should be empty"); Assert.assertFalse(clusterSetup.isRegistryEnabled(), "Registry should be disabled."); @@ -306,10 +326,10 @@ public class ClusterSetupTest extends BaseUITestClass{ clusterSetup.setXmlPreview(sourceCluster.toString()); //check values on wizard - registryEndpoint = clusterSetup.getInterfaceEndpoint(Interfacetype.REGISTRY); + registryEndpoint = clusterSetup.getInterfaceEndpointValue(Interfacetype.REGISTRY); Assert.assertEquals(registryEndpoint, sourceCluster.getInterfaces().getInterfaces().get(5).getEndpoint(), "Registry endpoint on wizard should match to endpoint on preview xml."); - registryVersion = clusterSetup.getInterfaceVersion(Interfacetype.REGISTRY); + registryVersion = clusterSetup.getInterfaceVersionValue(Interfacetype.REGISTRY); Assert.assertEquals(registryVersion, sourceCluster.getInterfaces().getInterfaces().get(5).getVersion(), "Registry version on wizard should match to endpoint on preview xml."); Assert.assertTrue(clusterSetup.isRegistryEnabled(), "Registry should be enabled."); http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/MirrorSummaryTest.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/MirrorSummaryTest.java b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/MirrorSummaryTest.java index 989e4b3..0a788f0 100644 --- a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/MirrorSummaryTest.java +++ b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/MirrorSummaryTest.java @@ -165,7 +165,7 @@ public class MirrorSummaryTest extends BaseUITestClass{ mirrorPage.setHdfsMaxBandwidth("50"); mirrorPage.setAclOwner("somebody"); mirrorPage.setAclGroup("somegroup"); - mirrorPage.setAclPermission("0x000"); + mirrorPage.setAclPermission("0000"); mirrorPage.setFrequency(new Frequency("8", Frequency.TimeUnit.hours)); Retry retry = new Retry(); retry.setAttempts(8); @@ -180,7 +180,7 @@ public class MirrorSummaryTest extends BaseUITestClass{ Map expectedParams = new EnumMap<>(baseMap); expectedParams.put(Summary.ACL_OWNER, "somebody"); expectedParams.put(Summary.ACL_GROUP, "somegroup"); - expectedParams.put(Summary.ACL_PERMISSIONS, "0x000"); + expectedParams.put(Summary.ACL_PERMISSIONS, "0000"); expectedParams.put(Summary.MAX_MAPS, "9"); expectedParams.put(Summary.MAX_BANDWIDTH, "50"); expectedParams.put(Summary.FREQUENCY, "8 hours"); http://git-wip-us.apache.org/repos/asf/falcon/blob/eeb7ff08/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ProcessSetupTest.java ---------------------------------------------------------------------- diff --git a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ProcessSetupTest.java b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ProcessSetupTest.java index eae5137..d78bc8f 100644 --- a/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ProcessSetupTest.java +++ b/falcon-regression/merlin/src/test/java/org/apache/falcon/regression/searchUI/ProcessSetupTest.java @@ -785,6 +785,9 @@ public class ProcessSetupTest extends BaseUITestClass { Assert.assertEquals(processWizardPage.getInputEndText(0), process.getInputs().getInputs().get(0).getEnd(), "Unexpected Input End on the Wizard window"); + //assert that optional checkbox is not checked + Assert.assertFalse(processWizardPage.isOptionalSelected(), "Optional checkbox shouldn't be selected."); + // Get process from XML Preview ProcessMerlin processFromXML = processWizardPage.getEntityFromXMLPreview(); @@ -792,8 +795,9 @@ public class ProcessSetupTest extends BaseUITestClass { LOGGER.info(String.format("Comparing source process: %n%s%n and preview: %n%s%n.", process, processFromXML)); process.assertInputValues(processFromXML); - // Change Input Name and Set Output in the XML + // Change Input Name, make it optional, set Output in the XML processFromXML.getInputs().getInputs().get(0).setName("newInputData"); + processFromXML.getInputs().getInputs().get(0).setOptional(true); processFromXML.setOutputs(process.getOutputs()); // Now click EditXML and set the updated XML here @@ -812,6 +816,16 @@ public class ProcessSetupTest extends BaseUITestClass { Assert.assertEquals(processWizardPage.getOutputInstanceText(0), process.getOutputs().getOutputs().get(0).getInstance(), "Unexpected Output Instance on the Wizard window"); + + //assert that optional checkbox is selected + Assert.assertTrue(processWizardPage.isOptionalSelected(), "Optional checkbox should be selected."); + + //make input compulsory again + processFromXML.getInputs().getInputs().get(0).setOptional(false); + processWizardPage.setXmlPreview(processFromXML.toString()); + + //assert that optional checkbox isn't selected + Assert.assertFalse(processWizardPage.isOptionalSelected(), "Optional checkbox shouldn't be selected."); } /** @@ -898,10 +912,11 @@ public class ProcessSetupTest extends BaseUITestClass { /** * Create process. Using API check that process was created. - * @throws Exception + * Additionally check that process input was set optional. */ @Test public void testSummaryStepDefaultScenario() throws Exception{ + process.getInputs().getInputs().get(0).setOptional(true); bundles[0].submitClusters(cluster); bundles[0].submitFeeds(prism); @@ -930,6 +945,12 @@ public class ProcessSetupTest extends BaseUITestClass { // Assert the response using API to validate if the feed creation went successfully ServiceResponse response = prism.getProcessHelper().getEntityDefinition(process.toString()); AssertUtil.assertSucceeded(response); + + //particular check for optional param + ProcessMerlin submittedProcess = new ProcessMerlin(response.getMessage()); + LOGGER.info( + String.format("Comparing source process: %n%s%n and submitted one: %n%s%n.", process, submittedProcess)); + process.assertInputValues(submittedProcess); } /**