You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2016/01/21 23:54:45 UTC

[04/96] [abbrv] [partial] incubator-geode git commit: GEODE-12: rename pulse to gemfire-pulse and make build pass

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/PulseTests.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/PulseTests.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/PulseTests.java
new file mode 100644
index 0000000..5999fdc
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/PulseTests.java
@@ -0,0 +1,1044 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.text.DecimalFormat;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import junit.framework.Assert;
+
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.startup.Tomcat;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+import org.openqa.selenium.By;
+import org.openqa.selenium.JavascriptExecutor;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.interactions.Actions;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+@FixMethodOrder(MethodSorters.JVM)
+public class PulseTests {
+ // private final static String jmxPropertiesFile = "E:\\springsource\\springsourceWS\\Pulse-Cedar\\src\\test\\resources\\test.properties";
+  //private static String path = "D:\\springsource\\springsourceWS\\Pulse-Cedar\\build-artifacts\\win\\dist\\pulse-7.5.war";
+  private final static String jmxPropertiesFile = System
+      .getProperty("pulse.propfile");
+  private static String path = System.getProperty("pulse.war");
+
+  private static Tomcat tomcat = null;
+  private static Server server = null;
+  private static String pulseURL = null;
+  public static WebDriver driver;
+  private static final String userName = "admin";
+  private static final String pasword = "admin";
+
+  /* Constants for executing Data Browser queries */
+  public static final String QUERY_TYPE_ONE = "query1";
+  public static final String QUERY_TYPE_TWO = "query2";
+  public static final String QUERY_TYPE_THREE = "query3";
+  public static final String QUERY_TYPE_FOUR = "query4";
+  public static final String QUERY_TYPE_FIVE = "query5";
+  public static final String QUERY_TYPE_SIX = "query6";
+  public static final String QUERY_TYPE_SEVENE = "query7";
+
+  private static final String DATA_VIEW_LABEL = "Data View";
+  private static final String CLUSTER_VIEW_MEMBERS_ID = "clusterTotalMembersText";
+  private static final String CLUSTER_VIEW_SERVERS_ID = "clusterServersText";
+  private static final String CLUSTER_VIEW_LOCATORS_ID = "clusterLocatorsText";
+  private static final String CLUSTER_VIEW_REGIONS_ID = "clusterTotalRegionsText";
+  private static final String CLUSTER_CLIENTS_ID = "clusterClientsText";
+  private static final String CLUSTER_FUNCTIONS_ID = "clusterFunctions";
+  private static final String CLUSTER_UNIQUECQS_ID = "clusterUniqueCQs";
+  private static final String CLUSTER_SUBSCRIPTION_ID = "clusterSubscriptionsText";
+  private static final String CLUSTER_MEMORY_USAGE_ID = "currentMemoryUsage";
+  private static final String CLUSTER_THROUGHPUT_WRITES_ID = "currentThroughoutWrites";
+  private static final String CLUSTER_GCPAUSES_ID = "currentGCPauses";
+  private static final String CLUSTER_WRITEPERSEC_ID = "writePerSec";
+  private static final String CLUSTER_READPERSEC_ID = "readPerSec";
+  private static final String CLUSTER_QUERIESPERSEC_ID = "queriesPerSec";
+  private static final String CLUSTER_PROCEDURE_ID = "clusterTxnCommittedText";
+  private static final String CLUSTER_TXNCOMMITTED_ID = "clusterTxnCommittedText";
+  private static final String CLUSTER_TXNROLLBACK_ID = "clusterTxnRollbackText";
+  private static final String MEMBER_VIEW_MEMBERNAME_ID = "memberName";
+  private static final String MEMBER_VIEW_REGION_ID = "memberRegionsCount";
+  private static final String MEMBER_VIEW_THREAD_ID = "threads";
+  private static final String MEMBER_VIEW_SOCKETS_ID = "sockets";
+  private static final String MEMBER_VIEW_LOADAVG_ID = "loadAverage";
+  private static final String MEMBER_VIEW_LISTENINGPORT_ID = "receiverListeningPort";
+  private static final String MEMBER_VIEW_LINKTHROUGHPUT_ID = "receiverLinkThroughput";
+  private static final String MEMBER_VIEW_AVGBATCHLATENCY_ID = "receiverAvgBatchLatency";
+  private static final String MEMBER_VIEW_HEAPUSAGE_ID = "memberHeapUsageAvg";
+  private static final String MEMBER_VIEW_JVMPAUSES_ID = "memberGcPausesAvg";
+  private static final String MEMBER_VIEW_CPUUSAGE_ID = "memberCPUUsageValue";
+  private static final String MEMBER_VIEW_READPERSEC_ID = "memberGetsPerSecValue";
+  private static final String MEMBER_VIEW_WRITEPERSEC_ID = "memberPutsPerSecValue";
+  private static final String MEMBER_VIEW_OFFHEAPFREESIZE_ID = "offHeapFreeSize";
+  private static final String MEMBER_VIEW_OFFHEAPUSEDSIZE_ID = "offHeapUsedSize";
+  private static final String MEMBER_VIEW_CLIENTS_ID = "clusterClientsText";
+
+  private static final String REGION_NAME_LABEL = "regionName";
+  private static final String REGION_PATH_LABEL = "regionPath";
+  private static final String REGION_TYPE_LABEL = "regionType";
+  private static final String DATA_VIEW_WRITEPERSEC = "regionWrites";
+  private static final String DATA_VIEW_READPERSEC = "regionReads";
+  private static final String DATA_VIEW_EMPTYNODES = "regionEmptyNodes";
+  private static final String DATA_VIEW_ENTRYCOUNT = "regionEntryCount";
+  private static final String REGION_PERSISTENCE_LABEL = "regionPersistence";
+  private static final String DATA_VIEW_USEDMEMORY = "memoryUsed";
+  private static final String DATA_VIEW_TOTALMEMORY = "totalMemory";
+  
+  private static final String DATA_BROWSER_LABEL = "Data Browser";
+  private static final String DATA_BROWSER_REGIONName1 = "treeDemo_1_span";
+  private static final String DATA_BROWSER_REGIONName2 = "treeDemo_2_span";
+  private static final String DATA_BROWSER_REGIONName3 = "treeDemo_3_span";
+  private static final String DATA_BROWSER_REGION1_CHECKBOX = "treeDemo_1_check";
+  private static final String DATA_BROWSER_REGION2_CHECKBOX = "treeDemo_2_check";
+  private static final String DATA_BROWSER_REGION3_CHECKBOX = "treeDemo_3_check";
+  private static final String DATA_BROWSER_COLOCATED_REGION = "Colocated Regions";
+  private static final String DATA_BROWSER_COLOCATED_REGION_NAME1 = "treeDemo_1_span";
+  private static final String DATA_BROWSER_COLOCATED_REGION_NAME2 = "treeDemo_2_span";
+  private static final String DATA_BROWSER_COLOCATED_REGION_NAME3 = "treeDemo_3_span";
+
+  private static final String QUERY_STATISTICS_LABEL = "Query Statistics";
+  private static final String CLUSTER_VIEW_LABEL = "Cluster View";
+  private static final String CLUSTER_VIEW_GRID_ID = "default_treemap_button";
+  private static final String SERVER_GROUP_GRID_ID = "servergroups_treemap_button";
+  private static final String REDUNDANCY_GRID_ID = "redundancyzones_treemap_button";
+  private static final String MEMBER_DROPDOWN_ID = "Members";
+  private static final String DATA_DROPDOWN_ID = "Data";
+
+  private static WebDriver initdriver = null;
+
+  @BeforeClass
+  public static void setUpBeforeClass() throws Exception {
+    try {
+      server = Server.createServer(9999, jmxPropertiesFile);
+
+      String host = "localhost";// InetAddress.getLocalHost().getHostAddress();
+      int port = 8080;
+      String context = "/pulse";
+      
+      tomcat = TomcatHelper.startTomcat(host, port, context, path);
+      pulseURL = "http://" + host + ":" + port + context;
+
+      Thread.sleep(5000); // wait till tomcat settles down
+    } catch (FileNotFoundException e) {
+      e.printStackTrace();
+      Assert.fail("Error " + e.getMessage());
+    } catch (IOException e) {
+      e.printStackTrace();
+      Assert.fail("Error " + e.getMessage());
+    } catch (Exception e) {
+      e.printStackTrace();
+      Assert.fail("Error " + e.getMessage());
+    }
+
+    driver = new FirefoxDriver();
+    driver.manage().window().maximize();
+    driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
+    driver.get(pulseURL);
+    WebElement userNameElement = driver.findElement(By.id("user_name"));
+    WebElement passwordElement = driver.findElement(By.id("user_password"));
+    userNameElement.sendKeys(userName);
+    passwordElement.sendKeys(pasword);
+    passwordElement.submit();
+
+    Thread.sleep(3000);
+    WebElement userNameOnPulsePage = (new WebDriverWait(driver, 10))
+        .until(new ExpectedCondition<WebElement>() {
+          @Override
+          public WebElement apply(WebDriver d) {
+            return d.findElement(By.id("userName"));
+          }
+        });
+    Assert.assertNotNull(userNameOnPulsePage);
+    driver.navigate().refresh();
+    Thread.sleep(7000);
+  }
+
+  protected void searchByLinkAndClick(String linkText) {
+    WebElement element = By.linkText(linkText).findElement(driver);
+    Assert.assertNotNull(element);
+    element.click();
+  }
+
+  protected void searchByIdAndClick(String id) {
+    WebElement element = driver.findElement(By.id(id));
+    Assert.assertNotNull(element);
+    element.click();
+  }
+
+  protected void searchByClassAndClick(String Class) {
+    WebElement element = driver.findElement(By.className(Class));
+    Assert.assertNotNull(element);
+    element.click();
+  }
+
+  protected void searchByXPathAndClick(String xpath) {
+	WebElement element = driver.findElement(By.xpath(xpath));
+     Assert.assertNotNull(element);
+    element.click();
+  }
+
+  protected void waitForElementByClassName(final String className, int seconds) {
+    WebElement linkTextOnPulsePage1 = (new WebDriverWait(driver, seconds))
+        .until(new ExpectedCondition<WebElement>() {
+          @Override
+          public WebElement apply(WebDriver d) {
+            return d.findElement(By.className(className));
+          }
+        });
+    Assert.assertNotNull(linkTextOnPulsePage1);
+  }
+
+  protected void waitForElementById(final String id, int seconds) {
+    WebElement element = (new WebDriverWait(driver, 10))
+        .until(new ExpectedCondition<WebElement>() {
+          @Override
+          public WebElement apply(WebDriver d) {
+            return d.findElement(By.id(id));
+          }
+        });
+    Assert.assertNotNull(element);
+  }
+  
+  protected void scrollbarVerticalDownScroll() {
+    JavascriptExecutor js = (JavascriptExecutor) driver;
+    js.executeScript("javascript:window.scrollBy(250,700)");
+    WebElement pickerScroll = driver.findElement(By.className("jspDrag"));
+    WebElement pickerScrollCorner = driver.findElement(By
+        .className("jspCorner"));
+    Actions builder = new Actions(driver);
+    Actions movePicker = builder.dragAndDrop(pickerScroll, pickerScrollCorner); // pickerscroll
+                                                                                // is
+                                                                                // the
+                                                                                // webelement
+    movePicker.perform();
+  }
+
+  protected void scrollbarHorizontalRightScroll() {
+    JavascriptExecutor js = (JavascriptExecutor) driver;
+    js.executeScript("javascript:window.scrollBy(250,700)");
+    WebElement pickerScroll = driver
+        .findElement(By
+            .xpath("//div[@id='gview_queryStatisticsList']/div[3]/div/div[3]/div[2]/div"));
+    WebElement pickerScrollCorner = driver.findElement(By
+        .className("jspCorner"));
+    Actions builder = new Actions(driver);
+    Actions movePicker = builder.dragAndDrop(pickerScroll, pickerScrollCorner); // pickerscroll
+                                                                                // is
+                                                                                // the
+                                                                                // webelement
+    movePicker.perform();
+  }
+
+  
+  
+  @Test
+  public void testClusterLocatorCount() throws IOException {
+	searchByXPathAndClick(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
+    String clusterLocators = driver
+        .findElement(By.id(CLUSTER_VIEW_LOCATORS_ID)).getText();
+   
+    String totallocators = JMXProperties.getInstance().getProperty("server.S1.locatorCount");  
+    Assert.assertEquals(totallocators, clusterLocators);
+  }
+
+ @Test
+  public void testClusterRegionCount() {
+    String clusterRegions = driver.findElement(By.id(CLUSTER_VIEW_REGIONS_ID))
+        .getText();
+    String totalregions = JMXProperties.getInstance().getProperty(
+        "server.S1.totalRegionCount");
+    Assert.assertEquals(totalregions, clusterRegions);
+  }
+
+ @Test
+  public void testClusterMemberCount() {
+    String clusterMembers = driver.findElement(By.id(CLUSTER_VIEW_MEMBERS_ID))
+        .getText();
+    String totalMembers = JMXProperties.getInstance().getProperty(
+        "server.S1.memberCount");
+    Assert.assertEquals(totalMembers, clusterMembers);
+  }
+
+ @Test
+  public void testClusterNumClient() {
+    String clusterClients = driver.findElement(By.id(CLUSTER_CLIENTS_ID))
+        .getText();
+    String totalclients = JMXProperties.getInstance().getProperty(
+        "server.S1.numClients");
+    Assert.assertEquals(totalclients, clusterClients);
+  }
+
+  @Test
+  public void testClusterNumRunningFunction() {
+    String clusterFunctions = driver.findElement(By.id(CLUSTER_FUNCTIONS_ID))
+        .getText();
+    String totalfunctions = JMXProperties.getInstance().getProperty(
+        "server.S1.numRunningFunctions");
+    Assert.assertEquals(totalfunctions, clusterFunctions);
+  }
+
+@Test
+  public void testClusterRegisteredCQCount() {
+    String clusterUniqueCQs = driver.findElement(By.id(CLUSTER_UNIQUECQS_ID))
+        .getText();
+    String totaluniqueCQs = JMXProperties.getInstance().getProperty(
+        "server.S1.registeredCQCount");
+    Assert.assertEquals(totaluniqueCQs, clusterUniqueCQs);
+  }
+
+ @Test
+  public void testClusterNumSubscriptions() {
+    String clusterSubscriptions = driver.findElement(
+        By.id(CLUSTER_SUBSCRIPTION_ID)).getText();
+    String totalSubscriptions = JMXProperties.getInstance().getProperty(
+        "server.S1.numSubscriptions");
+    Assert.assertEquals(totalSubscriptions, clusterSubscriptions);
+  }
+
+ @Test
+  public void testClusterJVMPausesWidget() {
+    String clusterJVMPauses = driver.findElement(By.id(CLUSTER_GCPAUSES_ID))
+        .getText();
+    String totalgcpauses = JMXProperties.getInstance().getProperty(
+        "server.S1.jvmPauses");
+    Assert.assertEquals(totalgcpauses, clusterJVMPauses);
+  }
+
+  @Test
+  public void testClusterAverageWritesWidget() {
+    String clusterWritePerSec = driver.findElement(
+        By.id(CLUSTER_WRITEPERSEC_ID)).getText();
+    String totalwritepersec = JMXProperties.getInstance().getProperty(
+        "server.S1.averageWrites");
+    Assert.assertEquals(totalwritepersec, clusterWritePerSec);
+  }
+
+  @Test
+  public void testClusterAverageReadsWidget() {
+    String clusterReadPerSec = driver.findElement(By.id(CLUSTER_READPERSEC_ID))
+        .getText();
+    String totalreadpersec = JMXProperties.getInstance().getProperty(
+        "server.S1.averageReads");
+    Assert.assertEquals(totalreadpersec, clusterReadPerSec);
+  }
+
+  @Test
+  public void testClusterQuerRequestRateWidget() {
+    String clusterQueriesPerSec = driver.findElement(
+        By.id(CLUSTER_QUERIESPERSEC_ID)).getText();
+    String totalqueriespersec = JMXProperties.getInstance().getProperty(
+        "server.S1.queryRequestRate");
+    Assert.assertEquals(totalqueriespersec, clusterQueriesPerSec);
+  }
+  
+  @Test
+  public void testClusterGridViewMemberID() throws InterruptedException {
+	  
+	 searchByIdAndClick("default_grid_button");	
+	 List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr")); //gives me 11 rows
+	 
+	 for(int memberCount = 1; memberCount<elements.size(); memberCount++){		  
+		  String memberId = driver.findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (memberCount + 1) + "]/td")).getText();		  
+		  String propertMemeberId= JMXProperties.getInstance().getProperty("member.M" + memberCount + ".id");		  
+		  Assert.assertEquals(memberId, propertMemeberId);
+	  }	 
+  }
+
+  @Test
+  public void testClusterGridViewMemberName() {
+	  searchByIdAndClick("default_grid_button"); 
+	  List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr"));  	  
+	  for (int memberNameCount = 1; memberNameCount < elements.size(); memberNameCount++) {
+		  String gridMemberName = driver.findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (memberNameCount + 1) + "]/td[2]")).getText();
+		  String memberName = JMXProperties.getInstance().getProperty("member.M" + memberNameCount + ".member");
+		  Assert.assertEquals(gridMemberName, memberName);
+    }
+  }
+  
+
+  @Test
+  public void testClusterGridViewMemberHost() {
+	  searchByIdAndClick("default_grid_button"); 
+	  List<WebElement> elements = driver.findElements(By.xpath("//table[@id='memberList']/tbody/tr")); 	  
+    for (int memberHostCount = 1; memberHostCount < elements.size(); memberHostCount++) {
+      String MemberHost = driver.findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (memberHostCount + 1) + "]/td[3]")).getText();     
+      String gridMemberHost = JMXProperties.getInstance().getProperty("member.M" + memberHostCount + ".host");
+      Assert.assertEquals(gridMemberHost, MemberHost);
+    }
+  }
+
+  @Test
+  public void testClusterGridViewHeapUsage() {
+	searchByIdAndClick("default_grid_button"); 
+    for (int i = 1; i <= 3; i++) {
+      Float HeapUsage = Float.parseFloat(driver
+          .findElement(
+              By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[4]")).getText());
+      Float gridHeapUsagestring = Float.parseFloat(JMXProperties.getInstance()
+          .getProperty("member.M" + i + ".UsedMemory"));
+     Assert.assertEquals(gridHeapUsagestring, HeapUsage);
+    }
+  }
+   
+  @Test
+  public void testClusterGridViewCPUUsage() {
+	searchByIdAndClick("default_grid_button"); 
+    for (int i = 1; i <= 3; i++) {
+      String CPUUsage = driver.findElement(By.xpath("//table[@id='memberList']/tbody/tr[" + (i + 1) + "]/td[5]")).getText();
+      String gridCPUUsage = JMXProperties.getInstance().getProperty("member.M" + i + ".cpuUsage");
+      gridCPUUsage = gridCPUUsage.trim();
+      Assert.assertEquals(gridCPUUsage, CPUUsage);
+    }
+  }
+
+
+  public void testRgraphWidget() throws InterruptedException {
+    searchByIdAndClick("default_rgraph_button");
+    Thread.sleep(7000);
+    searchByIdAndClick("h1");
+    Thread.sleep(500);
+    searchByIdAndClick("M1");
+    Thread.sleep(7000);
+  }
+
+  @Test  // region count in properties file is 2 and UI is 1
+  public void testMemberTotalRegionCount() throws InterruptedException{
+	testRgraphWidget();
+    String RegionCount = driver.findElement(By.id(MEMBER_VIEW_REGION_ID)).getText();  
+    String memberRegionCount = JMXProperties.getInstance().getProperty("member.M1.totalRegionCount");
+    Assert.assertEquals(memberRegionCount, RegionCount);
+  }
+
+  @Test
+  public void testMemberNumThread()throws InterruptedException {
+    String ThreadCount = driver.findElement(By.id(MEMBER_VIEW_THREAD_ID)).getText();    
+    String memberThreadCount = JMXProperties.getInstance().getProperty("member.M1.numThreads");   
+    Assert.assertEquals(memberThreadCount, ThreadCount);
+  }
+
+  @Test
+  public void testMemberTotalFileDescriptorOpen() throws InterruptedException {
+    String SocketCount = driver.findElement(By.id(MEMBER_VIEW_SOCKETS_ID))
+        .getText();
+    String memberSocketCount = JMXProperties.getInstance().getProperty(
+        "member.M1.totalFileDescriptorOpen");
+    Assert.assertEquals(memberSocketCount, SocketCount);
+  }
+
+ @Test
+  public void testMemberLoadAverage() throws InterruptedException {	
+    String LoadAvg = driver.findElement(By.id(MEMBER_VIEW_LOADAVG_ID))
+        .getText();
+    String memberLoadAvg = JMXProperties.getInstance().getProperty(
+        "member.M1.loadAverage");
+    Assert.assertEquals(memberLoadAvg, LoadAvg);
+  }
+
+  @Ignore("WIP") // May be useful in near future
+  @Test
+  public void testOffHeapFreeSize(){	  
+	  
+    String OffHeapFreeSizeString = driver.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));
+    Assert.assertEquals(memberOffHeapFreeSize, OffHeapFreeSize); 
+ 
+  }
+
+  @Ignore("WIP") // May be useful in near future
+  @Test
+  public void testOffHeapUsedSize() throws InterruptedException {
+	 
+    String OffHeapUsedSizeString = driver.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));
+    Assert.assertEquals(memberOffHeapUsedSize, OffHeapUsedSize);
+  }
+
+  @Test
+  public void testMemberJVMPauses(){
+   
+    String JVMPauses = driver.findElement(By.id(MEMBER_VIEW_JVMPAUSES_ID))
+        .getText();
+    String memberGcPausesAvg = JMXProperties.getInstance().getProperty(
+        "member.M1.JVMPauses");
+    Assert.assertEquals(memberGcPausesAvg, JVMPauses);
+  }
+
+  @Test
+  public void testMemberCPUUsage() {  
+    String CPUUsagevalue = driver.findElement(By.id(MEMBER_VIEW_CPUUSAGE_ID))
+        .getText();
+    String memberCPUUsage = JMXProperties.getInstance().getProperty(
+        "member.M1.cpuUsage");
+    Assert.assertEquals(memberCPUUsage, CPUUsagevalue);
+  }
+
+  @Test  // difference between UI and properties file
+  public void testMemberAverageReads() {	  
+    float ReadPerSec = Float.parseFloat(driver.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));
+    Assert.assertEquals(memberReadPerSec, ReadPerSec);
+  }
+
+ @Test
+  public void testMemberAverageWrites() throws InterruptedException {  
+    String WritePerSec = driver.findElement(By.id(MEMBER_VIEW_WRITEPERSEC_ID))
+        .getText();
+    String memberWritePerSec = JMXProperties.getInstance().getProperty(
+        "member.M1.averageWrites");
+    Assert.assertEquals(memberWritePerSec, WritePerSec);
+  }
+ 
+
+ @Test
+  public void testMemberGridViewData() throws InterruptedException {
+   searchByXPathAndClick(PulseTestLocators.TopNavigation.clusterViewLinkXpath);
+   testRgraphWidget();
+   searchByXPathAndClick(PulseTestLocators.MemberDetailsView.gridButtonXpath);
+   // get the number of rows on the grid
+    List<WebElement> noOfRows = driver.findElements(By.xpath("//table[@id='memberRegionsList']/tbody/tr"));    
+    String MemberRegionName = driver.findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[1]")).getText();
+    String memberRegionName = JMXProperties.getInstance().getProperty("region.R1.name");
+    Assert.assertEquals(memberRegionName, MemberRegionName);
+
+    String MemberRegionType = driver.findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[2]")).getText();
+    String memberRegionType = JMXProperties.getInstance().getProperty("region.R1.regionType");
+    Assert.assertEquals(memberRegionType, MemberRegionType);
+    
+    String MemberRegionEntryCount = driver.findElement(By.xpath("//table[@id='memberRegionsList']/tbody/tr[2]/td[3]")).getText();
+    String memberRegionEntryCount = JMXProperties.getInstance().getProperty("regionOnMember./R1.M1.entryCount");
+    Assert.assertEquals(memberRegionEntryCount, MemberRegionEntryCount);
+  }
+
+@Test
+  public void testDropDownList() throws InterruptedException {
+	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 = driver.findElement(By.id(REGION_NAME_LABEL)).getText();
+    String dataviewregionname = JMXProperties.getInstance().getProperty("region.R1.name");
+    Assert.assertEquals(dataviewregionname, regionName);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewRegionPath() {
+    String regionPath = driver.findElement(By.id(REGION_PATH_LABEL)).getText();
+    String dataviewregionpath = JMXProperties.getInstance().getProperty(
+        "region.R1.fullPath");
+    Assert.assertEquals(dataviewregionpath, regionPath);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewRegionType() {
+    String regionType = driver.findElement(By.id(REGION_TYPE_LABEL)).getText();
+    String dataviewregiontype = JMXProperties.getInstance().getProperty(
+        "region.R1.regionType");
+    Assert.assertEquals(dataviewregiontype, regionType);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewEmptyNodes() {
+    String regionEmptyNodes = driver.findElement(By.id(DATA_VIEW_EMPTYNODES))
+        .getText();
+    String dataviewEmptyNodes = JMXProperties.getInstance().getProperty(
+        "region.R1.emptyNodes");
+    Assert.assertEquals(dataviewEmptyNodes, regionEmptyNodes);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewSystemRegionEntryCount() {
+    String regionEntryCount = driver.findElement(By.id(DATA_VIEW_ENTRYCOUNT))
+        .getText();
+    String dataviewEntryCount = JMXProperties.getInstance().getProperty(
+        "region.R1.systemRegionEntryCount");
+    Assert.assertEquals(dataviewEntryCount, regionEntryCount);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewPersistentEnabled() {
+    String regionPersistence = driver.findElement(
+        By.id(REGION_PERSISTENCE_LABEL)).getText();
+    String dataviewregionpersistence = JMXProperties.getInstance().getProperty(
+        "region.R1.persistentEnabled");
+    Assert.assertEquals(dataviewregionpersistence, regionPersistence);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskWritesRate() {
+    String regionWrites = driver.findElement(By.id(DATA_VIEW_WRITEPERSEC))
+        .getText();
+    String dataviewRegionWrites = JMXProperties.getInstance().getProperty(
+        "region.R1.diskWritesRate");
+    Assert.assertEquals(dataviewRegionWrites, regionWrites);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskReadsRate() {
+    String regionReads = driver.findElement(By.id(DATA_VIEW_READPERSEC))
+        .getText();
+    String dataviewRegionReads = JMXProperties.getInstance().getProperty(
+        "region.R1.diskReadsRate");
+    Assert.assertEquals(dataviewRegionReads, regionReads);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewDiskUsage() {
+    String regionMemoryUsed = driver.findElement(By.id(DATA_VIEW_USEDMEMORY))
+        .getText();
+    String dataviewMemoryUsed = JMXProperties.getInstance().getProperty(
+        "region.R1.diskUsage");
+    Assert.assertEquals(dataviewMemoryUsed, regionMemoryUsed);
+    searchByLinkAndClick(QUERY_STATISTICS_LABEL);
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataViewGridValue() {
+    String DataViewRegionName = driver.findElement(
+        By.xpath("//*[id('6')/x:td[1]]")).getText();
+    String dataViewRegionName = JMXProperties.getInstance().getProperty(
+        "region.R1.name");
+    Assert.assertEquals(dataViewRegionName, DataViewRegionName);
+
+    String DataViewRegionType = driver.findElement(
+        By.xpath("//*[id('6')/x:td[2]")).getText();
+    String dataViewRegionType = JMXProperties.getInstance().getProperty(
+        "region.R2.regionType");
+    Assert.assertEquals(dataViewRegionType, DataViewRegionType);
+
+    String DataViewEntryCount = driver.findElement(
+        By.xpath("//*[id('6')/x:td[3]")).getText();
+    String dataViewEntryCount = JMXProperties.getInstance().getProperty(
+        "region.R2.systemRegionEntryCount");
+    Assert.assertEquals(dataViewEntryCount, DataViewEntryCount);
+
+    String DataViewEntrySize = driver.findElement(
+        By.xpath("//*[id('6')/x:td[4]")).getText();
+    String dataViewEntrySize = JMXProperties.getInstance().getProperty(
+        "region.R2.entrySize");
+    Assert.assertEquals(dataViewEntrySize, DataViewEntrySize);
+
+  }
+  
+  
+  public void loadDataBrowserpage() {
+	  searchByLinkAndClick(DATA_BROWSER_LABEL);
+	  //Thread.sleep(7000);
+  }
+  
+  @Test
+  public void testDataBrowserRegionName() throws InterruptedException {
+	  loadDataBrowserpage();
+	  String DataBrowserRegionName1 = driver.findElement(By.id(DATA_BROWSER_REGIONName1))
+			  .getText();
+	  String databrowserRegionNametemp1 = JMXProperties.getInstance().getProperty(
+		        "region.R1.name");
+	  String databrowserRegionName1 = databrowserRegionNametemp1.replaceAll("[\\/]", "");
+	  Assert.assertEquals(databrowserRegionName1, DataBrowserRegionName1);
+	  
+	  String DataBrowserRegionName2 = driver.findElement(By.id(DATA_BROWSER_REGIONName2))
+			  .getText();
+	  String databrowserRegionNametemp2 = JMXProperties.getInstance().getProperty(
+		        "region.R2.name");
+	  String databrowserRegionName2 = databrowserRegionNametemp2.replaceAll("[\\/]", "");
+	  Assert.assertEquals(databrowserRegionName2, DataBrowserRegionName2);
+	  
+	  String DataBrowserRegionName3 = driver.findElement(By.id(DATA_BROWSER_REGIONName3))
+			  .getText();
+	  String databrowserRegionNametemp3 = JMXProperties.getInstance().getProperty(
+		        "region.R3.name");
+	  String databrowserRegionName3 = databrowserRegionNametemp3.replaceAll("[\\/]", "");
+	  Assert.assertEquals(databrowserRegionName3, DataBrowserRegionName3);
+	        
+  }
+  
+  @Test
+  public void testDataBrowserRegionMembersVerificaition() throws InterruptedException {
+	  loadDataBrowserpage();
+	  searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX);
+	  String DataBrowserMember1Name1 = driver.findElement(By.xpath("//label[@for='Member0']"))
+			  .getText();
+	  String DataBrowserMember1Name2 = driver.findElement(By.xpath("//label[@for='Member1']"))
+			  .getText();
+	  String DataBrowserMember1Name3 = driver.findElement(By.xpath("//label[@for='Member2']"))
+			  .getText();
+	  String databrowserMember1Names = JMXProperties.getInstance().getProperty(
+		        "region.R1.members");
+	  
+	  String databrowserMember1Names1 = databrowserMember1Names.substring(0, 2);
+	  Assert.assertEquals(databrowserMember1Names1, DataBrowserMember1Name1);
+	  
+	  String databrowserMember1Names2 = databrowserMember1Names.substring(3, 5);
+	  Assert.assertEquals(databrowserMember1Names2, DataBrowserMember1Name2);
+	  
+	  String databrowserMember1Names3 = databrowserMember1Names.substring(6, 8);
+	  Assert.assertEquals(databrowserMember1Names3, DataBrowserMember1Name3);
+	  searchByIdAndClick(DATA_BROWSER_REGION1_CHECKBOX);
+	  
+	  searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX);
+	  String DataBrowserMember2Name1 = driver.findElement(By.xpath("//label[@for='Member0']"))
+			  .getText();
+	  String DataBrowserMember2Name2 = driver.findElement(By.xpath("//label[@for='Member1']"))
+			  .getText();
+	  String databrowserMember2Names = JMXProperties.getInstance().getProperty(
+		        "region.R2.members");
+	  
+	  String databrowserMember2Names1 = databrowserMember2Names.substring(0, 2);
+	  Assert.assertEquals(databrowserMember2Names1, DataBrowserMember2Name1);
+	  
+	  String databrowserMember2Names2 = databrowserMember2Names.substring(3, 5);
+	  Assert.assertEquals(databrowserMember2Names2, DataBrowserMember2Name2);
+	  searchByIdAndClick(DATA_BROWSER_REGION2_CHECKBOX);
+	  
+	  searchByIdAndClick(DATA_BROWSER_REGION3_CHECKBOX);
+	  String DataBrowserMember3Name1 = driver.findElement(By.xpath("//label[@for='Member0']"))
+			  .getText();
+	  String DataBrowserMember3Name2 = driver.findElement(By.xpath("//label[@for='Member1']"))
+			  .getText();
+	  String databrowserMember3Names = JMXProperties.getInstance().getProperty(
+		        "region.R3.members");
+	  
+	  String databrowserMember3Names1 = databrowserMember3Names.substring(0, 2);
+	  Assert.assertEquals(databrowserMember3Names1, DataBrowserMember3Name1);
+	  
+	  String databrowserMember3Names2 = databrowserMember3Names.substring(3, 5);
+	  Assert.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 = driver.findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME1))
+			  .getText();
+	  String DataBrowserColocatedRegion2 = driver.findElement(By.id(DATA_BROWSER_COLOCATED_REGION_NAME2))
+			  .getText();
+	  String DataBrowserColocatedRegion3 = driver.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("[\\/]", "");
+	  
+	  Assert.assertEquals(databrowserColocatedRegion1, DataBrowserColocatedRegion1);
+	  Assert.assertEquals(databrowserColocatedRegion2, DataBrowserColocatedRegion2);
+	  Assert.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 = driver.findElement(By.id("dataBrowserQueryText"));
+	  textArea.sendKeys("query1");
+	  WebElement executeButton = driver.findElement(By.id("btnExecuteQuery"));
+	  executeButton.click();
+	  String QueryResultHeader1 = driver.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 = driver.findElement(By.xpath("//label[@for='radio-servergroups']"));
+			  ServerGroupRadio.click();
+		  }
+		  if (gridIcon.equals(REDUNDANCY_GRID_ID)) {
+			  WebElement ServerGroupRadio = driver.findElement(By.xpath("//label[@for='radio-redundancyzones']"));
+			  ServerGroupRadio.click();
+		  }
+		  searchByIdAndClick(gridIcon);
+		  WebElement TreeMapMember = driver.findElement(By.xpath("//div[@id='" + S1 + "M"+ (i) + "']/div"));
+		  Actions builder = new Actions(driver);
+		  builder.clickAndHold(TreeMapMember).perform();
+		  int j = 1;
+		  String CPUUsageM1temp = driver.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");
+		  Assert.assertEquals(cpuUsageM1, CPUUsageM1);
+			  
+		  String MemoryUsageM1temp = driver.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");
+		  Assert.assertEquals(memoryUsageM1, MemoryUsageM1);
+		  
+		  String LoadAvgM1 = driver.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");
+		  Assert.assertEquals(loadAvgM1, LoadAvgM1);
+		  
+		  
+		  String ThreadsM1 = driver.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");
+		  Assert.assertEquals(threadsM1, ThreadsM1);
+		  
+		  String SocketsM1 = driver.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");
+		  Assert.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 = driver.findElement(By.id("GraphTreeMapClusterData-canvas"));
+	  Actions builder = new Actions(driver);
+	  builder.clickAndHold(TreeMapMember).perform();
+	  String RegionType = driver.findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div/div[2]/div"))
+			  .getText();
+	  String regionType = JMXProperties.getInstance().getProperty(
+			  "region.R2.regionType");
+	  Assert.assertEquals(regionType, RegionType);
+	  
+	  String EntryCount = driver.findElement(By.xpath("//div[@id='_tooltip']/div/div/div[2]/div[2]/div[2]/div"))
+			  .getText();
+	  String entryCount = JMXProperties.getInstance().getProperty(
+			  "region.R2.systemRegionEntryCount");
+	  Assert.assertEquals(entryCount, EntryCount);
+	  
+	  String EntrySizetemp = driver.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));
+	  Assert.assertEquals(entrySize, EntrySize);  
+	  builder.moveToElement(TreeMapMember).release().perform();
+  }
+  
+  @Test
+  public void testRegionViewTreeMapPopUpData() {
+	  searchByLinkAndClick(CLUSTER_VIEW_LABEL);
+	  searchByLinkAndClick(DATA_DROPDOWN_ID);
+	  WebElement TreeMapMember = driver.findElement(By.id("GraphTreeMapClusterData-canvas"));
+	  TreeMapMember.click();
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testNumberOfRegions() throws InterruptedException{
+	  
+		driver.findElement(By.xpath("//a[text()='Data Browser']")).click();
+		
+		 Thread.sleep(1000);
+		 List<WebElement> regionList = driver.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++;
+		}
+		
+		driver.findElement(By.id("treeDemo_1_check")).click();		
+		
+		List<WebElement> memeberList = driver.findElements(By.xpath("//ul[@id='membersList']/li"));
+		int j=0;
+		for (WebElement webElement : memeberList) {
+			j++;
+		}  
+  }
+
+  @Ignore("WIP")
+  @Test
+  public void testDataBrowser(){
+	  
+	  driver.findElement(By.linkText("Data Browser")).click();
+	 // WebElement dataBrowserLabel = driver.findElement(By.xpath(""));
+	  WebDriverWait wait = new WebDriverWait(driver, 20);
+	  wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.xpath("//label[text()='Data Browser']"))));
+	  
+	
+	// Verify all elements must be displayed on data browser screen 
+	  Assert.assertTrue(driver.findElement(By.xpath("//a[text()='Data Regions']")).isDisplayed());	
+	  Assert.assertTrue(driver.findElement(By.id("linkColocatedRegions")).isDisplayed());	  
+	  Assert.assertTrue(driver.findElement(By.linkText("All Regions")).isDisplayed());
+	  
+	  Assert.assertTrue(driver.findElement(By.xpath("//a[text()='Region Members']")).isDisplayed());
+	  
+	  Assert.assertTrue(driver.findElement(By.xpath("//a[text()='Queries']")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.xpath("//label[text()='Query Editor']")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.xpath("//label[text()='Result']")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.xpath("//input[@value='Export Result']")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.id("btnExecuteQuery")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.xpath("//input[@value='Clear']")).isDisplayed());
+	  Assert.assertTrue(driver.findElement(By.id("dataBrowserQueryText")).isDisplayed());
+	  
+	  Assert.assertTrue(driver.findElement(By.id("historyIcon")).isDisplayed());
+	  
+	  //Acutal query execution
+	  
+	  driver.findElement(By.id("dataBrowserQueryText")).sendKeys("Query1");
+	  
+	  
+	  
+	 
+	  // Assert data regions are displayed 
+	  Assert.assertTrue(driver.findElement(By.id("treeDemo_1")).isDisplayed());
+	
+	  
+  }
+
+  @AfterClass
+  public static void tearDownAfterClass() throws Exception {
+	  //Thread.sleep(200000000);
+    driver.close();
+    /*try {
+      if (tomcat != null) {
+        tomcat.stop();
+        tomcat.destroy();
+      }
+
+      System.out.println("Tomcat Stopped");
+
+      if (server != null) {
+        server.stop();
+      }
+
+      System.out.println("Server Stopped");
+    } catch (LifecycleException e) {
+      e.printStackTrace();
+    }
+*/
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Region.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Region.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Region.java
new file mode 100644
index 0000000..17389b1
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Region.java
@@ -0,0 +1,181 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+
+public class Region extends JMXBaseBean implements RegionMBean {
+  private String name = null;
+
+  private static String[] regAttItemNames = { "compressionCodec",
+    "enableOffHeapMemory", "hdfsWriteOnly", "scope", "diskStoreName", 
+    "diskSynchronous" };
+  private static String[] regAttItemDescriptions = { "compressionCodec",
+    "enableOffHeapMemory", "hdfsWriteOnly", "scope", "diskStoreName", 
+    "diskSynchronous" };
+  private static OpenType[] regAttItemTypes = { SimpleType.STRING,
+    SimpleType.BOOLEAN, SimpleType.BOOLEAN, SimpleType.STRING, 
+    SimpleType.STRING, SimpleType.BOOLEAN };
+  private static CompositeType listRegionAttributesCompData = null;
+
+  static {
+    try {
+      listRegionAttributesCompData = new CompositeType("listRegionAttributes",
+          "Regions attributes", regAttItemNames, regAttItemDescriptions,
+          regAttItemTypes);
+
+    } catch (OpenDataException e) {
+      e.printStackTrace();
+    }
+  }
+
+  public Region(String name) {
+    this.name = name;
+  }
+
+  protected String getKey(String propName) {
+    return "region." + name + "." + propName;
+  }
+
+  @Override
+  public String[] getMembers() {
+    return getStringArray("members");
+  }
+
+  @Override
+  public String getFullPath() {
+    return getString("fullPath");
+  }
+
+  @Override
+  public float getDiskReadsRate() {
+    return getFloat("diskReadsRate");
+  }
+
+  @Override
+  public float getDiskWritesRate() {
+    return getFloat("diskWritesRate");
+  }
+
+  @Override
+  public int getEmptyNodes() {
+    return getInt("emptyNodes");
+  }
+
+  @Override
+  public float getGetsRate() {
+    return getFloat("getsRate");
+  }
+
+  @Override
+  public float getLruEvictionRate() {
+    return getFloat("lruEvictionRate");
+  }
+
+  @Override
+  public float getPutsRate() {
+    return getFloat("putsRate");
+  }
+
+  @Override
+  public String getRegionType() {
+    return getString("regionType");
+  }
+
+  @Override
+  public long getEntrySize() {
+    return getLong("entrySize");
+  }
+
+  @Override
+  public long getSystemRegionEntryCount() {
+    return getLong("systemRegionEntryCount");
+  }
+
+  @Override
+  public int getMemberCount() {
+    return getInt("memberCount");
+  }
+
+  @Override
+  public boolean getPersistentEnabled() {
+    return getBoolean("persistentEnabled");
+  }
+
+  @Override
+  public String getName() {
+    return getString("name");
+  }
+
+  @Override
+  public boolean getGatewayEnabled() {
+    return getBoolean("gatewayEnabled");
+  }
+
+  @Override
+  public long getDiskUsage() {
+    return getLong("diskUsage");
+  }
+
+  @Override
+  public CompositeData listRegionAttributes() {
+    String value = JMXProperties.getInstance().getProperty(
+        getKey("listRegionAttributes"), "");
+    String[] itemValues = value.split(",");
+    Map<String, Object> itemValuesHM = new HashMap<String, Object>();
+    
+    // compressionCodec
+    if (null != itemValues[0]) {
+      itemValuesHM.put(regAttItemNames[0], itemValues[0]);
+    }
+
+    // enableOffHeapMemory
+    if (null != itemValues[1]) {
+      itemValuesHM.put(regAttItemNames[1], Boolean.parseBoolean(itemValues[1]));
+    }
+
+    // hdfsWriteOnly
+    if (null != itemValues[2]) {
+      itemValuesHM.put(regAttItemNames[2], Boolean.parseBoolean(itemValues[2]));
+    }
+
+    // scope
+    if (null != itemValues[3]) {
+      itemValuesHM.put(regAttItemNames[3], itemValues[3]);
+    }
+
+    // diskStoreName
+    if (null != itemValues[4]) {
+      itemValuesHM.put(regAttItemNames[4], itemValues[4]);
+    }
+
+    // diskSynchronous
+    if (null != itemValues[5]) {
+      itemValuesHM.put(regAttItemNames[5], Boolean.parseBoolean(itemValues[5]));
+    }
+
+    CompositeData lraCompData;
+    try {
+      lraCompData = new CompositeDataSupport(listRegionAttributesCompData,
+          itemValuesHM);
+    } catch (OpenDataException e) {
+      e.printStackTrace();
+      lraCompData = null;
+    }
+    return lraCompData;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionMBean.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionMBean.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionMBean.java
new file mode 100644
index 0000000..33743f4
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionMBean.java
@@ -0,0 +1,48 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import javax.management.openmbean.CompositeData;
+
+public interface RegionMBean {
+  String OBJECT_NAME = "GemFire:service=Region,type=Distributed";
+
+  String[] getMembers();
+
+  String getFullPath();
+
+  float getDiskReadsRate();
+
+  float getDiskWritesRate();
+
+  int getEmptyNodes();
+
+  float getGetsRate();
+
+  float getLruEvictionRate();
+
+  float getPutsRate();
+
+  String getRegionType();
+
+  long getEntrySize();
+
+  long getSystemRegionEntryCount();
+
+  int getMemberCount();
+
+  boolean getPersistentEnabled();
+
+  String getName();
+
+  boolean getGatewayEnabled();
+
+  long getDiskUsage();
+
+  CompositeData listRegionAttributes();
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMember.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMember.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMember.java
new file mode 100644
index 0000000..1d57cba
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMember.java
@@ -0,0 +1,85 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+/**
+ * Region on member mbean
+ *
+ *
+ * @author rbhandekar
+ *
+ */
+public class RegionOnMember extends JMXBaseBean implements RegionOnMemberMBean {
+  private String fullPath = null;
+  private String member = null;
+
+  public RegionOnMember(String fullPath, String member) {
+    this.fullPath = fullPath;
+    this.member = member;
+  }
+
+  @Override
+  protected String getKey(String propName) {
+    return "regionOnMember." + fullPath + "." + member + "." + propName;
+  }
+
+  @Override
+  public String getFullPath(){
+    return this.fullPath;
+  }
+
+  @Override
+  public String getMember(){
+    return this.member;
+  }
+
+  @Override
+  public String getName(){
+    return getString("name");
+  }
+
+  @Override
+  public String getRegionType(){
+    return getString("regionType");
+  }
+
+  @Override
+  public long getEntrySize(){
+    return getLong("entrySize");
+  }
+
+  @Override
+  public long getEntryCount(){
+    return getLong("entryCount");
+  }
+
+  @Override
+  public float getGetsRate(){
+    return getFloat("getsRate");
+  }
+
+  @Override
+  public float getPutsRate(){
+    return getFloat("putsRate");
+  }
+
+  @Override
+  public float getDiskReadsRate(){
+    return getFloat("diskGetsRate");
+  }
+
+  @Override
+  public float getDiskWritesRate(){
+    return getFloat("diskPutsRate");
+  }
+
+  @Override
+  public int getLocalMaxMemory(){
+    return getInt("localMaxMemory");
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMemberMBean.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMemberMBean.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMemberMBean.java
new file mode 100644
index 0000000..90a849f
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/RegionOnMemberMBean.java
@@ -0,0 +1,39 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+/**
+ * Region on members mbean
+ *
+ * @author rbhandekar
+ *
+ */
+public interface RegionOnMemberMBean {
+
+  String getName();
+
+  String getRegionType(); // Ideally should be an Enum
+
+  String getFullPath();
+
+  String getMember();
+
+  long getEntrySize();
+
+  long getEntryCount();
+
+  float getGetsRate();
+
+  float getPutsRate();
+
+  float getDiskReadsRate();
+
+  float getDiskWritesRate();
+
+  int getLocalMaxMemory();
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java
new file mode 100644
index 0000000..02f6be2
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/Server.java
@@ -0,0 +1,242 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import com.vmware.gemfire.tools.pulse.internal.data.PulseConstants;
+
+import java.io.IOException;
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.util.Set;
+
+import javax.management.InstanceAlreadyExistsException;
+import javax.management.MBeanRegistrationException;
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.MalformedObjectNameException;
+import javax.management.NotCompliantMBeanException;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnectorServer;
+import javax.management.remote.JMXConnectorServerFactory;
+import javax.management.remote.JMXServiceURL;
+
+public class Server {
+  private static final String DEFAULT_HOST = "127.0.0.1"; //"localhost"
+  private static final int DEFAULT_PORT = 9999;
+  private final MBeanServer mbs;
+  private final JMXServiceURL url;
+  private final JMXConnectorServer cs;
+  private String propFile = null;
+
+  public Server(int port, String properties) throws IOException {
+    try {
+      java.rmi.registry.LocateRegistry.createRegistry(port);
+      System.out.println("RMI registry ready.");
+    } catch (Exception e) {
+      System.out.println("Exception starting RMI registry:");
+      e.printStackTrace();
+    }
+
+    this.propFile = properties;
+    mbs = MBeanServerFactory.createMBeanServer();
+    url = new JMXServiceURL(formJMXServiceURLString(DEFAULT_HOST, "" + port));
+    cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
+
+    cs.start();
+
+    loadMBeans();
+  }
+
+  private String formJMXServiceURLString(String host, String port)
+      throws UnknownHostException {
+    /*
+     * String jmxSerURL = "service:jmx:rmi://" + serverName + "/jndi/rmi://" +
+     * serverName + ":" + port + "/jmxrmi";
+     */
+    String jmxSerURL = "";
+
+    InetAddress inetAddr = InetAddress.getByName(host);
+    if (inetAddr instanceof Inet4Address) {
+      // Create jmx service url for IPv4 address
+      jmxSerURL = "service:jmx:rmi://" + host + "/jndi/rmi://" + host + ":"
+          + port + "/jmxrmi";
+    } else if (inetAddr instanceof Inet6Address) {
+      // Create jmx service url for IPv6 address
+      jmxSerURL = "service:jmx:rmi://[" + host + "]/jndi/rmi://[" + host + "]:"
+          + port + "/jmxrmi";
+    }
+
+    return jmxSerURL;
+  }
+
+  public void stop() {
+    try {
+      cs.stop();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
+
+  private synchronized void loadMBeans() {
+    unregisterAll();
+
+    JMXProperties props = JMXProperties.getInstance();
+    try {
+      props.load(propFile);
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+
+    // Add servers
+    String[] servers = getArrayProperty(props, "servers");
+    for (String server : servers) {
+      try {
+        addServerMBean(server);
+      } catch (InstanceAlreadyExistsException e) {
+        e.printStackTrace();
+      } catch (MBeanRegistrationException e) {
+        e.printStackTrace();
+      } catch (NotCompliantMBeanException e) {
+        e.printStackTrace();
+      } catch (MalformedObjectNameException e) {
+        e.printStackTrace();
+      } catch (NullPointerException e) {
+        e.printStackTrace();
+      }
+    }
+
+    // Add members
+    String[] members = getArrayProperty(props, "members");
+    for (String m : members) {
+      try {
+        addMemberMBean(m);
+      } catch (InstanceAlreadyExistsException e) {
+        e.printStackTrace();
+      } catch (MBeanRegistrationException e) {
+        e.printStackTrace();
+      } catch (NotCompliantMBeanException e) {
+        e.printStackTrace();
+      } catch (MalformedObjectNameException e) {
+        e.printStackTrace();
+      } catch (NullPointerException e) {
+        e.printStackTrace();
+      }
+    }
+
+    // Add regions
+    String[] regions = getArrayProperty(props, "regions");
+    for (String reg : regions) {
+      try {
+        addRegionMBean(reg);
+      } catch (InstanceAlreadyExistsException e) {
+        e.printStackTrace();
+      } catch (MBeanRegistrationException e) {
+        e.printStackTrace();
+      } catch (NotCompliantMBeanException e) {
+        e.printStackTrace();
+      } catch (MalformedObjectNameException e) {
+        e.printStackTrace();
+      } catch (NullPointerException e) {
+        e.printStackTrace();
+      }
+    }
+  }
+
+  private void addMemberMBean(String m) throws InstanceAlreadyExistsException,
+      MBeanRegistrationException, NotCompliantMBeanException,
+      MalformedObjectNameException, NullPointerException {
+    Member m1 = new Member(m);
+    mbs.registerMBean(m1, new ObjectName(Member.OBJECT_NAME + ",member=" + m));
+  }
+
+  // For GemFire XD
+  private void addGemFireXDMemberMBean(String xdm)
+      throws InstanceAlreadyExistsException, MBeanRegistrationException,
+      NotCompliantMBeanException, MalformedObjectNameException,
+      NullPointerException {
+    GemFireXDMember xdmo = new GemFireXDMember(xdm);
+    mbs.registerMBean(xdmo, new ObjectName(GemFireXDMember.OBJECT_NAME
+        + ",member=" + xdm));
+  }
+
+  private void addRegionMBean(String reg)
+      throws InstanceAlreadyExistsException, MBeanRegistrationException,
+      NotCompliantMBeanException, MalformedObjectNameException,
+      NullPointerException {
+    Region regionObject = new Region(reg);
+    mbs.registerMBean(regionObject, new ObjectName(Region.OBJECT_NAME + ",name=/" + reg));
+
+    for (String member : regionObject.getMembers()) {
+      RegionOnMember regionOnMemberObject = new RegionOnMember(regionObject.getFullPath(), member);
+      mbs.registerMBean(regionOnMemberObject, new ObjectName(
+              PulseConstants.OBJECT_NAME_REGION_ON_MEMBER_REGION + regionObject.getFullPath() + PulseConstants.OBJECT_NAME_REGION_ON_MEMBER_MEMBER + member));
+    }
+  }
+
+  private void addServerMBean(String server)
+      throws InstanceAlreadyExistsException, MBeanRegistrationException,
+      NotCompliantMBeanException, MalformedObjectNameException,
+      NullPointerException {
+    ServerObject so = new ServerObject(server);
+    mbs.registerMBean(so, new ObjectName(ServerObject.OBJECT_NAME));
+  }
+
+  private String[] getArrayProperty(JMXProperties props, String propName) {
+    String propVal = props.getProperty(propName, "");
+    return propVal.split(" ");
+  }
+
+  private void unregisterAll() {
+    Set<ObjectName> thisSet = mbs.queryNames(null, null);
+    for (ObjectName objectName : thisSet) {
+//      System.out.println("Removing ..." + objectName.getCanonicalName());
+
+      /*try {
+        mbs.unregisterMBean(objectName);
+      } catch (MBeanRegistrationException e) {
+        e.printStackTrace();
+      } catch (InstanceNotFoundException e) {
+        e.printStackTrace();
+      }*/
+    }
+  }
+
+  public static void main(String[] args) throws MalformedObjectNameException,
+      NullPointerException {
+    int port = DEFAULT_PORT;
+    String props = null;
+    if (args.length >= 2) {
+      try {
+        port = Integer.parseInt(args[0]);
+        props = args[1];
+
+      } catch (NumberFormatException nfe) {
+        port = DEFAULT_PORT;
+        props = null;
+        nfe.printStackTrace();
+      }
+    }
+
+    createServer(port, props);
+  }
+
+  public static Server createServer(int port, String properties)
+      throws MalformedObjectNameException {
+    Server s = null;
+    try {
+      s = new Server(port, properties);
+    } catch (Exception e) {
+      e.printStackTrace();
+      return null;
+    }
+
+    return s;
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObject.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObject.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObject.java
new file mode 100644
index 0000000..c2fa54c
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObject.java
@@ -0,0 +1,253 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import java.io.IOException;
+
+import javax.management.NotificationBroadcasterSupport;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+import javax.management.openmbean.TabularType;
+
+public class ServerObject extends NotificationBroadcasterSupport implements
+    ServerObjectMBean {
+  private String name = null;
+
+  private TabularDataSupport wanInfo;
+  private static String[] itemNames = { "key", "value" };
+  private static String[] itemDescriptions = { "Key", "Value" };
+  private static OpenType[] itemTypes = { SimpleType.STRING, SimpleType.BOOLEAN };
+  private static CompositeType wanInfoType = null;
+
+  private static String[] indexNames = { "key" };
+  private static TabularType wanType = null;
+
+  static {
+    try {
+      wanInfoType = new CompositeType("wanInfo", "WAN Information", itemNames,
+          itemDescriptions, itemTypes);
+
+      wanType = new TabularType("wanInfo", "WAN Information", wanInfoType,
+          indexNames);
+
+    } catch (OpenDataException e) {
+      e.printStackTrace();
+    }
+  }
+
+  public ServerObject(String name) {
+    this.name = name;
+    this.wanInfo = new TabularDataSupport(wanType);
+  }
+
+  private String getKey(String propName) {
+    return "server." + name + "." + propName;
+  }
+
+  @Override
+  public String[] listCacheServers() {
+    return JMXProperties.getInstance()
+        .getProperty(getKey("listCacheServers"), "").split(" ");
+  }
+
+  @Override
+  public String[] listServers() {
+    return JMXProperties.getInstance()
+            .getProperty(getKey("listServers"), "").split(" ");
+  }
+
+  @Override
+  public TabularData viewRemoteClusterStatus() {
+    wanInfo.clear();
+    String[] wan = JMXProperties.getInstance()
+        .getProperty(getKey("wanInfo"), "").split(" ");
+    int cnt = 0;
+    while (wan.length >= (cnt + 2)) {
+      try {
+        wanInfo.put(buildWanInfoType(new String(wan[cnt]),
+            Boolean.parseBoolean(wan[cnt + 1])));
+      } catch (OpenDataException e) {
+        e.printStackTrace();
+      }
+      cnt += 2;
+    }
+
+    return (TabularData) wanInfo.clone();
+  }
+
+  @Override
+  public int getMemberCount() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("memberCount")));
+  }
+
+  @Override
+  public int getNumClients() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("numClients")));
+  }
+
+  @Override
+  public int getDistributedSystemId() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("distributedSystemId")));
+  }
+
+  @Override
+  public int getLocatorCount() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("locatorCount")));
+  }
+
+  @Override
+  public int getTotalRegionCount() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("totalRegionCount")));
+  }
+
+  @Override
+  public int getNumRunningFunctions() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("numRunningFunctions")));
+  }
+
+  @Override
+  public long getRegisteredCQCount() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("registeredCQCount")));
+  }
+
+  @Override
+  public int getNumSubscriptions() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("numSubscriptions")));
+  }
+
+  // For SQLFire/GemFireXD
+  @Override
+  public int getTransactionCommitted() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("TransactionCommitted")));
+  }
+
+  // For SQLFire/GemFireXD
+  @Override
+  public int getTransactionRolledBack() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("TransactionRolledBack")));
+  }
+
+  @Override
+  public long getTotalHeapSize() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("totalHeapSize")));
+  }
+
+  @Override
+  public long getUsedHeapSize() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("usedHeapSize")));
+  }
+
+  @Override
+  public long getMaxMemory() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("MaxMemory")));
+  }
+
+  @Override
+  public long getUsedMemory() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("UsedMemory")));
+  }
+
+  @Override
+  public long getTotalRegionEntryCount() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("totalRegionEntryCount")));
+  }
+
+  @Override
+  public int getCurrentQueryCount() {
+    return Integer.parseInt(JMXProperties.getInstance().getProperty(
+        getKey("currentQueryCount")));
+  }
+
+  @Override
+  public long getTotalDiskUsage() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("totalDiskUsage")));
+  }
+
+  @Override
+  public float getDiskWritesRate() {
+    return Float.parseFloat(JMXProperties.getInstance().getProperty(
+        getKey("diskWritesRate")));
+  }
+
+  @Override
+  public float getAverageWrites() {
+    return Float.parseFloat(JMXProperties.getInstance().getProperty(
+        getKey("averageWrites"), ""));
+  }
+
+  @Override
+  public float getAverageReads() {
+    return Float.parseFloat(JMXProperties.getInstance().getProperty(
+        getKey("averageReads"), ""));
+  }
+
+  @Override
+  public float getQueryRequestRate() {
+    return Float.parseFloat(JMXProperties.getInstance().getProperty(
+        getKey("queryRequestRate"), ""));
+  }
+
+  @Override
+  public float getDiskReadsRate() {
+    return Float.parseFloat(JMXProperties.getInstance().getProperty(
+        getKey("diskReadsRate"), ""));
+  }
+
+  @Override
+  public long getJVMPauses() {
+    return Long.parseLong(JMXProperties.getInstance().getProperty(
+        getKey("jvmPauses"), ""));
+  }
+
+  private CompositeData buildWanInfoType(String key, Boolean state)
+      throws OpenDataException {
+    Object[] itemValues = { key, state };
+    CompositeData result = new CompositeDataSupport(wanInfoType, itemNames,
+        itemValues);
+
+    return result;
+  }
+
+  @Override
+  public String queryData(String p0, String p1, int p2) {
+    // p0 : query
+    // p1 : comma separated members
+    // p2 : limit
+    
+    DataBrowserResultLoader dbrLoader = DataBrowserResultLoader.getInstance();
+    
+    try {
+      return dbrLoader.load(p0);
+    } catch (IOException e) {
+      e.printStackTrace();
+      return e.getMessage();
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObjectMBean.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObjectMBean.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObjectMBean.java
new file mode 100644
index 0000000..ff1aea9
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/ServerObjectMBean.java
@@ -0,0 +1,68 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import javax.management.openmbean.TabularData;
+
+public interface ServerObjectMBean {
+  String OBJECT_NAME = "GemFire:service=System,type=Distributed";
+
+  TabularData viewRemoteClusterStatus();
+
+  int getMemberCount();
+
+  int getNumClients();
+
+  int getDistributedSystemId();
+
+  int getLocatorCount();
+
+  int getTotalRegionCount();
+
+  int getNumRunningFunctions();
+
+  long getRegisteredCQCount();
+
+  int getNumSubscriptions();
+
+  int getTransactionCommitted();
+
+  int getTransactionRolledBack();
+
+  long getTotalHeapSize();
+
+  long getUsedHeapSize();
+
+  long getMaxMemory();
+
+  long getUsedMemory();
+
+  long getTotalRegionEntryCount();
+
+  int getCurrentQueryCount();
+
+  long getTotalDiskUsage();
+
+  float getDiskWritesRate();
+
+  float getAverageWrites();
+
+  float getAverageReads();
+
+  float getQueryRequestRate();
+
+  float getDiskReadsRate();
+
+  long getJVMPauses();
+
+  String[] listCacheServers();
+
+  String[] listServers();
+
+  String queryData(String p0, String p1, int p2);
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/446f451a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/TomcatHelper.java
----------------------------------------------------------------------
diff --git a/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/TomcatHelper.java b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/TomcatHelper.java
new file mode 100644
index 0000000..3b6aece
--- /dev/null
+++ b/gemfire-pulse/src/test/java/com/vmware/gemfire/tools/pulse/tests/TomcatHelper.java
@@ -0,0 +1,86 @@
+/*=========================================================================
+ * Copyright (c) 2012-2014 Pivotal Software, Inc. All Rights Reserved.
+ * This product is protected by U.S. and international copyright
+ * and intellectual property laws. Pivotal products are covered by
+ * one or more patents listed at http://www.pivotal.io/patents.
+ *=========================================================================
+ */
+package com.vmware.gemfire.tools.pulse.tests;
+
+import java.net.InetAddress;
+
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardHost;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.tomcat.util.IntrospectionUtils;
+
+public class TomcatHelper {
+  public static Tomcat startTomcat(String bindAddress, int port,
+      String context, String path) throws Exception {
+
+    Tomcat tomcat = new Tomcat();
+
+    // Set up logging - first we're going to remove all existing handlers. Don't do this before Tomcat is
+    // instantiated otherwise there isn't anything to remove.
+    /*
+
+    Logger globalLogger = Logger.getLogger("");
+    for (Handler handler : globalLogger.getHandlers()) {
+      globalLogger.removeHandler(handler);
+    }
+
+    // Now let's add our handler
+    Handler gfHandler = new GemFireHandler((LogWriterImpl) log);
+    Logger logger = Logger.getLogger("");
+    logger.addHandler(gfHandler);
+    
+    */
+
+    // Set up for commons-logging which is used by Spring.
+    // This forces JCL to use the JDK logger otherwise it defaults to trying to
+    // use Log4J.
+    if (System.getProperty("org.apache.commons.logging.Log") == null) {
+      System.setProperty("org.apache.commons.logging.Log",
+          "org.apache.commons.logging.impl.Jdk14Logger");
+    }
+
+    if (bindAddress != null && bindAddress.length() > 0) {
+      Connector c = tomcat.getConnector();
+      IntrospectionUtils.setProperty(c, "address", bindAddress);
+    }
+    tomcat.setPort(port);
+
+    // Working (scratch) dir
+    String scratch = System.getProperty("java.io.tmpdir")
+        + System.getProperty("file.separator")
+        + "Pulse_"
+        + ((bindAddress == null || bindAddress.length() == 0) ? "0.0.0.0"
+            : bindAddress) + "_" + port + "_"
+        + String.format("%x", path.hashCode());
+
+    tomcat.setBaseDir(scratch);
+    StandardHost stdHost = (StandardHost) tomcat.getHost();
+    // stdHost.setUnpackWARs(false);
+    // tomcat.addContext(context, path);
+    tomcat.addWebapp(stdHost, context, path);
+    stdHost.setDeployOnStartup(true);
+    tomcat.start();
+
+    return tomcat;
+  }
+
+  public static void main(String[] args) throws Exception {
+    String host = InetAddress.getLocalHost().getHostAddress();
+    int port = 9090;
+    String path = "D:/springsource/springsourceWS/VMware-Pulse-cheetah-dev-jun13/build-artifacts/win/dist/pulse-7.0.1.war";
+    String context = "/pulse";
+    System.setProperty("pulse.propMockDataUpdaterClass",
+        "com.vmware.gemfire.tools.pulse.testbed.PropMockDataUpdater");
+    Tomcat tomcat = TomcatHelper.startTomcat("localhost", port, context, path);
+    Thread.sleep(30000);
+    System.out.println("Sleep completed");
+    System.out.println("Exiting ....");
+    tomcat.stop();
+    tomcat.destroy();
+  }
+}