You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/12/12 22:36:16 UTC

[13/46] geode git commit: GEODE-2112: Fix UITests failing due to insufficient cleanup

http://git-wip-us.apache.org/repos/asf/geode/blob/190f3a21/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBase.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBase.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBase.java
new file mode 100644
index 0000000..25bdef0
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBase.java
@@ -0,0 +1,884 @@
+/*
+ * 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.geode.tools.pulse.tests.ui;
+
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_CLIENTS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_FUNCTIONS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_GCPAUSES_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_QUERIESPERSEC_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_READPERSEC_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_SUBSCRIPTION_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_UNIQUECQS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_VIEW_GRID_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_VIEW_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_VIEW_LOCATORS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_VIEW_MEMBERS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_VIEW_REGIONS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.CLUSTER_WRITEPERSEC_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_COLOCATED_REGION;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_COLOCATED_REGION_NAME1;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_COLOCATED_REGION_NAME2;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_COLOCATED_REGION_NAME3;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGION1_CHECKBOX;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGION2_CHECKBOX;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGION3_CHECKBOX;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGIONName1;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGIONName2;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_BROWSER_REGIONName3;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_DROPDOWN_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_EMPTYNODES;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_ENTRYCOUNT;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_READPERSEC;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_USEDMEMORY;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.DATA_VIEW_WRITEPERSEC;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_CPUUSAGE_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_JVMPAUSES_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_LOADAVG_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_OFFHEAPFREESIZE_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_OFFHEAPUSEDSIZE_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_READPERSEC_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_REGION_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_SOCKETS_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_THREAD_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.MEMBER_VIEW_WRITEPERSEC_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.QUERY_STATISTICS_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.REDUNDANCY_GRID_ID;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.REGION_NAME_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.REGION_PATH_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.REGION_PERSISTENCE_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.REGION_TYPE_LABEL;
+import static org.apache.geode.tools.pulse.tests.ui.PulseTestConstants.SERVER_GROUP_GRID_ID;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.geode.tools.pulse.internal.data.PulseConstants;
+import org.apache.geode.tools.pulse.tests.JMXProperties;
+import org.apache.geode.tools.pulse.tests.PulseTestLocators;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.List;
+
+/**
+ * If you try to run the Pulse UI Tests through your IDE without forking enabled, you will see
+ * jmxrmi exceptions. This is due to the implementation of org.apache.geode.tools.pulse.tests.Server
+ */
+public abstract class PulseBase {
+  public abstract WebDriver getWebDriver();
+
+  public abstract String getPulseURL();
+
+  @Before
+  public void setup() throws Exception {
+    // Make sure we go to the home page first
+    searchByXPathAndClick(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
+  }
+
+  protected void searchByLinkAndClick(String linkText) {
+    WebElement element = By.linkText(linkText).findElement(getWebDriver());
+    assertNotNull(element);
+    element.click();
+  }
+
+  protected void searchByIdAndClick(String id) {
+    WebElement element = getWebDriver().findElement(By.id(id));
+    assertNotNull(element);
+    element.click();
+  }
+
+  protected void searchByXPathAndClick(String xpath) {
+    WebElement element = getWebDriver().findElement(By.xpath(xpath));
+    assertNotNull(element);
+    element.click();
+  }
+
+  @Test
+  public void testClusterLocatorCount() throws IOException {
+    String clusterLocators = getWebDriver().findElement(By.id(CLUSTER_VIEW_LOCATORS_ID)).getText();
+
+    String totallocators = JMXProperties.getInstance().getProperty("server.S1.locatorCount");
+    assertEquals(totallocators, clusterLocators);
+  }
+
+  @Test
+  public void testClusterRegionCount() {
+    String clusterRegions = getWebDriver().findElement(By.id(CLUSTER_VIEW_REGIONS_ID)).getText();
+    String totalregions = JMXProperties.getInstance().getProperty("server.S1.totalRegionCount");
+    assertEquals(totalregions, clusterRegions);
+  }
+
+  @Test
+  public void testClusterMemberCount() {
+    String clusterMembers = getWebDriver().findElement(By.id(CLUSTER_VIEW_MEMBERS_ID)).getText();
+    String totalMembers = JMXProperties.getInstance().getProperty("server.S1.memberCount");
+    assertEquals(clusterMembers, totalMembers);
+  }
+
+  @Test
+  public void testClusterNumClient() {
+    String clusterClients = getWebDriver().findElement(By.id(CLUSTER_CLIENTS_ID)).getText();
+    String totalclients = JMXProperties.getInstance().getProperty("server.S1.numClients");
+    assertEquals(totalclients, clusterClients);
+  }
+
+  @Test
+  public void testClusterNumRunningFunction() {
+    String clusterFunctions = getWebDriver().findElement(By.id(CLUSTER_FUNCTIONS_ID)).getText();
+    String totalfunctions =
+        JMXProperties.getInstance().getProperty("server.S1.numRunningFunctions");
+    assertEquals(totalfunctions, clusterFunctions);
+  }
+
+  @Test
+  public void testClusterRegisteredCQCount() {
+    String clusterUniqueCQs = getWebDriver().findElement(By.id(CLUSTER_UNIQUECQS_ID)).getText();
+    String totaluniqueCQs = JMXProperties.getInstance().getProperty("server.S1.registeredCQCount");
+    assertEquals(totaluniqueCQs, clusterUniqueCQs);
+  }
+
+  @Test
+  public void testClusterNumSubscriptions() {
+    String clusterSubscriptions =
+        getWebDriver().findElement(By.id(CLUSTER_SUBSCRIPTION_ID)).getText();
+    String totalSubscriptions =
+        JMXProperties.getInstance().getProperty("server.S1.numSubscriptions");
+    assertEquals(totalSubscriptions, clusterSubscriptions);
+  }
+
+  @Test
+  public void testClusterJVMPausesWidget() {
+    String clusterJVMPauses = getWebDriver().findElement(By.id(CLUSTER_GCPAUSES_ID)).getText();
+    String totalgcpauses = JMXProperties.getInstance().getProperty("server.S1.jvmPauses");
+    assertEquals(totalgcpauses, clusterJVMPauses);
+  }
+
+  @Test
+  public void testClusterAverageWritesWidget() {
+    String clusterWritePerSec = getWebDriver().findElement(By.id(CLUSTER_WRITEPERSEC_ID)).getText();
+    String totalwritepersec = JMXProperties.getInstance().getProperty("server.S1.averageWrites");
+    assertEquals(totalwritepersec, clusterWritePerSec);
+  }
+
+  @Test
+  public void testClusterAverageReadsWidget() {
+    String clusterReadPerSec = getWebDriver().findElement(By.id(CLUSTER_READPERSEC_ID)).getText();
+    String totalreadpersec = JMXProperties.getInstance().getProperty("server.S1.averageReads");
+    assertEquals(totalreadpersec, clusterReadPerSec);
+  }
+
+  @Test
+  public void testClusterQuerRequestRateWidget() {
+    String clusterQueriesPerSec =
+        getWebDriver().findElement(By.id(CLUSTER_QUERIESPERSEC_ID)).getText();
+    String totalqueriespersec =
+        JMXProperties.getInstance().getProperty("server.S1.queryRequestRate");
+    assertEquals(totalqueriespersec, clusterQueriesPerSec);
+  }
+
+  @Test
+  public void testClusterGridViewMemberID() throws InterruptedException {
+    searchByIdAndClick("default_grid_button");
+    List<WebElement> elements =
+        getWebDriver().findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
+
+    for (int memberCount = 1; memberCount < elements.size(); memberCount++) {
+      String memberId = getWebDriver()
+          .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (memberCount + 1) + "]/td"))
+          .getText();
+      String propertMemeberId =
+          JMXProperties.getInstance().getProperty("member.M" + memberCount + ".id");
+      assertEquals(memberId, propertMemeberId);
+    }
+  }
+
+  @Test
+  public void testClusterGridViewMemberName() {
+    searchByIdAndClick("default_grid_button");
+    List<WebElement> elements =
+        getWebDriver().findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
+    for (int memberNameCount = 1; memberNameCount < elements.size(); memberNameCount++) {
+      String gridMemberName = getWebDriver()
+          .findElement(
+              By.xpath("//table[@id='memberList']/tbody/tr[" + (memberNameCount + 1) + "]/td[2]"))
+          .getText();
+      String memberName =
+          JMXProperties.getInstance().getProperty("member.M" + memberNameCount + ".member");
+      assertEquals(gridMemberName, memberName);
+    }
+  }
+
+
+  @Test
+  public void testClusterGridViewMemberHost() {
+    searchByIdAndClick("default_grid_button");
+    List<WebElement> elements =
+        getWebDriver().findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
+    for (int memberHostCount = 1; memberHostCount < elements.size(); memberHostCount++) {
+      String MemberHost = getWebDriver()
+          .findElement(
+              By.xpath("//table[@id='memberList']/tbody/tr[" + (memberHostCount + 1) + "]/td[3]"))
+          .getText();
+      String gridMemberHost =
+          JMXProperties.getInstance().getProperty("member.M" + memberHostCount + ".host");
+      assertEquals(gridMemberHost, MemberHost);
+    }
+  }
+
+  @Test
+  public void testClusterGridViewHeapUsage() {
+    searchByIdAndClick("default_grid_button");
+    for (int i = 1; i <= 3; i++) {
+      Float HeapUsage = Float.parseFloat(getWebDriver()
+          .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[5]"))
+          .getText());
+      Float gridHeapUsagestring =
+          Float.parseFloat(JMXProperties.getInstance().getProperty("member.M" + i + ".UsedMemory"));
+      assertEquals(gridHeapUsagestring, HeapUsage);
+    }
+  }
+
+  @Test
+  public void testClusterGridViewCPUUsage() throws Exception {
+    searchByIdAndClick("default_grid_button");
+    for (int i = 1; i <= 3; i++) {
+      String CPUUsage = getWebDriver()
+          .findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[6]"))
+          .getText();
+      String gridCPUUsage = JMXProperties.getInstance().getProperty("member.M" + i + ".cpuUsage");
+      gridCPUUsage = gridCPUUsage.trim();
+      assertEquals(gridCPUUsage, CPUUsage);
+    }
+  }
+
+
+  public void testRgraphWidget() throws InterruptedException {
+    searchByIdAndClick("default_rgraph_button");
+    searchByIdAndClick("h1");
+    searchByIdAndClick("M1");
+  }
+
+  @Test
+  @Ignore("ElementNotVisible with phantomJS")
+  public void testMemberTotalRegionCount() throws InterruptedException {
+    testRgraphWidget();
+    String RegionCount = getWebDriver().findElement(By.id(MEMBER_VIEW_REGION_ID)).getText();
+    String memberRegionCount =
+        JMXProperties.getInstance().getProperty("member.M1.totalRegionCount");
+    assertEquals(memberRegionCount, RegionCount);
+  }
+
+  @Test
+  public void testMemberNumThread() throws InterruptedException {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    String ThreadCount = getWebDriver().findElement(By.id(MEMBER_VIEW_THREAD_ID)).getText();
+    String memberThreadCount = JMXProperties.getInstance().getProperty("member.M1.numThreads");
+    assertEquals(memberThreadCount, ThreadCount);
+  }
+
+  @Test
+  public void testMemberTotalFileDescriptorOpen() throws InterruptedException {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    String SocketCount = getWebDriver().findElement(By.id(MEMBER_VIEW_SOCKETS_ID)).getText();
+    String memberSocketCount =
+        JMXProperties.getInstance().getProperty("member.M1.totalFileDescriptorOpen");
+    assertEquals(memberSocketCount, SocketCount);
+  }
+
+  @Test
+  public void testMemberLoadAverage() throws InterruptedException {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    String LoadAvg = getWebDriver().findElement(By.id(MEMBER_VIEW_LOADAVG_ID)).getText();
+    String memberLoadAvg = JMXProperties.getInstance().getProperty("member.M1.loadAverage");
+    assertEquals(new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN)
+        .format(Double.valueOf(memberLoadAvg)), LoadAvg);
+  }
+
+  @Ignore("WIP") // May be useful in near future
+  @Test
+  public void testOffHeapFreeSize() {
+
+    String OffHeapFreeSizeString =
+        getWebDriver().findElement(By.id(MEMBER_VIEW_OFFHEAPFREESIZE_ID)).getText();
+    String OffHeapFreeSizetemp = OffHeapFreeSizeString.replaceAll("[a-zA-Z]", "");
+    float OffHeapFreeSize = Float.parseFloat(OffHeapFreeSizetemp);
+    float memberOffHeapFreeSize =
+        Float.parseFloat(JMXProperties.getInstance().getProperty("member.M1.OffHeapFreeSize"));
+    if (memberOffHeapFreeSize < 1048576) {
+      memberOffHeapFreeSize = memberOffHeapFreeSize / 1024;
+
+    } else if (memberOffHeapFreeSize < 1073741824) {
+      memberOffHeapFreeSize = memberOffHeapFreeSize / 1024 / 1024;
+    } else {
+      memberOffHeapFreeSize = memberOffHeapFreeSize / 1024 / 1024 / 1024;
+    }
+    memberOffHeapFreeSize =
+        Float.parseFloat(new DecimalFormat("##.##").format(memberOffHeapFreeSize));
+    assertEquals(memberOffHeapFreeSize, OffHeapFreeSize);
+
+  }
+
+  @Ignore("WIP") // May be useful in near future
+  @Test
+  public void testOffHeapUsedSize() throws InterruptedException {
+
+    String OffHeapUsedSizeString =
+        getWebDriver().findElement(By.id(MEMBER_VIEW_OFFHEAPUSEDSIZE_ID)).getText();
+    String OffHeapUsedSizetemp = OffHeapUsedSizeString.replaceAll("[a-zA-Z]", "");
+    float OffHeapUsedSize = Float.parseFloat(OffHeapUsedSizetemp);
+    float memberOffHeapUsedSize =
+        Float.parseFloat(JMXProperties.getInstance().getProperty("member.M1.OffHeapUsedSize"));
+    if (memberOffHeapUsedSize < 1048576) {
+      memberOffHeapUsedSize = memberOffHeapUsedSize / 1024;
+
+    } else if (memberOffHeapUsedSize < 1073741824) {
+      memberOffHeapUsedSize = memberOffHeapUsedSize / 1024 / 1024;
+    } else {
+      memberOffHeapUsedSize = memberOffHeapUsedSize / 1024 / 1024 / 1024;
+    }
+    memberOffHeapUsedSize =
+        Float.parseFloat(new DecimalFormat("##.##").format(memberOffHeapUsedSize));
+    assertEquals(memberOffHeapUsedSize, OffHeapUsedSize);
+  }
+
+  @Test
+  public void testMemberJVMPauses() throws Exception {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    String JVMPauses = getWebDriver().findElement(By.id(MEMBER_VIEW_JVMPAUSES_ID)).getText();
+    String memberGcPausesAvg = JMXProperties.getInstance().getProperty("member.M1.JVMPauses");
+    assertEquals(memberGcPausesAvg, JVMPauses);
+  }
+
+  @Test
+  public void testMemberCPUUsage() {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    String CPUUsagevalue = getWebDriver().findElement(By.id(MEMBER_VIEW_CPUUSAGE_ID)).getText();
+    String memberCPUUsage = JMXProperties.getInstance().getProperty("member.M1.cpuUsage");
+    assertEquals(memberCPUUsage, CPUUsagevalue);
+  }
+
+  @Test // difference between UI and properties file
+  public void testMemberAverageReads() {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    float ReadPerSec =
+        Float.parseFloat(getWebDriver().findElement(By.id(MEMBER_VIEW_READPERSEC_ID)).getText());
+    float memberReadPerSec =
+        Float.parseFloat(JMXProperties.getInstance().getProperty("member.M1.averageReads"));
+    memberReadPerSec = Float.parseFloat(new DecimalFormat("##.##").format(memberReadPerSec));
+    assertEquals(memberReadPerSec, ReadPerSec, 0.001);
+  }
+
+  @Test
+  @Ignore("ElementNotVisible with phantomJS")
+  public void testMemberAverageWrites() throws InterruptedException {
+    testRgraphWidget();
+    String WritePerSec = getWebDriver().findElement(By.id(MEMBER_VIEW_WRITEPERSEC_ID)).getText();
+    String memberWritePerSec = JMXProperties.getInstance().getProperty("member.M1.averageWrites");
+    assertEquals(memberWritePerSec, WritePerSec);
+  }
+
+
+  @Test
+  @Ignore("ElementNotVisible with phantomJS")
+  public void testMemberGridViewData() throws InterruptedException {
+    testRgraphWidget();
+    searchByXPathAndClick(PulseTestLocators.MemberDetailsView.gridButtonXpath);
+    // get the number of rows on the grid
+    List<WebElement> noOfRows =
+        getWebDriver().findElements(By.xpath("//table[@id='memberRegionsList']/tbody/tr"));
+    String MemberRegionName = getWebDriver()
+        .findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[1]")).getText();
+    String memberRegionName = JMXProperties.getInstance().getProperty("region.R1.name");
+    assertEquals(memberRegionName, MemberRegionName);
+
+    String MemberRegionType = getWebDriver()
+        .findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[2]")).getText();
+    String memberRegionType = JMXProperties.getInstance().getProperty("region.R1.regionType");
+    assertEquals(memberRegionType, MemberRegionType);
+
+    String MemberRegionEntryCount = getWebDriver()
+        .findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[3]")).getText();
+    String memberRegionEntryCount =
+        JMXProperties.getInstance().getProperty("regionOnMember./R1.M1.entryCount");
+    assertEquals(memberRegionEntryCount, MemberRegionEntryCount);
+  }
+
+  @Test
+  public void testDropDownList() throws InterruptedException {
+    searchByIdAndClick("default_grid_button");
+    searchByIdAndClick("M1&M1");
+    searchByIdAndClick("memberName");
+    searchByLinkAndClick("M3");
+    searchByIdAndClick("memberName");
+    searchByLinkAndClick("M2");
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewRegionName() throws InterruptedException {
+    searchByLinkAndClick(DATA_VIEW_LABEL);
+    Thread.sleep(7000);
+    searchByIdAndClick("default_grid_button");
+    String regionName = getWebDriver().findElement(By.id(REGION_NAME_LABEL)).getText();
+    String dataviewregionname = JMXProperties.getInstance().getProperty("region.R1.name");
+    assertEquals(dataviewregionname, regionName);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewRegionPath() {
+    String regionPath = getWebDriver().findElement(By.id(REGION_PATH_LABEL)).getText();
+    String dataviewregionpath = JMXProperties.getInstance().getProperty("region.R1.fullPath");
+    assertEquals(dataviewregionpath, regionPath);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewRegionType() {
+    String regionType = getWebDriver().findElement(By.id(REGION_TYPE_LABEL)).getText();
+    String dataviewregiontype = JMXProperties.getInstance().getProperty("region.R1.regionType");
+    assertEquals(dataviewregiontype, regionType);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewEmptyNodes() {
+    String regionEmptyNodes = getWebDriver().findElement(By.id(DATA_VIEW_EMPTYNODES)).getText();
+    String dataviewEmptyNodes = JMXProperties.getInstance().getProperty("region.R1.emptyNodes");
+    assertEquals(dataviewEmptyNodes, regionEmptyNodes);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewSystemRegionEntryCount() {
+    String regionEntryCount = getWebDriver().findElement(By.id(DATA_VIEW_ENTRYCOUNT)).getText();
+    String dataviewEntryCount =
+        JMXProperties.getInstance().getProperty("region.R1.systemRegionEntryCount");
+    assertEquals(dataviewEntryCount, regionEntryCount);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewPersistentEnabled() {
+    String regionPersistence =
+        getWebDriver().findElement(By.id(REGION_PERSISTENCE_LABEL)).getText();
+    String dataviewregionpersistence =
+        JMXProperties.getInstance().getProperty("region.R1.persistentEnabled");
+    assertEquals(dataviewregionpersistence, regionPersistence);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskWritesRate() {
+    String regionWrites = getWebDriver().findElement(By.id(DATA_VIEW_WRITEPERSEC)).getText();
+    String dataviewRegionWrites =
+        JMXProperties.getInstance().getProperty("region.R1.diskWritesRate");
+    assertEquals(dataviewRegionWrites, regionWrites);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskReadsRate() {
+    String regionReads = getWebDriver().findElement(By.id(DATA_VIEW_READPERSEC)).getText();
+    String dataviewRegionReads = JMXProperties.getInstance().getProperty("region.R1.diskReadsRate");
+    assertEquals(dataviewRegionReads, regionReads);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskUsage() {
+    String regionMemoryUsed = getWebDriver().findElement(By.id(DATA_VIEW_USEDMEMORY)).getText();
+    String dataviewMemoryUsed = JMXProperties.getInstance().getProperty("region.R1.diskUsage");
+    assertEquals(dataviewMemoryUsed, regionMemoryUsed);
+    searchByLinkAndClick(QUERY_STATISTICS_LABEL);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewGridValue() {
+    String DataViewRegionName =
+        getWebDriver().findElement(By.xpath("//*[id('6')/x:td[1]]")).getText();
+    String dataViewRegionName = JMXProperties.getInstance().getProperty("region.R1.name");
+    assertEquals(dataViewRegionName, DataViewRegionName);
+
+    String DataViewRegionType =
+        getWebDriver().findElement(By.xpath("//*[id('6')/x:td[2]")).getText();
+    String dataViewRegionType = JMXProperties.getInstance().getProperty("region.R2.regionType");
+    assertEquals(dataViewRegionType, DataViewRegionType);
+
+    String DataViewEntryCount =
+        getWebDriver().findElement(By.xpath("//*[id('6')/x:td[3]")).getText();
+    String dataViewEntryCount =
+        JMXProperties.getInstance().getProperty("region.R2.systemRegionEntryCount");
+    assertEquals(dataViewEntryCount, DataViewEntryCount);
+
+    String DataViewEntrySize =
+        getWebDriver().findElement(By.xpath("//*[id('6')/x:td[4]")).getText();
+    String dataViewEntrySize = JMXProperties.getInstance().getProperty("region.R2.entrySize");
+    assertEquals(dataViewEntrySize, DataViewEntrySize);
+
+  }
+
+
+  public void loadDataBrowserpage() {
+    searchByLinkAndClick(DATA_BROWSER_LABEL);
+    // Thread.sleep(7000);
+  }
+
+  @Test
+  public void testDataBrowserRegionName() throws InterruptedException {
+    loadDataBrowserpage();
+    String DataBrowserRegionName1 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_REGIONName1)).getText();
+    String databrowserRegionNametemp1 = JMXProperties.getInstance().getProperty("region.R1.name");
+    String databrowserRegionName1 = databrowserRegionNametemp1.replaceAll("[\\/]", "");
+    assertEquals(databrowserRegionName1, DataBrowserRegionName1);
+
+    String DataBrowserRegionName2 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_REGIONName2)).getText();
+    String databrowserRegionNametemp2 = JMXProperties.getInstance().getProperty("region.R2.name");
+    String databrowserRegionName2 = databrowserRegionNametemp2.replaceAll("[\\/]", "");
+    assertEquals(databrowserRegionName2, DataBrowserRegionName2);
+
+    String DataBrowserRegionName3 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_REGIONName3)).getText();
+    String databrowserRegionNametemp3 = JMXProperties.getInstance().getProperty("region.R3.name");
+    String databrowserRegionName3 = databrowserRegionNametemp3.replaceAll("[\\/]", "");
+    assertEquals(databrowserRegionName3, DataBrowserRegionName3);
+
+  }
+
+  @Test
+  public void testDataBrowserRegionMembersVerificaition() throws InterruptedException {
+    loadDataBrowserpage();
+    searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX);
+    String DataBrowserMember1Name1 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member0']")).getText();
+    String DataBrowserMember1Name2 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member1']")).getText();
+    String DataBrowserMember1Name3 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member2']")).getText();
+    String databrowserMember1Names = JMXProperties.getInstance().getProperty("region.R1.members");
+
+    String databrowserMember1Names1 = databrowserMember1Names.substring(0, 2);
+    assertEquals(databrowserMember1Names1, DataBrowserMember1Name1);
+
+    String databrowserMember1Names2 = databrowserMember1Names.substring(3, 5);
+    assertEquals(databrowserMember1Names2, DataBrowserMember1Name2);
+
+    String databrowserMember1Names3 = databrowserMember1Names.substring(6, 8);
+    assertEquals(databrowserMember1Names3, DataBrowserMember1Name3);
+    searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX);
+
+    searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX);
+    String DataBrowserMember2Name1 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member0']")).getText();
+    String DataBrowserMember2Name2 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member1']")).getText();
+    String databrowserMember2Names = JMXProperties.getInstance().getProperty("region.R2.members");
+
+    String databrowserMember2Names1 = databrowserMember2Names.substring(0, 2);
+    assertEquals(databrowserMember2Names1, DataBrowserMember2Name1);
+
+    String databrowserMember2Names2 = databrowserMember2Names.substring(3, 5);
+    assertEquals(databrowserMember2Names2, DataBrowserMember2Name2);
+    searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX);
+
+    searchByIdAndClick(DATA_BROWSER_REGION3_CHECKBOX);
+    String DataBrowserMember3Name1 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member0']")).getText();
+    String DataBrowserMember3Name2 =
+        getWebDriver().findElement(By.xpath("//label[@for='Member1']")).getText();
+    String databrowserMember3Names = JMXProperties.getInstance().getProperty("region.R3.members");
+
+    String databrowserMember3Names1 = databrowserMember3Names.substring(0, 2);
+    assertEquals(databrowserMember3Names1, DataBrowserMember3Name1);
+
+    String databrowserMember3Names2 = databrowserMember3Names.substring(3, 5);
+    assertEquals(databrowserMember3Names2, DataBrowserMember3Name2);
+    searchByIdAndClick(DATA_BROWSER_REGION3_CHECKBOX);
+  }
+
+  @Test
+  public void testDataBrowserColocatedRegions() throws InterruptedException {
+    loadDataBrowserpage();
+    String databrowserMemberNames1 = JMXProperties.getInstance().getProperty("region.R1.members");
+    String databrowserMemberNames2 = JMXProperties.getInstance().getProperty("region.R2.members");
+    String databrowserMemberNames3 = JMXProperties.getInstance().getProperty("region.R3.members");
+
+    if ((databrowserMemberNames1.matches(databrowserMemberNames2 + "(.*)"))) {
+      if ((databrowserMemberNames1.matches(databrowserMemberNames3 + "(.*)"))) {
+        if ((databrowserMemberNames2.matches(databrowserMemberNames3 + "(.*)"))) {
+          System.out.println("R1, R2 and R3 are colocated regions");
+        }
+      }
+    }
+    searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX);
+    searchByLinkAndClick(DATA_BROWSER_COLOCATED_REGION);
+    String DataBrowserColocatedRegion1 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME1)).getText();
+    String DataBrowserColocatedRegion2 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME2)).getText();
+    String DataBrowserColocatedRegion3 =
+        getWebDriver().findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME3)).getText();
+
+    String databrowserColocatedRegiontemp1 =
+        JMXProperties.getInstance().getProperty("region.R1.name");
+    String databrowserColocatedRegion1 = databrowserColocatedRegiontemp1.replaceAll("[\\/]", "");
+
+    String databrowserColocatedRegiontemp2 =
+        JMXProperties.getInstance().getProperty("region.R2.name");
+    String databrowserColocatedRegion2 = databrowserColocatedRegiontemp2.replaceAll("[\\/]", "");
+
+    String databrowserColocatedRegiontemp3 =
+        JMXProperties.getInstance().getProperty("region.R3.name");
+    String databrowserColocatedRegion3 = databrowserColocatedRegiontemp3.replaceAll("[\\/]", "");
+
+    assertEquals(databrowserColocatedRegion1, DataBrowserColocatedRegion1);
+    assertEquals(databrowserColocatedRegion2, DataBrowserColocatedRegion2);
+    assertEquals(databrowserColocatedRegion3, DataBrowserColocatedRegion3);
+
+  }
+
+  @Ignore("WIP") // clusterDetails element not found on Data Browser page. No assertions in test
+  @Test
+  public void testDataBrowserQueryValidation() throws IOException, InterruptedException {
+    loadDataBrowserpage();
+    WebElement textArea = getWebDriver().findElement(By.id("dataBrowserQueryText"));
+    textArea.sendKeys("query1");
+    WebElement executeButton = getWebDriver().findElement(By.id("btnExecuteQuery"));
+    executeButton.click();
+    String QueryResultHeader1 = getWebDriver()
+        .findElement(By.xpath("//div[@id='clusterDetails']/div/div/span[@class='n-title']"))
+        .getText();
+    double count = 0, countBuffer = 0, countLine = 0;
+    String lineNumber = "";
+    String filePath =
+        "E:\\springsource\\springsourceWS\\Pulse-Cedar\\src\\main\\resources\\testQueryResultSmall.txt";
+    BufferedReader br;
+    String line = "";
+    br = new BufferedReader(new FileReader(filePath));
+    while ((line = br.readLine()) != null) {
+      countLine++;
+      String[] words = line.split(" ");
+
+      for (String word : words) {
+        if (word.equals(QueryResultHeader1)) {
+          count++;
+          countBuffer++;
+        }
+      }
+    }
+  }
+
+  public void testTreeMapPopUpData(String S1, String gridIcon) {
+    for (int i = 1; i <= 3; i++) {
+      searchByLinkAndClick(CLUSTER_VIEW_LABEL);
+      if (gridIcon.equals(SERVER_GROUP_GRID_ID)) {
+        WebElement ServerGroupRadio =
+            getWebDriver().findElement(By.xpath("//label[@for='radio-servergroups']"));
+        ServerGroupRadio.click();
+      }
+      if (gridIcon.equals(REDUNDANCY_GRID_ID)) {
+        WebElement ServerGroupRadio =
+            getWebDriver().findElement(By.xpath("//label[@for='radio-redundancyzones']"));
+        ServerGroupRadio.click();
+      }
+      searchByIdAndClick(gridIcon);
+      WebElement TreeMapMember =
+          getWebDriver().findElement(By.xpath("//div[@id='" + S1 + "M" + (i) + "']/div"));
+      Actions builder = new Actions(getWebDriver());
+      builder.clickAndHold(TreeMapMember).perform();
+      int j = 1;
+      String CPUUsageM1temp = getWebDriver()
+          .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div/div[2]/div")).getText();
+      String CPUUsageM1 = CPUUsageM1temp.replaceAll("[\\%]", "");
+      String cpuUsageM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".cpuUsage");
+      assertEquals(cpuUsageM1, CPUUsageM1);
+
+      String MemoryUsageM1temp = getWebDriver()
+          .findElement(
+              By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 1) + "]/div[2]/div"))
+          .getText();
+      String MemoryUsageM1 = MemoryUsageM1temp.replaceAll("MB", "");
+      String memoryUsageM1 =
+          JMXProperties.getInstance().getProperty("member.M" + (i) + ".UsedMemory");
+      assertEquals(memoryUsageM1, MemoryUsageM1);
+
+      String LoadAvgM1 = getWebDriver()
+          .findElement(
+              By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 2) + "]/div[2]/div"))
+          .getText();
+      String loadAvgM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".loadAverage");
+      assertEquals(new DecimalFormat(PulseConstants.DECIMAL_FORMAT_PATTERN)
+          .format(Double.valueOf(loadAvgM1)), LoadAvgM1);
+
+      String ThreadsM1 = getWebDriver()
+          .findElement(
+              By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 3) + "]/div[2]/div"))
+          .getText();
+      String threadsM1 = JMXProperties.getInstance().getProperty("member.M" + (i) + ".numThreads");
+      assertEquals(threadsM1, ThreadsM1);
+
+      String SocketsM1 = getWebDriver()
+          .findElement(
+              By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[" + (j + 4) + "]/div[2]/div"))
+          .getText();
+      String socketsM1 =
+          JMXProperties.getInstance().getProperty("member.M" + (i) + ".totalFileDescriptorOpen");
+      assertEquals(socketsM1, SocketsM1);
+      builder.moveToElement(TreeMapMember).release().perform();
+    }
+  }
+
+  @Test
+  public void testTopologyPopUpData() {
+    testTreeMapPopUpData("", CLUSTER_VIEW_GRID_ID);
+  }
+
+  @Test
+  public void testServerGroupTreeMapPopUpData() {
+    testTreeMapPopUpData("SG1(!)", SERVER_GROUP_GRID_ID);
+  }
+
+  @Test
+  public void testDataViewTreeMapPopUpData() {
+    searchByLinkAndClick(CLUSTER_VIEW_LABEL);
+    searchByLinkAndClick(DATA_DROPDOWN_ID);
+    WebElement TreeMapMember = getWebDriver().findElement(By.id("GraphTreeMapClusterData-canvas"));
+    Actions builder = new Actions(getWebDriver());
+    builder.clickAndHold(TreeMapMember).perform();
+    String RegionType = getWebDriver()
+        .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div/div[2]/div")).getText();
+    String regionType = JMXProperties.getInstance().getProperty("region.R2.regionType");
+    assertEquals(regionType, RegionType);
+
+    String EntryCount = getWebDriver()
+        .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[2]/div[2]/div")).getText();
+    String entryCount = JMXProperties.getInstance().getProperty("region.R2.systemRegionEntryCount");
+    assertEquals(entryCount, EntryCount);
+
+    String EntrySizetemp = getWebDriver()
+        .findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[3]/div[2]/div")).getText();
+    float EntrySize = Float.parseFloat(EntrySizetemp);
+    float entrySize =
+        Float.parseFloat(JMXProperties.getInstance().getProperty("region.R2.entrySize"));
+    entrySize = entrySize / 1024 / 1024;
+    entrySize = Float.parseFloat(new DecimalFormat("##.####").format(entrySize));
+    assertEquals(entrySize, EntrySize, 0.001);
+    builder.moveToElement(TreeMapMember).release().perform();
+  }
+
+  @Test
+  public void testRegionViewTreeMapPopUpData() {
+    searchByLinkAndClick(CLUSTER_VIEW_LABEL);
+    searchByLinkAndClick(DATA_DROPDOWN_ID);
+    WebElement TreeMapMember = getWebDriver().findElement(By.id("GraphTreeMapClusterData-canvas"));
+    TreeMapMember.click();
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testNumberOfRegions() throws InterruptedException {
+
+    getWebDriver().findElement(By.xpath("//a[text()='Data Browser']")).click();
+
+    Thread.sleep(1000);
+    List<WebElement> regionList = getWebDriver().findElements(By.xpath("//ul[@id='treeDemo']/li"));
+    String regions = JMXProperties.getInstance().getProperty("regions");
+    String[] regionName = regions.split(" ");
+    for (String string : regionName) {
+    }
+    // JMXProperties.getInstance().getProperty("region.R1.regionType");
+    int i = 1;
+    for (WebElement webElement : regionList) {
+      // webElement.getAttribute(arg0)
+      i++;
+    }
+
+    getWebDriver().findElement(By.id("treeDemo_1_check")).click();
+
+    List<WebElement> memeberList =
+        getWebDriver().findElements(By.xpath("//ul[@id='membersList']/li"));
+    int j = 0;
+    for (WebElement webElement : memeberList) {
+      j++;
+    }
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataBrowser() {
+
+    getWebDriver().findElement(By.linkText("Data Browser")).click();
+    // WebElement dataBrowserLabel = getWebDriver().findElement(By.xpath(""));
+    WebDriverWait wait = new WebDriverWait(getWebDriver(), 20);
+    wait.until(ExpectedConditions
+        .visibilityOf(getWebDriver().findElement(By.xpath("//label[text()='Data Browser']"))));
+
+    // Verify all elements must be displayed on data browser screen
+    assertTrue(getWebDriver().findElement(By.xpath("//a[text()='Data Regions']")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.id("linkColocatedRegions")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.linkText("All Regions")).isDisplayed());
+
+    assertTrue(getWebDriver().findElement(By.xpath("//a[text()='Region Members']")).isDisplayed());
+
+    assertTrue(getWebDriver().findElement(By.xpath("//a[text()='Queries']")).isDisplayed());
+    assertTrue(
+        getWebDriver().findElement(By.xpath("//label[text()='Query Editor']")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.xpath("//label[text()='Result']")).isDisplayed());
+    assertTrue(
+        getWebDriver().findElement(By.xpath("//input[@value='Export Result']")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.id("btnExecuteQuery")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.xpath("//input[@value='Clear']")).isDisplayed());
+    assertTrue(getWebDriver().findElement(By.id("dataBrowserQueryText")).isDisplayed());
+
+    assertTrue(getWebDriver().findElement(By.id("historyIcon")).isDisplayed());
+
+    // Actual query execution
+
+    getWebDriver().findElement(By.id("dataBrowserQueryText")).sendKeys("Query1");
+
+    // Assert data regions are displayed
+    assertTrue(getWebDriver().findElement(By.id("treeDemo_1")).isDisplayed());
+  }
+
+  @Test
+  public void userCannotGetToPulseDetails() {
+    getWebDriver().get(getPulseURL() + "/pulse/pulseVersion");
+
+    assertTrue(getWebDriver().getPageSource().contains("sourceRevision"));
+  }
+}

http://git-wip-us.apache.org/repos/asf/geode/blob/190f3a21/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBaseTest.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBaseTest.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBaseTest.java
deleted file mode 100644
index db6b630..0000000
--- a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseBaseTest.java
+++ /dev/null
@@ -1,730 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- *
- */
-package org.apache.geode.tools.pulse.tests.ui;
-
-import static org.junit.Assert.*;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.concurrent.TimeUnit;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.interactions.Actions;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import org.apache.geode.tools.pulse.tests.JMXProperties;
-import org.apache.geode.tools.pulse.tests.Member;
-import org.apache.geode.tools.pulse.tests.PulseTestData;
-import org.apache.geode.tools.pulse.tests.PulseTestLocators;
-import org.apache.geode.tools.pulse.tests.Region;
-
-public class PulseBaseTest {
-
-  public static int maxWaitTime = 20;
-
-  WebElement element = null;
-
-  public WebElement findElementUsingId(String id) {
-    return PulseAbstractTest.driver.findElement(By.id(id));
-  }
-
-  public WebElement findElementUsingXpath(String xpath) {
-    return PulseAbstractTest.driver.findElement(By.xpath(xpath));
-  }
-
-  public void clickElementUsingId(String id) {
-    findElementUsingId(id).click();
-  }
-
-  public void clickElementUsingXpath(String xpath) {
-    findElementUsingXpath(xpath).click();
-  }
-
-  public void enterTextUsingId(String id, String textToEnter) {
-    findElementUsingId(id).sendKeys(textToEnter);
-
-  }
-
-  public void enterTextUsingXpath(String xpath, String textToEnter) {
-    findElementUsingXpath(xpath).sendKeys(textToEnter);
-  }
-
-  public String getValueFromPropertiesFile(String key) {
-    return JMXProperties.getInstance().getProperty(key);
-  }
-
-  public void sendKeysUsingId(String Id, String textToEnter) {
-    findElementById(Id).sendKeys(textToEnter);
-  }
-
-  public void waitForElement(WebElement element) {
-    PulseAbstractTest.driver.manage().timeouts().implicitlyWait(0, TimeUnit.SECONDS);
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, 20);
-    wait.until(ExpectedConditions.visibilityOf(element));
-  }
-
-  public WebElement findElementById(String id) {
-    return PulseAbstractTest.driver.findElement(By.id(id));
-  }
-
-  public WebElement findElementByXpath(String xpath) {
-    return PulseAbstractTest.driver.findElement(By.xpath(xpath));
-  }
-
-  public String getTextUsingXpath(String xpath) {
-    return findElementByXpath(xpath).getText();
-  }
-
-  public String getTextUsingId(String id) {
-    return findElementById(id).getText();
-  }
-
-  public String getPersistanceEnabled(Region r) {
-    String persitance = null;
-
-    if (r.getPersistentEnabled()) {
-      persitance = "ON";
-    } else if (!r.getPersistentEnabled()) {
-      persitance = "OFF";
-    }
-    return persitance;
-  }
-
-  public String getPersistanceEnabled(String trueOrFalse) {
-    String persitance = null;
-
-    if (trueOrFalse.contains("true")) {
-      persitance = "ON";
-    } else if (trueOrFalse.contains("false")) {
-      persitance = "OFF";
-    }
-    return persitance;
-  }
-
-  public String HeapUsage(String valueInKB) {
-
-    return null;
-  }
-
-  // WIP - need to work on this --
-  public HashMap<String, HashMap<String, Region>> getRegionDetailsFromUI(String regionName) {
-
-    String[] regionNames = JMXProperties.getInstance().getProperty("regions").split(" ");
-    HashMap<String, HashMap<String, Region>> regionUiMap =
-        new HashMap<String, HashMap<String, Region>>();
-
-    for (String region : regionNames) {
-      HashMap<String, Region> regionMap = regionUiMap.get(region);
-    }
-
-    return regionUiMap;
-  }
-
-  public void validateServerGroupGridData() {
-    List<WebElement> serverGridRows =
-        PulseAbstractTest.driver.findElements(By.xpath("//table[@id='memberListSG']/tbody/tr"));
-    int rowsCount = serverGridRows.size();
-    String[][] gridDataFromUI = new String[rowsCount][7];
-
-    for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
-      for (int i = 0; i <= 6; i++) {
-        gridDataFromUI[x][i] = PulseAbstractTest.driver
-            .findElement(
-                By.xpath("//table[@id='memberListSG']/tbody/tr[" + j + "]/td[" + (i + 1) + "]"))
-            .getText();
-      }
-    }
-
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
-
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      String[] sgs = thisMember.getGroups();
-
-      for (String sgName : sgs) {
-        HashMap<String, Member> sgMembers = sgMap.get(sgName);
-        if (sgMembers == null) {
-          sgMembers = new HashMap<String, Member>();
-          sgMap.put(sgName, sgMembers);
-        }
-        sgMembers.put(thisMember.getMember(), thisMember);
-      }
-    }
-
-    for (int i = 0; i < gridDataFromUI.length - 1; i++) {
-      String sgName = gridDataFromUI[i][0];
-      String memName = gridDataFromUI[i][1];
-      Member m = sgMap.get(sgName).get(memName);
-
-      assertEquals(sgName, gridDataFromUI[i][0]);
-      assertEquals(memName, gridDataFromUI[i][1]);
-      assertEquals(m.getMember(), gridDataFromUI[i][2]);
-      assertEquals(m.getHost(), gridDataFromUI[i][3]);
-      String cupUsage = String.valueOf(m.getCpuUsage());
-      assertEquals(cupUsage, gridDataFromUI[i][5]);
-    }
-
-  }
-
-  public void validateRedundancyZonesGridData() {
-    List<WebElement> rzGridRows =
-        PulseAbstractTest.driver.findElements(By.xpath("//table[@id='memberListRZ']/tbody/tr"));
-    int rowsCount = rzGridRows.size();
-    String[][] gridDataFromUI = new String[rowsCount][7];
-
-    for (int j = 2, x = 0; j <= rzGridRows.size(); j++, x++) {
-      for (int i = 0; i <= 6; i++) {
-        gridDataFromUI[x][i] = PulseAbstractTest.driver
-            .findElement(
-                By.xpath("//table[@id='memberListRZ']/tbody/tr[" + j + "]/td[" + (i + 1) + "]"))
-            .getText();
-      }
-    }
-
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
-
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      // String[] rz = thisMember.getRedundancyZone();
-      String sgName = thisMember.getRedundancyZone();
-
-      // for (String sgName : rz) {
-      HashMap<String, Member> rzMembers = rzMap.get(sgName);
-
-      if (rzMembers == null) {
-        rzMembers = new HashMap<String, Member>();
-        rzMap.put(sgName, rzMembers);
-      }
-
-      rzMembers.put(thisMember.getMember(), thisMember);
-      // }
-    }
-
-    for (int i = 0; i < gridDataFromUI.length - 1; i++) {
-      String sgName = gridDataFromUI[i][0];
-      String memName = gridDataFromUI[i][1];
-      Member m = rzMap.get(sgName).get(memName);
-
-      assertEquals(sgName, gridDataFromUI[i][0]);
-      assertEquals(memName, gridDataFromUI[i][1]);
-      assertEquals(m.getMember(), gridDataFromUI[i][2]);
-      assertEquals(m.getHost(), gridDataFromUI[i][3]);
-      String cupUsage = String.valueOf(m.getCpuUsage());
-      assertEquals(cupUsage, gridDataFromUI[i][5]);
-    }
-
-  }
-
-  public void validateTopologyGridData() {
-    List<WebElement> rzGridRows =
-        PulseAbstractTest.driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
-    int rowsCount = rzGridRows.size();
-    String[][] gridDataFromUI = new String[rowsCount][8];
-
-    for (int j = 2, x = 0; j <= rzGridRows.size(); j++, x++) {
-      for (int i = 0; i <= 7; i++) {
-        gridDataFromUI[x][i] = PulseAbstractTest.driver
-            .findElement(
-                By.xpath("//table[@id='memberList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]"))
-            .getText();
-      }
-    }
-
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, Member> tpMap = new HashMap<String, Member>();
-
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      tpMap.put(thisMember.getMember(), thisMember);
-
-    }
-
-    for (int i = 0; i < gridDataFromUI.length - 1; i++) {
-
-      String memName = gridDataFromUI[i][0];
-      Member m = tpMap.get(memName);
-
-      assertEquals(m.getMember(), gridDataFromUI[i][0]);
-      assertEquals(m.getMember(), gridDataFromUI[i][1]);
-      assertEquals(m.getHost(), gridDataFromUI[i][2]);
-      String cupUsage = String.valueOf(m.getCpuUsage());
-      assertEquals(cupUsage, gridDataFromUI[i][5]);
-    }
-  }
-
-  public void validateDataPrespectiveGridData() {
-    List<WebElement> serverGridRows =
-        PulseAbstractTest.driver.findElements(By.xpath("//table[@id='regionsList']/tbody/tr"));
-    int rowsCount = serverGridRows.size();
-    String[][] gridDataFromUI = new String[rowsCount][7];
-
-    for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
-      for (int i = 0; i <= 6; i++) {
-        if (i < 5) {
-          gridDataFromUI[x][i] = PulseAbstractTest.driver
-              .findElement(
-                  By.xpath("//table[@id='regionsList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]"))
-              .getText();
-        } else if (i == 5) {
-          gridDataFromUI[x][i] = PulseAbstractTest.driver
-              .findElement(
-                  By.xpath("//table[@id='regionsList']/tbody/tr[" + j + "]/td[" + (i + 4) + "]"))
-              .getText();
-        }
-      }
-    }
-
-    String[] regionNames = JMXProperties.getInstance().getProperty("regions").split(" ");
-    HashMap<String, Region> dataMap = new HashMap<String, Region>();
-
-    for (String region : regionNames) {
-      Region thisRegion = new Region(region);
-      dataMap.put(thisRegion.getName(), thisRegion);
-
-    }
-
-    for (int i = 0; i < gridDataFromUI.length - 1; i++) {
-      String memName = gridDataFromUI[i][0];
-      Region r = dataMap.get(memName);
-
-      assertEquals(r.getName(), gridDataFromUI[i][0]);
-      assertEquals(r.getRegionType(), gridDataFromUI[i][1]);
-
-      assertEquals(String.valueOf(r.getSystemRegionEntryCount()), gridDataFromUI[i][2]);
-      assertEquals(r.getFullPath(), gridDataFromUI[i][4]);
-      assertEquals(getPersistanceEnabled(r), gridDataFromUI[i][5]);
-    }
-  }
-
-  public void validateRegionDetailsGridData() {
-    List<WebElement> serverGridRows =
-        PulseAbstractTest.driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr"));
-    int rowsCount = serverGridRows.size();
-    String[][] gridDataFromUI = new String[rowsCount][7];
-
-    for (int j = 2, x = 0; j <= serverGridRows.size(); j++, x++) {
-      for (int i = 0; i < 2; i++) {
-        gridDataFromUI[x][i] = PulseAbstractTest.driver
-            .findElement(
-                By.xpath("//table[@id='memberList']/tbody/tr[" + j + "]/td[" + (i + 1) + "]"))
-            .getText();
-      }
-    }
-
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, Member> tpMap = new HashMap<String, Member>();
-
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      tpMap.put(thisMember.getMember(), thisMember);
-    }
-
-    for (int i = 0; i < gridDataFromUI.length - 1; i++) {
-
-      String memName = gridDataFromUI[i][0];
-      Member m = tpMap.get(memName);
-      assertEquals(m.getMember(), gridDataFromUI[i][0]);
-    }
-
-  }
-
-  public void navigateToToplogyView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.TopologyView.radioButtonXpath);
-  }
-
-  public void navigateToServerGroupGView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
-  }
-
-  public void navigateToRedundancyZoneView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
-  }
-
-  // ------ Topology / Server Group / Redundancy Group - Tree View
-
-  public void navigateToTopologyTreeView() {
-    navigateToToplogyView();
-    clickElementUsingId(PulseTestLocators.TopologyView.treeMapButtonId);
-  }
-
-  public void navigateToServerGroupTreeView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
-  }
-
-  public void navigateToRedundancyZonesTreeView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
-  }
-
-  // ------ Topology / Server Group / Redundancy Group - Grid View
-
-  public void navigateToTopologyGridView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.TopologyView.radioButtonXpath);
-    clickElementUsingId(PulseTestLocators.TopologyView.gridButtonId);
-  }
-
-  public void navigateToServerGroupGridView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.ServerGroups.radioButtonXpath);
-    clickElementUsingId(PulseTestLocators.ServerGroups.gridButtonId);
-  }
-
-  public void navigateToRedundancyZonesGridView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.RedundancyZone.radioButtonXpath);
-    clickElementUsingId(PulseTestLocators.RedundancyZone.gridButtonId);
-  }
-
-  // ----- Data perspective / region details
-
-  public void navigateToDataPrespectiveGridView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.downarrowButtonXpath);
-    clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.dataViewButtonXpath);
-    clickElementUsingId(PulseTestLocators.DataPerspectiveView.gridButtonId);
-  }
-
-  public void navigateToRegionDetailsView() {
-    clickElementUsingXpath(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
-    clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.downarrowButtonXpath);
-    clickElementUsingXpath(PulseTestLocators.DataPerspectiveView.dataViewButtonXpath);
-    // clickElementUsingXpath(PulseTestLocators.RegionDetailsView.regionNameXpath);
-    // // WIP - region navigation defect needs to fixed
-    clickElementUsingXpath(PulseTestLocators.RegionDetailsView.treeMapCanvasXpath);
-  }
-
-  public void navigateToRegionDetailsGridView() {
-    navigateToRegionDetailsView();
-    clickElementUsingXpath(PulseTestLocators.RegionDetailsView.gridButtonXpath);
-  }
-
-  public String getPropertyValue(String propertyKey) {
-    String propertyValue = JMXProperties.getInstance().getProperty(propertyKey);
-    return propertyValue;
-  }
-
-  public void verifyElementPresentById(String id) {
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, maxWaitTime, 500);
-    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.id(id)));
-  }
-
-  public void verifyElementPresentByLinkText(String lnkText) {
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, maxWaitTime, 500);
-    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.linkText(lnkText)));
-  }
-
-  public void verifyElementPresentByXpath(String xpath) {
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, maxWaitTime, 500);
-    wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.xpath(xpath)));
-  }
-
-  public void verifyTextPresrntById(String id, String text) {
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, maxWaitTime, 500);
-    wait.until(ExpectedConditions.textToBePresentInElementLocated(By.id(id), text));
-  }
-
-  public void verifyTextPresrntByXpath(String xpath, String text) {
-    WebDriverWait wait = new WebDriverWait(PulseAbstractTest.driver, maxWaitTime, 500);
-    wait.until(ExpectedConditions.textToBePresentInElementLocated(By.xpath(xpath), text));
-  }
-
-  public void verifyElementAttributeById(String id, String attribute, String value) {
-    String actualValue = findElementById(id).getAttribute(attribute);
-    assertTrue(actualValue.equals(value) || actualValue.contains(value));
-  }
-
-
-  public void mouseReleaseById(String id) {
-    verifyElementPresentById(id);
-    Actions action = new Actions(PulseAbstractTest.driver);
-    WebElement we = PulseAbstractTest.driver.findElement(By.id(id));
-    action.moveToElement(we).release().perform();
-  }
-
-  public void mouseClickAndHoldOverElementById(String id) {
-    verifyElementPresentById(id);
-    Actions action = new Actions(PulseAbstractTest.driver);
-    WebElement we = PulseAbstractTest.driver.findElement(By.id(id));
-    action.moveToElement(we).clickAndHold().perform();
-  }
-
-  public void mouseOverElementByXpath(String xpath) {
-    Actions action = new Actions(PulseAbstractTest.driver);
-    WebElement we = PulseAbstractTest.driver.findElement(By.xpath(xpath));
-    action.moveToElement(we).build().perform();
-  }
-
-
-  public float stringToFloat(String stringValue) {
-    float floatNum = Float.parseFloat(stringValue);
-    return floatNum;
-  }
-
-  public String floatToString(float floatValue) {
-    String stringValue = Float.toString(floatValue);
-    return stringValue;
-  }
-
-
-  public String[] splitString(String stringToSplit, String splitDelimiter) {
-    String[] stringArray = stringToSplit.split(splitDelimiter);
-    return stringArray;
-  }
-
-  public void assertMemberSortingByCpuUsage() {
-    Map<Double, String> memberMap = new TreeMap<>(Collections.reverseOrder());
-    String[] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
-    for (String member : membersNames) {
-      Member thisMember = new Member(member);
-      memberMap.put(thisMember.getCpuUsage(), thisMember.getMember());
-    }
-    for (Map.Entry<Double, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberCPUUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM2;
-      } else {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM3;
-      }
-      assertTrue(
-          findElementById(entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
-    }
-  }
-
-  public void assertMemberSortingByHeapUsage() {
-    Map<Long, String> memberMap = new TreeMap<Long, String>(Collections.reverseOrder());
-    String[] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
-    for (String member : membersNames) {
-      Member thisMember = new Member(member);
-      memberMap.put(thisMember.getCurrentHeapSize(), thisMember.getMember());
-    }
-    for (Map.Entry<Long, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberHeapUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberHeapUsage = PulseTestData.Topology.heapUsagePaintStyleM1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberHeapUsage = PulseTestData.Topology.heapUsagePaintStyleM2;
-      } else {
-        refMemberHeapUsage = PulseTestData.Topology.heapUsagePaintStyleM3;
-      }
-      assertTrue(
-          findElementById(entry.getValue()).getAttribute("style").contains(refMemberHeapUsage));
-    }
-  }
-
-  public void assertMemberSortingBySGCpuUsage() {
-    Map<Double, String> memberMap = new TreeMap<>(Collections.reverseOrder());
-    String[] membersNames = splitString(JMXProperties.getInstance().getProperty("members"), " ");
-    for (String member : membersNames) {
-      Member thisMember = new Member(member);
-      memberMap.put(thisMember.getCpuUsage(), thisMember.getMember());
-    }
-    for (Map.Entry<Double, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberCPUUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM2;
-      } else {
-        refMemberCPUUsage = PulseTestData.Topology.cpuUsagePaintStyleM3;
-      }
-      assertTrue(
-          findElementById(entry.getValue()).getAttribute("style").contains(refMemberCPUUsage));
-    }
-  }
-
-
-  public void assertMemberSortingBySgHeapUsage() {
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      String[] sgs = thisMember.getGroups();
-
-      for (String sgName : sgs) {
-        HashMap<String, Member> sgMembers = sgMap.get(sgName);
-        if (sgMembers == null) {
-          sgMembers = new HashMap<String, Member>();
-          sgMap.put(sgName, sgMembers);
-        }
-        sgMembers.put(thisMember.getMember(), thisMember);
-      }
-    }
-    Map<Float, String> memberMap = new TreeMap<Float, String>(Collections.reverseOrder());
-
-    for (int sgId = 1; sgId <= 3; sgId++) {
-      String sgName = "SG1";
-      String memName = "M" + sgId;
-      Member m = sgMap.get(sgName).get(memName);
-      memberMap.put((float) m.getCurrentHeapSize(), m.getMember());
-    }
-
-    for (Map.Entry<Float, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberCPUUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M2;
-      } else {
-        refMemberCPUUsage = PulseTestData.ServerGroups.heapUsagePaintStyleSG1M3;
-      }
-      assertTrue(findElementById("SG1(!)" + entry.getValue()).getAttribute("style")
-          .contains(refMemberCPUUsage));
-    }
-  }
-
-
-
-  public void assertMemberSortingBySgCpuUsage() {
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> sgMap = new HashMap<String, HashMap<String, Member>>();
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      String[] sgs = thisMember.getGroups();
-
-      for (String sgName : sgs) {
-        HashMap<String, Member> sgMembers = sgMap.get(sgName);
-        if (sgMembers == null) {
-          sgMembers = new HashMap<String, Member>();
-          sgMap.put(sgName, sgMembers);
-        }
-        sgMembers.put(thisMember.getMember(), thisMember);
-      }
-    }
-    Map<Double, String> memberMap = new TreeMap<>(Collections.reverseOrder());
-    // SG3(!)M3
-    for (int sgId = 1; sgId <= 3; sgId++) {
-      String sgName = "SG1";
-      String memName = "M" + sgId;
-      Member m = sgMap.get(sgName).get(memName);
-      memberMap.put(m.getCpuUsage(), m.getMember());
-    }
-
-    for (Map.Entry<Double, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberCPUUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M2;
-      } else {
-        refMemberCPUUsage = PulseTestData.ServerGroups.cpuUsagePaintStyleSG1M3;
-      }
-      assertTrue(findElementById("SG1(!)" + entry.getValue()).getAttribute("style")
-          .contains(refMemberCPUUsage));
-    }
-  }
-
-  public void assertMemberSortingByRzHeapUsage() {
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      String sgName = thisMember.getRedundancyZone();
-      HashMap<String, Member> rzMembers = rzMap.get(sgName);
-
-      if (rzMembers == null) {
-        rzMembers = new HashMap<String, Member>();
-        rzMap.put(sgName, rzMembers);
-      }
-
-      rzMembers.put(thisMember.getMember(), thisMember);
-    }
-    Map<Float, String> memberMap = new TreeMap<Float, String>(Collections.reverseOrder());
-    String rzName = "RZ1 RZ2";
-    String memName = "M1";
-    Member m = rzMap.get(rzName).get(memName);
-    memberMap.put((float) m.getCurrentHeapSize(), m.getMember());
-
-    for (Map.Entry<Float, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberHeapUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberHeapUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ1RZ2M1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberHeapUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ1RZ2M2;
-      } else {
-        refMemberHeapUsage = PulseTestData.RedundancyZone.heapUsagePaintStyleRZ3M3;
-      }
-      assertTrue(findElementById("RZ1 RZ2(!)" + entry.getValue()).getAttribute("style")
-          .contains(refMemberHeapUsage));
-    }
-  }
-
-  public void assertMemeberSortingByRzCpuUsage() {
-    String[] memberNames = JMXProperties.getInstance().getProperty("members").split(" ");
-    HashMap<String, HashMap<String, Member>> rzMap = new HashMap<String, HashMap<String, Member>>();
-    for (String member : memberNames) {
-      Member thisMember = new Member(member);
-      String sgName = thisMember.getRedundancyZone();
-      HashMap<String, Member> rzMembers = rzMap.get(sgName);
-
-      if (rzMembers == null) {
-        rzMembers = new HashMap<String, Member>();
-        rzMap.put(sgName, rzMembers);
-      }
-
-      rzMembers.put(thisMember.getMember(), thisMember);
-    }
-    Map<Double, String> memberMap = new TreeMap<>(Collections.reverseOrder());
-    String rzName = "RZ1 RZ2";
-    String memName = "M1";
-    Member m = rzMap.get(rzName).get(memName);
-    memberMap.put(m.getCpuUsage(), m.getMember());
-
-    for (Map.Entry<Double, String> entry : memberMap.entrySet()) {
-      // here matching painting style to validation that the members are painted according to their
-      // cpu usage
-      String refMemberCPUUsage = null;
-      if (entry.getValue().equalsIgnoreCase("M1")) {
-        refMemberCPUUsage = PulseTestData.RedundancyZone.cpuUsagePaintStyleRZ1RZ2M1;
-      } else if (entry.getValue().equalsIgnoreCase("M2")) {
-        refMemberCPUUsage = PulseTestData.RedundancyZone.cpuUsagePaintStyleRZ1RZ2M2;
-      }
-      assertTrue(findElementById("RZ1 RZ2(!)" + entry.getValue()).getAttribute("style")
-          .contains(refMemberCPUUsage));
-    }
-  }
-
-  public List<WebElement> getRegionsFromDataBrowser() {
-    List<WebElement> regionList = PulseAbstractTest.driver
-        .findElements(By.xpath("//span[starts-with(@ID,'treeDemo_')][contains(@id,'_span')]"));
-    return regionList;
-  }
-}

http://git-wip-us.apache.org/repos/asf/geode/blob/190f3a21/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseNoAuthTest.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseNoAuthTest.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseNoAuthTest.java
index a96061a..adcb50f 100644
--- a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseNoAuthTest.java
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseNoAuthTest.java
@@ -16,17 +16,40 @@
 package org.apache.geode.tools.pulse.tests.ui;
 
 import org.apache.geode.test.junit.categories.UITest;
+import org.apache.geode.tools.pulse.tests.rules.ServerRule;
+import org.apache.geode.tools.pulse.tests.rules.WebDriverRule;
+import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.ClassRule;
 import org.junit.FixMethodOrder;
+import org.junit.Rule;
 import org.junit.experimental.categories.Category;
 import org.junit.runners.MethodSorters;
+import org.openqa.selenium.WebDriver;
 
 @Category(UITest.class)
 @FixMethodOrder(MethodSorters.JVM)
-public class PulseNoAuthTest extends PulseAbstractTest {
+public class PulseNoAuthTest extends PulseBase {
 
-  @BeforeClass
-  public static void beforeClassSetup() throws Exception {
-    setUpServer("admin", "admin", null);
+  @ClassRule
+  public static ServerRule serverRule = new ServerRule(null);
+
+  @Rule
+  public WebDriverRule webDriverRule =
+      new WebDriverRule("admin", "admin", serverRule.getPulseURL());
+
+  @Override
+  public WebDriver getWebDriver() {
+    return webDriverRule.getDriver();
+  }
+
+  @Override
+  public String getPulseURL() {
+    return serverRule.getPulseURL();
+  }
+
+  @Before
+  public void setupPulseTestUtils() {
+    PulseTestUtils.setDriverProvider(() -> webDriverRule.getDriver());
   }
 }

http://git-wip-us.apache.org/repos/asf/geode/blob/190f3a21/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseTestConstants.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseTestConstants.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseTestConstants.java
new file mode 100644
index 0000000..f0513bd
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/ui/PulseTestConstants.java
@@ -0,0 +1,71 @@
+/*
+ * 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.geode.tools.pulse.tests.ui;
+
+public class PulseTestConstants {
+  public static final String DATA_VIEW_LABEL = "Data View";
+  public static final String CLUSTER_VIEW_MEMBERS_ID = "clusterTotalMembersText";
+  public static final String CLUSTER_VIEW_LOCATORS_ID = "clusterLocatorsText";
+  public static final String CLUSTER_VIEW_REGIONS_ID = "clusterTotalRegionsText";
+  public static final String CLUSTER_CLIENTS_ID = "clusterClientsText";
+  public static final String CLUSTER_FUNCTIONS_ID = "clusterFunctions";
+  public static final String CLUSTER_UNIQUECQS_ID = "clusterUniqueCQs";
+  public static final String CLUSTER_SUBSCRIPTION_ID = "clusterSubscriptionsText";
+  public static final String CLUSTER_GCPAUSES_ID = "currentGCPauses";
+  public static final String CLUSTER_WRITEPERSEC_ID = "writePerSec";
+  public static final String CLUSTER_READPERSEC_ID = "readPerSec";
+  public static final String CLUSTER_QUERIESPERSEC_ID = "queriesPerSec";
+  public static final String MEMBER_VIEW_REGION_ID = "memberRegionsCount";
+  public static final String MEMBER_VIEW_THREAD_ID = "threads";
+  public static final String MEMBER_VIEW_SOCKETS_ID = "sockets";
+  public static final String MEMBER_VIEW_LOADAVG_ID = "loadAverage";
+  public static final String MEMBER_VIEW_JVMPAUSES_ID = "memberGcPausesAvg";
+  public static final String MEMBER_VIEW_CPUUSAGE_ID = "memberCPUUsageValue";
+  public static final String MEMBER_VIEW_READPERSEC_ID = "memberGetsPerSecValue";
+  public static final String MEMBER_VIEW_WRITEPERSEC_ID = "memberPutsPerSecValue";
+  public static final String MEMBER_VIEW_OFFHEAPFREESIZE_ID = "offHeapFreeSize";
+  public static final String MEMBER_VIEW_OFFHEAPUSEDSIZE_ID = "offHeapUsedSize";
+
+  public static final String REGION_NAME_LABEL = "regionName";
+  public static final String REGION_PATH_LABEL = "regionPath";
+  public static final String REGION_TYPE_LABEL = "regionType";
+  public static final String DATA_VIEW_WRITEPERSEC = "regionWrites";
+  public static final String DATA_VIEW_READPERSEC = "regionReads";
+  public static final String DATA_VIEW_EMPTYNODES = "regionEmptyNodes";
+  public static final String DATA_VIEW_ENTRYCOUNT = "regionEntryCount";
+  public static final String REGION_PERSISTENCE_LABEL = "regionPersistence";
+  public static final String DATA_VIEW_USEDMEMORY = "memoryUsed";
+
+  public static final String DATA_BROWSER_LABEL = "Data Browser";
+  public static final String DATA_BROWSER_REGIONName1 = "treeDemo_1_span";
+  public static final String DATA_BROWSER_REGIONName2 = "treeDemo_2_span";
+  public static final String DATA_BROWSER_REGIONName3 = "treeDemo_3_span";
+  public static final String DATA_BROWSER_REGION1_CHECKBOX = "treeDemo_1_check";
+  public static final String DATA_BROWSER_REGION2_CHECKBOX = "treeDemo_2_check";
+  public static final String DATA_BROWSER_REGION3_CHECKBOX = "treeDemo_3_check";
+  public static final String DATA_BROWSER_COLOCATED_REGION = "Colocated Regions";
+  public static final String DATA_BROWSER_COLOCATED_REGION_NAME1 = "treeDemo_1_span";
+  public static final String DATA_BROWSER_COLOCATED_REGION_NAME2 = "treeDemo_2_span";
+  public static final String DATA_BROWSER_COLOCATED_REGION_NAME3 = "treeDemo_3_span";
+
+  public static final String QUERY_STATISTICS_LABEL = "Query Statistics";
+  public static final String CLUSTER_VIEW_LABEL = "Cluster View";
+  public static final String CLUSTER_VIEW_GRID_ID = "default_treemap_button";
+  public static final String SERVER_GROUP_GRID_ID = "servergroups_treemap_button";
+  public static final String REDUNDANCY_GRID_ID = "redundancyzones_treemap_button";
+  public static final String DATA_DROPDOWN_ID = "Data";
+}