You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by hi...@apache.org on 2016/09/20 22:34:23 UTC
[06/35] incubator-geode git commit: GEODE-37 renamed pulse package to
geode
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/testbed/driver/PulseUITest.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/testbed/driver/PulseUITest.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/testbed/driver/PulseUITest.java
new file mode 100644
index 0000000..c2d55c3
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/testbed/driver/PulseUITest.java
@@ -0,0 +1,279 @@
+/*
+ * 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 com.vmware.geode.tools.pulse.testbed.driver;
+
+import static com.vmware.geode.tools.pulse.tests.PulseAbstractTest.*;
+import static org.junit.Assert.*;
+
+import java.net.InetAddress;
+import java.util.List;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import org.apache.geode.internal.net.SSLConfigurationFactory;
+import org.apache.geode.internal.security.SecurableCommunicationChannel;
+import org.apache.geode.management.internal.JettyHelper;
+import org.apache.geode.test.junit.categories.UITest;
+import com.vmware.geode.tools.pulse.testbed.GemFireDistributedSystem.Locator;
+import com.vmware.geode.tools.pulse.testbed.GemFireDistributedSystem.Peer;
+import com.vmware.geode.tools.pulse.testbed.GemFireDistributedSystem.Region;
+import com.vmware.geode.tools.pulse.testbed.GemFireDistributedSystem.Server;
+import com.vmware.geode.tools.pulse.testbed.TestBed;
+
+@Ignore("TODO: test is ignored")
+@Category(UITest.class)
+public class PulseUITest {
+
+ private static WebDriver driver;
+ private static TestBed testBed;
+ private static String pulseURL;
+ private static String path;
+ private static org.eclipse.jetty.server.Server jetty = null;
+
+ private static final String userName = "admin";
+ private static final String pasword = "admin";
+
+ 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";
+
+ @BeforeClass
+ public static void setUpJetty() throws Exception {
+ String host = InetAddress.getLocalHost().getHostAddress();
+ int port = 8080;
+ String context = "/pulse";
+ path = getPulseWarPath();
+ //System.setProperty("pulse.propMockDataUpdaterClass", "com.vmware.geode.tools.pulse.testbed.PropMockDataUpdater");
+
+ jetty = JettyHelper.initJetty(host, port, SSLConfigurationFactory.getSSLConfigForComponent(SecurableCommunicationChannel.WEB));
+ JettyHelper.addWebApplication(jetty, context, getPulseWarPath());
+ jetty.start();
+
+ pulseURL = "http://" + host + ":" + port + context;
+ Thread.sleep(1000); //wait till tomcat settles down
+ driver = new FirefoxDriver();
+ driver.manage().window().maximize();//required to make all elements visible
+
+ Thread.sleep(5000); //wait till pulse starts polling threads...
+ testBed = new TestBed();
+ loginToPulse(driver, userName, pasword);
+ }
+
+ @AfterClass
+ public static void stopJetty() throws Exception {
+ jetty.stop();
+ }
+
+ @After
+ public void closeSession() {
+ driver.close();
+ }
+
+ private static void loginToPulse(WebDriver driver, String userName,String password){
+ driver.get(pulseURL);
+ WebElement userNameElement = driver.findElement(By.id("user_name"));
+ WebElement passwordElement = driver.findElement(By.id("user_password"));
+ userNameElement.sendKeys(userName);
+ passwordElement.sendKeys(password);
+ passwordElement.submit();
+ WebElement userNameOnPulsePage = (new WebDriverWait(driver, 10))
+ .until(new ExpectedCondition<WebElement>() {
+ @Override
+ public WebElement apply(WebDriver d) {
+ return d.findElement(By.id("userName"));
+ }
+ });
+ assertNotNull(userNameOnPulsePage);
+ }
+
+
+ private void searchByLinkAndClick(String linkText){
+ WebElement dataViewButton= By.linkText(linkText).findElement(driver);
+ assertNotNull(dataViewButton);
+ dataViewButton.click();
+ }
+
+ private void searchByIdAndClick(String id){
+ WebElement element = driver.findElement(By.id(id));
+ assertNotNull(element);
+ element.click();
+ }
+
+ private void searchByXPathAndClick(String xpath){
+ WebElement element = driver.findElement(By.xpath(xpath));
+ assertNotNull(element);
+ element.click();
+ }
+
+ private 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));
+ }
+ });
+ assertNotNull(linkTextOnPulsePage1);
+ }
+
+ private 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));
+ }
+ });
+ assertNotNull(element);
+ }
+
+ @Test
+ public void testClusterViewTopRibbon() {
+ List<Server> servers = testBed.getRootDs().getServers();
+ List<Locator> locators = testBed.getRootDs().getLocators();
+ List<Peer> peers = testBed.getRootDs().getPeers();
+ List<Region> regions = testBed.getRootDs().getRegions();
+ int totalMembers = servers.size() + locators.size() + peers.size();
+ int clusterMembers = Integer.parseInt(driver.findElement(
+ By.id(CLUSTER_VIEW_MEMBERS_ID)).getText());
+ int clusterServers = Integer.parseInt(driver.findElement(
+ By.id(CLUSTER_VIEW_SERVERS_ID)).getText());
+ int clusterLocators = Integer.parseInt(driver.findElement(
+ By.id(CLUSTER_VIEW_LOCATORS_ID)).getText());
+ int clusterRegions = Integer.parseInt(driver.findElement(
+ By.id(CLUSTER_VIEW_REGIONS_ID)).getText());
+ assertEquals(totalMembers, clusterMembers);
+ assertEquals(servers.size(), clusterServers);
+ assertEquals(locators.size(), clusterLocators);
+ assertEquals(regions.size(), clusterRegions);
+ }
+
+
+ @Test
+ public void testDataViewRegionProperties() {
+ searchByLinkAndClick(DATA_VIEW_LABEL);
+ waitForElementByClassName("pointDetailsPadding",10);
+ searchByIdAndClick("btngridIcon");
+
+ for(int i=1;i<testBed.getRootDs().getRegions().size();i++){
+ searchByIdAndClick(""+i);
+ String regionName1 = driver.findElement(By.id("regionName")).getText();
+ @SuppressWarnings("rawtypes")
+ List regionMemberscount1 = testBed.getRootDs().getRegion(regionName1)
+ .getMembers();
+ int regionEntCount1 = testBed.getRootDs().getRegion(regionName1)
+ .getEntryCount();
+ int regionMembers1 = Integer.parseInt(driver.findElement(
+ By.id("regionMembers")).getText());
+ int regionEntryCount1 = Integer.parseInt(driver.findElement(
+ By.id("regionEntryCount")).getText());
+ assertEquals(regionMemberscount1.size(), regionMembers1);
+ assertEquals(regionEntCount1, regionEntryCount1);
+ }
+ }
+
+
+ @Test
+ public void testMemberViewRegions() {
+
+ searchByLinkAndClick(DATA_VIEW_LABEL);
+ waitForElementByClassName("pointDetailsPadding",10);
+ searchByXPathAndClick("//div[@title='peer1']");
+ waitForElementById("memberRegionsCount",10);
+
+ List<Server> servers = testBed.getRootDs().getServers();
+ List<Locator> locators = testBed.getRootDs().getLocators();
+ List<Peer> peers = testBed.getRootDs().getPeers();
+
+ String prevSelectedMember = "peer1";
+
+ for (Peer p : peers) {
+ String peer = p.getName();
+ System.out.println("Checking regions mapping for member " + peer);
+ WebElement comboBox = driver.findElement(By.linkText(prevSelectedMember));
+ comboBox.click();
+ WebElement comboList = driver.findElement(By.id("clusterMembersContainer"));
+ WebElement selectedMember = comboList.findElement(By.linkText(peer));
+ selectedMember.click();
+ timeout();
+ String peername = driver.findElement(By.id("memberName")).getText();
+ List<Region> peerRegionscount = testBed.getRootDs().getRegions(peer);
+ int peerRegions = Integer.parseInt(driver.findElement(
+ By.id("memberRegionsCount")).getText());
+ assertEquals(peerRegionscount.size(), peerRegions);
+ prevSelectedMember = peername;
+ }
+
+ for (Server s : servers) {
+ String server = s.getName();
+ System.out.println("Checking regions mapping for server " + server);
+ WebElement comboBox = driver.findElement(By.linkText(prevSelectedMember));
+ comboBox.click();
+ WebElement comboList = driver.findElement(By.id("clusterMembersContainer"));
+ WebElement selectedMember = comboList.findElement(By.linkText(server));
+ selectedMember.click();
+ timeout();
+ String peername = driver.findElement(By.id("memberName")).getText();
+ List<Region> serverRegionscount = testBed.getRootDs().getRegions(server);
+ int serverRegions = Integer.parseInt(driver.findElement(
+ By.id("memberRegionsCount")).getText());
+ assertEquals(serverRegionscount.size(), serverRegions);
+ prevSelectedMember = peername;
+ }
+ /*
+ for (Locator l : locators) {
+ String locator = l.getName();
+ System.out.println("Checking regions mapping for locator " + locator);
+ WebElement comboBox = driver.findElement(By.linkText(prevSelectedMember));
+ comboBox.click();
+ WebElement comboList = driver.findElement(By.id("clusterMembersContainer"));
+ WebElement selectedMember = comboList.findElement(By.linkText(locator));
+ selectedMember.click();
+ timeout();
+ String peername = driver.findElement(By.id("memberName")).getText();
+ List<Region> locatorRegionscount = testBed.getRootDs().getRegions(locator);
+ int locatorRegions = Integer.parseInt(driver.findElement(
+ By.id("memberRegionsCount")).getText());
+ assertIndexDetailsEquals(locatorRegionscount.size(), locatorRegions);
+ prevSelectedMember = peername;
+ }*/
+ }
+
+ public void timeout() {
+ WebElement memberNameOnPulsePage = (new WebDriverWait(driver, 10))
+ .until(new ExpectedCondition<WebElement>() {
+ @Override
+ public WebElement apply(WebDriver d) {
+ return d.findElement(By.id("memberName"));
+ }
+ });
+ assertNotNull(memberNameOnPulsePage);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatement.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatement.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatement.java
new file mode 100644
index 0000000..ebd310d
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatement.java
@@ -0,0 +1,217 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public class AggregateStatement extends JMXBaseBean implements AggregateStatementMBean {
+ private String name = null;
+
+ public AggregateStatement(String name) {
+ this.name = name;
+ }
+
+ protected String getKey(String propName) {
+ return "aggregatestatement." + name + "." + propName;
+ }
+
+ /**
+ * Query definition
+ *
+ * @return
+ */
+ public String getQueryDefinition(){
+ return getString("queryDefinition");
+ }
+
+ /**
+ * Number of times this statement is compiled (including re compilations)
+ *
+ * @return
+ */
+ @Override
+ public long getNumTimesCompiled(){
+ return getLong("numTimesCompiled");
+ }
+
+ /**
+ * Number of times this statement is executed
+ *
+ * @return
+ */
+ @Override
+ public long getNumExecution(){
+ return getLong("numExecution");
+ }
+
+ /**
+ * Statements that are actively being processed during the statistics snapshot
+ *
+ * @return
+ */
+ public long getNumExecutionsInProgress(){
+ return getLong("numExecutionsInProgress");
+ }
+
+ /**
+ * Number of times global index lookup message exchanges occurred
+ *
+ * @return
+ */
+ public long getNumTimesGlobalIndexLookup(){
+ return getLong("numTimesGlobalIndexLookup");
+ }
+
+ /**
+ * Number of rows modified by DML operation of insert/delete/update
+ *
+ * @return
+ */
+ public long getNumRowsModified(){
+ return getLong("numRowsModified");
+ }
+
+ /**
+ * Time spent(in milliseconds) in parsing the query string
+ *
+ * @return
+ */
+ public long getParseTime(){
+ return getLong("parseTime");
+ }
+
+ /**
+ * Time spent (in milliseconds) mapping this statement with database object's metadata (bind)
+ *
+ * @return
+ */
+ public long getBindTime(){
+ return getLong("bindTime");
+ }
+
+ /**
+ * Time spent (in milliseconds) determining the best execution path for this statement
+ * (optimize)
+ *
+ * @return
+ */
+ public long getOptimizeTime(){
+ return getLong("optimizeTime");
+ }
+
+ /**
+ * Time spent (in milliseconds) compiling details about routing information of query strings to
+ * data node(s) (processQueryInfo)
+ *
+ * @return
+ */
+ public long getRoutingInfoTime(){
+ return getLong("routingInfoTime");
+ }
+
+ /**
+ * Time spent (in milliseconds) to generate query execution plan definition (activation class)
+ *
+ * @return
+ */
+ public long getGenerateTime(){
+ return getLong("generateTime");
+ }
+
+ /**
+ * Total compilation time (in milliseconds) of the statement on this node (prepMinion)
+ *
+ * @return
+ */
+ public long getTotalCompilationTime(){
+ return getLong("totalCompilationTime");
+ }
+
+ /**
+ * Time spent (in nanoseconds) in creation of all the layers of query processing (ac.execute)
+ *
+ * @return
+ */
+ public long getExecutionTime(){
+ return getLong("executionTime");
+ }
+
+ /**
+ * Time to apply (in nanoseconds) the projection and additional filters. (projectrestrict)
+ *
+ * @return
+ */
+ public long getProjectionTime(){
+ return getLong("projectionTime");
+ }
+
+ /**
+ * Total execution time (in nanoseconds) taken to process the statement on this node
+ * (execute/open/next/close)
+ *
+ * @return
+ */
+ public long getTotalExecutionTime(){
+ return getLong("totalExecutionTime");
+ }
+
+ /**
+ * Time taken (in nanoseconds) to modify rows by DML operation of insert/delete/update
+ *
+ * @return
+ */
+ public long getRowsModificationTime(){
+ return getLong("rowsModificationTime");
+ }
+
+ /**
+ * Number of rows returned from remote nodes (ResultHolder/Get convertibles)
+ *
+ * @return
+ */
+ public long getQNNumRowsSeen(){
+ return getLong("qnNumRowsSeen");
+ }
+
+ /**
+ * TCP send time (in nanoseconds) of all the messages including serialization time and queue
+ * wait time
+ *
+ * @return
+ */
+ public long getQNMsgSendTime(){
+ return getLong("qnMsgSendTime");
+ }
+
+ /**
+ * Serialization time (in nanoseconds) for all the messages while sending to remote node(s)
+ *
+ * @return
+ */
+ public long getQNMsgSerTime(){
+ return getLong("qnMsgSerTime");
+ }
+
+ /**
+ *
+ *
+ * @return
+ */
+ public long getQNRespDeSerTime(){
+ return getLong("qnRespDeSerTime");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatementMBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatementMBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatementMBean.java
new file mode 100644
index 0000000..b58b53b
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/AggregateStatementMBean.java
@@ -0,0 +1,168 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public interface AggregateStatementMBean {
+ String OBJECT_NAME = "GemFireXD:service=Statement,type=Aggregate";
+
+ /**
+ * Query definition
+ *
+ * @return
+ */
+ String getQueryDefinition();
+
+ /**
+ * Number of times this statement is compiled (including re compilations)
+ *
+ * @return
+ */
+ long getNumTimesCompiled();
+
+ /**
+ * Number of times this statement is executed
+ *
+ * @return
+ */
+ long getNumExecution();
+
+ /**
+ * Statements that are actively being processed during the statistics snapshot
+ *
+ * @return
+ */
+ long getNumExecutionsInProgress();
+
+ /**
+ * Number of times global index lookup message exchanges occurred
+ *
+ * @return
+ */
+ long getNumTimesGlobalIndexLookup();
+
+ /**
+ * Number of rows modified by DML operation of insert/delete/update
+ *
+ * @return
+ */
+ long getNumRowsModified();
+
+ /**
+ * Time spent(in milliseconds) in parsing the query string
+ *
+ * @return
+ */
+ long getParseTime();
+
+ /**
+ * Time spent (in milliseconds) mapping this statement with database object's metadata (bind)
+ *
+ * @return
+ */
+ long getBindTime();
+
+ /**
+ * Time spent (in milliseconds) determining the best execution path for this statement
+ * (optimize)
+ *
+ * @return
+ */
+ long getOptimizeTime();
+
+ /**
+ * Time spent (in milliseconds) compiling details about routing information of query strings to
+ * data node(s) (processQueryInfo)
+ *
+ * @return
+ */
+ long getRoutingInfoTime();
+
+ /**
+ * Time spent (in milliseconds) to generate query execution plan definition (activation class)
+ *
+ * @return
+ */
+ long getGenerateTime();
+
+ /**
+ * Total compilation time (in milliseconds) of the statement on this node (prepMinion)
+ *
+ * @return
+ */
+ long getTotalCompilationTime();
+
+ /**
+ * Time spent (in nanoseconds) in creation of all the layers of query processing (ac.execute)
+ *
+ * @return
+ */
+ long getExecutionTime();
+
+ /**
+ * Time to apply (in nanoseconds) the projection and additional filters. (projectrestrict)
+ *
+ * @return
+ */
+ long getProjectionTime();
+
+ /**
+ * Total execution time (in nanoseconds) taken to process the statement on this node
+ * (execute/open/next/close)
+ *
+ * @return
+ */
+ long getTotalExecutionTime();
+
+ /**
+ * Time taken (in nanoseconds) to modify rows by DML operation of insert/delete/update
+ *
+ * @return
+ */
+ long getRowsModificationTime();
+
+ /**
+ * Number of rows returned from remote nodes (ResultHolder/Get convertibles)
+ *
+ * @return
+ */
+ long getQNNumRowsSeen();
+
+ /**
+ * TCP send time (in nanoseconds) of all the messages including serialization time and queue
+ * wait time
+ *
+ * @return
+ */
+ long getQNMsgSendTime();
+
+ /**
+ * Serialization time (in nanoseconds) for all the messages while sending to remote node(s)
+ *
+ * @return
+ */
+ long getQNMsgSerTime();
+
+ /**
+ *
+ *
+ * @return
+ */
+ long getQNRespDeSerTime();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/DataBrowserResultLoader.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/DataBrowserResultLoader.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/DataBrowserResultLoader.java
new file mode 100644
index 0000000..09fbda3
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/DataBrowserResultLoader.java
@@ -0,0 +1,84 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+public class DataBrowserResultLoader {
+ private static DataBrowserResultLoader dbResultLoader = new DataBrowserResultLoader();
+
+ public static DataBrowserResultLoader getInstance() {
+ return dbResultLoader;
+ }
+
+ public String load(String queryString) throws IOException {
+
+ URL url = null;
+ InputStream inputStream = null;
+ BufferedReader streamReader = null;
+ String inputStr = null;
+ StringBuilder sampleQueryResultResponseStrBuilder = null;
+
+ try {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+ if (queryString.equals(PulseAbstractTest.QUERY_TYPE_ONE)) {
+ url = classLoader.getResource("testQueryResultClusterSmall.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_TWO)) {
+ url = classLoader.getResource("testQueryResultSmall.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_THREE)) {
+ url = classLoader.getResource("testQueryResult.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_FOUR)) {
+ url = classLoader.getResource("testQueryResultWithStructSmall.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_FIVE)) {
+ url = classLoader.getResource("testQueryResultClusterWithStruct.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_SIX)) {
+ url = classLoader.getResource("testQueryResultHashMapSmall.txt");
+ } else if (queryString.equals(PulseAbstractTest.QUERY_TYPE_SEVENE)) {
+ url = classLoader.getResource("testQueryResult1000.txt");
+ } else {
+ url = classLoader.getResource("testQueryResult.txt");
+ }
+
+ File sampleQueryResultFile = new File(url.getPath());
+ inputStream = new FileInputStream(sampleQueryResultFile);
+ streamReader = new BufferedReader(new InputStreamReader(inputStream,
+ "UTF-8"));
+ sampleQueryResultResponseStrBuilder = new StringBuilder();
+
+ while ((inputStr = streamReader.readLine()) != null) {
+ sampleQueryResultResponseStrBuilder.append(inputStr);
+ }
+
+ // close stream reader
+ streamReader.close();
+
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+
+ return sampleQueryResultResponseStrBuilder.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTable.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTable.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTable.java
new file mode 100644
index 0000000..957d074
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTable.java
@@ -0,0 +1,46 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+import javax.management.NotificationBroadcasterSupport;
+
+public class GemFireXDAggregateTable extends NotificationBroadcasterSupport
+ implements GemFireXDAggregateTableMBean {
+ private String name = null;
+
+ public GemFireXDAggregateTable(String name) {
+ this.name = name;
+ }
+
+ private String getKey(String propName) {
+ return "table." + name + "." + propName;
+ }
+
+ @Override
+ public long getEntrySize() {
+ return Long.parseLong(JMXProperties.getInstance().getProperty(
+ getKey("EntrySize")));
+ }
+
+ @Override
+ public int getNumberOfRows() {
+ return Integer.parseInt(JMXProperties.getInstance().getProperty(
+ getKey("NumberOfRows")));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTableMBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTableMBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTableMBean.java
new file mode 100644
index 0000000..db0f45d
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDAggregateTableMBean.java
@@ -0,0 +1,28 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public interface GemFireXDAggregateTableMBean {
+ public static final String OBJECT_NAME = "GemFireXD:service=Table,type=Aggregate,table=";
+
+ public long getEntrySize();
+
+ public int getNumberOfRows();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDCluster.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDCluster.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDCluster.java
new file mode 100644
index 0000000..a2b1edc
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDCluster.java
@@ -0,0 +1,95 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+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;
+
+public class GemFireXDCluster extends NotificationBroadcasterSupport implements
+ GemFireXDClusterMBean {
+ private String name = null;
+
+ private static String[] itemNames = { "connectionsAttempted",
+ "connectionsActive", "connectionsClosed", "connectionsFailed" };;
+ private static String[] itemDescriptions = { "connectionsAttempted",
+ "connectionsActive", "connectionsClosed", "connectionsFailed" };
+ private static OpenType[] itemTypes = { SimpleType.LONG, SimpleType.LONG,
+ SimpleType.LONG, SimpleType.LONG };
+ private static CompositeType networkServerClientConnectionStats = null;
+
+ static {
+ try {
+ networkServerClientConnectionStats = new CompositeType(
+ "NetworkServerClientConnectionStats",
+ "Network Server Client Connection Stats Information", itemNames,
+ itemDescriptions, itemTypes);
+
+ } catch (OpenDataException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public GemFireXDCluster(String name) {
+ this.name = name;
+ }
+
+ private String getKey(String propName) {
+ return "gemfirexd." + name + "." + propName;
+ }
+
+ @Override
+ public int getProcedureCallsCompleted() {
+ return Integer.parseInt(JMXProperties.getInstance().getProperty(
+ getKey("ProcedureCallsCompleted")));
+ }
+
+ @Override
+ public int getProcedureCallsInProgress() {
+ return Integer.parseInt(JMXProperties.getInstance().getProperty(
+ getKey("ProcedureCallsInProgress")));
+ }
+
+ @Override
+ public CompositeData getNetworkServerClientConnectionStats() {
+ String value = JMXProperties.getInstance().getProperty(
+ getKey("NetworkServerClientConnectionStats"), "");
+ String[] values = value.split(",");
+ Long[] itemValues = new Long[values.length];
+ for (int i = 0; i < values.length; i++) {
+ itemValues[i] = Long.parseLong(values[i]);
+ }
+
+ CompositeData nscCompData;
+ try {
+ nscCompData = new CompositeDataSupport(
+ networkServerClientConnectionStats, itemNames, itemValues);
+ } catch (OpenDataException e) {
+ e.printStackTrace();
+ nscCompData = null;
+ }
+ return nscCompData;
+
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDClusterMBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDClusterMBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDClusterMBean.java
new file mode 100644
index 0000000..5a42d10
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDClusterMBean.java
@@ -0,0 +1,32 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+import javax.management.openmbean.CompositeData;
+
+public interface GemFireXDClusterMBean {
+ public static final String OBJECT_NAME = "GemFireXD:service=Cluster";
+
+ public int getProcedureCallsCompleted();
+
+ public int getProcedureCallsInProgress();
+
+ public CompositeData getNetworkServerClientConnectionStats();
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMember.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMember.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMember.java
new file mode 100644
index 0000000..16da77d
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMember.java
@@ -0,0 +1,80 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+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 GemFireXDMember extends JMXBaseBean implements
+ GemFireXDMemberMBean {
+ private String name = null;
+
+ private static String[] itemNames = { "connectionsAttempted",
+ "connectionsActive", "connectionsClosed", "connectionsFailed" };;
+ private static String[] itemDescriptions = { "connectionsAttempted",
+ "connectionsActive", "connectionsClosed", "connectionsFailed" };
+ private static OpenType[] itemTypes = { SimpleType.LONG, SimpleType.LONG,
+ SimpleType.LONG, SimpleType.LONG };
+ private static CompositeType networkServerClientConnectionStats = null;
+
+ static {
+ try {
+ networkServerClientConnectionStats = new CompositeType(
+ "NetworkServerClientConnectionStats",
+ "Network Server Client Connection Stats Information", itemNames,
+ itemDescriptions, itemTypes);
+
+ } catch (OpenDataException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public GemFireXDMember(String name) {
+ this.name = name;
+ }
+
+ @Override
+ protected String getKey(String propName) {
+ return "gemfirexdmember." + name + "." + propName;
+ }
+
+ @Override
+ public boolean getDataStore() {
+ return getBoolean("DataStore");
+ }
+
+ @Override
+ public CompositeData getNetworkServerClientConnectionStats() {
+ Long[] itemValues = getLongArray("NetworkServerClientConnectionStats");
+ CompositeData nscCompData;
+ try {
+ nscCompData = new CompositeDataSupport(
+ networkServerClientConnectionStats, itemNames, itemValues);
+ } catch (OpenDataException e) {
+ e.printStackTrace();
+ nscCompData = null;
+ }
+ return nscCompData;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMemberMBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMemberMBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMemberMBean.java
new file mode 100644
index 0000000..ceda56d
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/GemFireXDMemberMBean.java
@@ -0,0 +1,31 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+import javax.management.openmbean.CompositeData;
+
+public interface GemFireXDMemberMBean {
+
+ public static final String OBJECT_NAME = "GemFireXD:group=DEFAULT,type=Member";
+
+ public boolean getDataStore();
+
+ public CompositeData getNetworkServerClientConnectionStats();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXBaseBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXBaseBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXBaseBean.java
new file mode 100644
index 0000000..2d1ffad
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXBaseBean.java
@@ -0,0 +1,67 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public abstract class JMXBaseBean {
+
+ protected abstract String getKey(String propName);
+
+ protected String getString(String key) {
+ return JMXProperties.getInstance().getProperty(getKey(key));
+ }
+
+ protected String[] getStringArray(String key) {
+ return JMXProperties.getInstance().getProperty(getKey(key), "").split(" ");
+ }
+
+ protected boolean getBoolean(String key) {
+ return Boolean.parseBoolean(JMXProperties.getInstance().getProperty(
+ getKey(key)));
+ }
+
+ protected int getInt(String key) {
+ return Integer.parseInt(JMXProperties.getInstance()
+ .getProperty(getKey(key)));
+ }
+
+ protected long getLong(String key) {
+ return Long.parseLong(JMXProperties.getInstance().getProperty(getKey(key)));
+ }
+
+ protected Long[] getLongArray(String key) {
+ String value = JMXProperties.getInstance().getProperty(getKey(key), "");
+ String[] values = value.split(",");
+ Long[] longValues = new Long[values.length];
+ for (int i = 0; i < values.length; i++) {
+ longValues[i] = Long.parseLong(values[i]);
+ }
+ return longValues;
+ }
+
+ protected double getDouble(String key) {
+ return Double.parseDouble(JMXProperties.getInstance().getProperty(
+ getKey(key)));
+ }
+
+ protected float getFloat(String key) {
+ return Float.parseFloat(JMXProperties.getInstance()
+ .getProperty(getKey(key)));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXProperties.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXProperties.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXProperties.java
new file mode 100644
index 0000000..1562594
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/JMXProperties.java
@@ -0,0 +1,47 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.Properties;
+
+public class JMXProperties extends Properties {
+ private static final long serialVersionUID = -6210901350494570026L;
+
+ private static JMXProperties props = new JMXProperties();
+
+ public static JMXProperties getInstance() {
+ return props;
+ }
+
+ public void load(String propFile) throws IOException {
+ if (propFile != null) {
+ FileInputStream fin;
+ fin = new FileInputStream(new File(propFile));
+ if (fin != null) {
+ clear();
+ load(fin);
+ }
+
+ fin.close();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/Member.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/Member.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/Member.java
new file mode 100644
index 0000000..1192297
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/Member.java
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public class Member extends JMXBaseBean implements MemberMBean {
+ private String name = null;
+
+ public Member(String name) {
+ this.name = name;
+ }
+
+ protected String getKey(String propName) {
+ return "member." + name + "." + propName;
+ }
+
+ @Override
+ public boolean getManager() {
+ return getBoolean("manager");
+ }
+
+ @Override
+ public int getTotalRegionCount() {
+// This count is built dynamically in Pulse backend and region count is maintained in Cluster.Member data structure
+// return getInt("totalRegionCount");
+ return 0;
+ }
+
+ @Override
+ public boolean getLocator() {
+ return getBoolean("locator");
+ }
+
+ @Override
+ public long getTotalDiskUsage() {
+ return getLong("totalDiskUsage");
+ }
+
+ @Override
+ public boolean getServer() {
+ return getBoolean("sever");
+ }
+
+ @Override
+ public String[] getGroups() {
+ return getStringArray("Groups");
+ }
+
+ @Override
+ /*public String[] getRedundancyZone() {
+ return getStringArray("RedundancyZone");
+ }*/
+ public String getRedundancyZone() {
+ return getString("RedundancyZone");
+ }
+
+ @Override
+ public long getTotalFileDescriptorOpen() {
+ return getLong("totalFileDescriptorOpen");
+ }
+
+ @Override
+ public double getLoadAverage() {
+ return getDouble("loadAverage");
+ }
+
+ @Override
+ public double getDiskWritesRate() {
+ return getDouble("diskWritesRate");
+ }
+
+ @Override
+ public long getJVMPauses() {
+ return getLong("JVMPauses");
+ }
+
+ @Override
+ public long getCurrentHeapSize() {
+// return getLong("currentHeapSize");
+ return getLong("UsedMemory");
+ }
+
+ @Override
+ public long getMaximumHeapSize() {
+// return getLong("maximumHeapSize");
+ return getLong("MaxMemory");
+ }
+
+ @Override
+ public long getUsedMemory() {
+ return getLong("UsedMemory");
+ }
+
+ @Override
+ public long getMaxMemory() {
+ return getLong("MaxMemory");
+ }
+
+ @Override
+ public int getNumThreads() {
+ return getInt("numThreads");
+ }
+
+ @Override
+ public long getMemberUpTime() {
+ return getLong("memberUpTime");
+ }
+
+ @Override
+ public String getHost() {
+ return getString("host");
+ }
+
+ @Override
+ public long getTotalBytesOnDisk() {
+ return getLong("totalBytesOnDisk");
+ }
+
+ @Override
+ public double getCpuUsage() {
+ return getDouble("cpuUsage");
+ }
+
+ @Override
+ public String getMember() {
+ return getString("member");
+ }
+
+ @Override
+ public String getId() {
+ return getString("id");
+ }
+
+ @Override
+ public double getAverageReads() {
+ return getDouble("averageReads");
+ }
+
+ @Override
+ public double getAverageWrites() {
+ return getDouble("averageWrites");
+ }
+
+ @Override
+ public int getPort() {
+ return getInt("port");
+ }
+
+ @Override
+ public long getFoo() {
+ return getLong("foo");
+ }
+
+ @Override
+ public long getOffHeapFreeSize() {
+ return getLong("OffHeapFreeSize");
+ }
+
+ @Override
+ public long getOffHeapUsedSize() {
+ return getLong("OffHeapUsedSize");
+ }
+
+ @Override
+ public long getOffHeapFreeMemory() {
+ return getLong("OffHeapFreeMemory");
+ }
+
+ @Override
+ public long getOffHeapUsedMemory() {
+ return getLong("OffHeapUsedMemory");
+ }
+
+ @Override
+ public String getVersion() {
+ return getString("Version");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/9a2b5d7b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/MemberMBean.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/MemberMBean.java b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/MemberMBean.java
new file mode 100644
index 0000000..6051270
--- /dev/null
+++ b/geode-pulse/src/test/java/org/apache/geode/tools/pulse/tests/MemberMBean.java
@@ -0,0 +1,86 @@
+/*
+ *
+ * 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 com.vmware.geode.tools.pulse.tests;
+
+public interface MemberMBean {
+ String OBJECT_NAME = "GemFire:type=Member";
+
+ boolean getManager();
+
+ int getTotalRegionCount();
+
+ boolean getLocator();
+
+ long getTotalDiskUsage();
+
+ boolean getServer();
+
+ String[] getGroups();
+
+ //public String[] getRedundancyZone();
+ String getRedundancyZone();
+
+ long getTotalFileDescriptorOpen();
+
+ double getLoadAverage();
+
+ double getDiskWritesRate();
+
+ long getJVMPauses();
+
+ long getCurrentHeapSize();
+
+ long getMaximumHeapSize();
+
+ long getUsedMemory();
+
+ long getMaxMemory();
+
+ int getNumThreads();
+
+ long getMemberUpTime();
+
+ String getHost();
+
+ long getTotalBytesOnDisk();
+
+ double getCpuUsage();
+
+ String getMember();
+
+ String getId();
+
+ double getAverageReads();
+
+ double getAverageWrites();
+
+ int getPort();
+
+ long getFoo();
+
+ long getOffHeapFreeSize();
+
+ long getOffHeapUsedSize();
+
+ long getOffHeapFreeMemory();
+
+ long getOffHeapUsedMemory();
+
+ String getVersion();
+}