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/02/23 23:06:12 UTC
[07/10] incubator-geode git commit: GEODE-907: Added tests to support
impending refactor
GEODE-907: Added tests to support impending refactor
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/0f272db0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/0f272db0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/0f272db0
Branch: refs/heads/develop
Commit: 0f272db088857c09709c1bedd7afe5ba0050d103
Parents: 6e1b05c
Author: Jens Deppe <jd...@pivotal.io>
Authored: Thu Feb 18 06:18:35 2016 -0800
Committer: Jens Deppe <jd...@pivotal.io>
Committed: Tue Feb 23 14:04:50 2016 -0800
----------------------------------------------------------------------
geode-pulse/build.gradle | 56 +-
.../internal/controllers/PulseController.java | 6 +-
.../tools/pulse/internal/data/Cluster.java | 6 +
.../tools/pulse/internal/data/DataBrowser.java | 8 +-
.../tools/pulse/internal/data/PulseConfig.java | 14 +
.../controllers/PulseControllerJUnitTest.java | 756 +++++++++++++++++++
gradle/dependency-versions.properties | 3 +-
7 files changed, 813 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/build.gradle
----------------------------------------------------------------------
diff --git a/geode-pulse/build.gradle b/geode-pulse/build.gradle
index ebd851a..cd3a744 100755
--- a/geode-pulse/build.gradle
+++ b/geode-pulse/build.gradle
@@ -26,35 +26,39 @@ sourceSets {
}
dependencies {
- compile 'commons-beanutils:commons-beanutils:'+project.'commons-beanutils.version'
- compile 'commons-collections:commons-collections:'+project.'commons-collections.version'
- compile 'commons-digester:commons-digester:'+project.'commons-digester.version'
- compile 'commons-lang:commons-lang:'+project.'commons-lang.version'
- compile 'org.springframework.ldap:spring-ldap-core:'+project.'spring-ldap-core.version'
- compile 'org.springframework.security:spring-security-config:'+project.'spring-security.version'
- compile 'org.springframework.security:spring-security-core:'+project.'spring-security.version'
- compile 'org.springframework.security:spring-security-ldap:'+project.'spring-security.version'
- compile 'org.springframework.security:spring-security-web:'+project.'spring-security.version'
- compile 'org.springframework:spring-tx:'+project.'spring-tx.version'
-
- providedCompile 'commons-logging:commons-logging:'+project.'commons-logging.version'
-
- provided 'org.mortbay.jetty:servlet-api:'+project.'mortbay-jetty-servlet-api.version'
- provided 'com.google.guava:guava:'+project.'guava.version'
+ compile 'commons-beanutils:commons-beanutils:' + project.'commons-beanutils.version'
+ compile 'commons-collections:commons-collections:' + project.'commons-collections.version'
+ compile 'commons-digester:commons-digester:' + project.'commons-digester.version'
+ compile 'commons-lang:commons-lang:' + project.'commons-lang.version'
+ compile 'org.springframework.ldap:spring-ldap-core:' + project.'spring-ldap-core.version'
+ compile 'org.springframework.security:spring-security-config:' + project.'spring-security.version'
+ compile 'org.springframework.security:spring-security-core:' + project.'spring-security.version'
+ compile 'org.springframework.security:spring-security-ldap:' + project.'spring-security.version'
+ compile 'org.springframework.security:spring-security-web:' + project.'spring-security.version'
+ compile 'org.springframework:spring-tx:' + project.'spring-tx.version'
+
+ providedCompile 'commons-logging:commons-logging:' + project.'commons-logging.version'
+
+ provided 'org.mortbay.jetty:servlet-api:' + project.'mortbay-jetty-servlet-api.version'
+ provided 'com.google.guava:guava:' + project.'guava.version'
testCompile project(':geode-junit')
- testCompile 'org.apache.tomcat.embed:tomcat-embed-core:'+project.'tomcat7.version'
- testCompile 'org.apache.tomcat.embed:tomcat-embed-jasper:'+project.'tomcat7.version'
- testCompile 'org.apache.tomcat.embed:tomcat-embed-logging-juli:'+project.'tomcat7.version'
- testCompile 'org.seleniumhq.selenium:selenium-firefox-driver:'+project.'selenium.version'
- testCompile 'org.seleniumhq.selenium:selenium-api:'+project.'selenium.version'
- testCompile 'org.seleniumhq.selenium:selenium-remote-driver:'+project.'selenium.version'
- testCompile 'org.seleniumhq.selenium:selenium-support:'+project.'selenium.version'
-
- testRuntime 'com.google.code.gson:gson:'+project.'google-gson.version'
- testRuntime 'org.apache.commons:commons-exec:'+project.'commons-exec.version'
-
+ testCompile 'org.apache.tomcat.embed:tomcat-embed-core:' + project.'tomcat7.version'
+ testCompile 'org.apache.tomcat.embed:tomcat-embed-jasper:' + project.'tomcat7.version'
+ testCompile 'org.apache.tomcat.embed:tomcat-embed-logging-juli:' + project.'tomcat7.version'
+ testCompile 'org.seleniumhq.selenium:selenium-firefox-driver:' + project.'selenium.version'
+ testCompile 'org.seleniumhq.selenium:selenium-api:' + project.'selenium.version'
+ testCompile 'org.seleniumhq.selenium:selenium-remote-driver:' + project.'selenium.version'
+ testCompile 'org.seleniumhq.selenium:selenium-support:' + project.'selenium.version'
+ testCompile 'org.springframework:spring-test:' + project.'springframework.version'
+ testCompile 'org.powermock:powermock-core:' + project.'powermock.version'
+ testCompile 'org.powermock:powermock-module-junit4:' + project.'powermock.version'
+ testCompile 'org.powermock:powermock-api-mockito:' + project.'powermock.version'
+
+ testRuntime 'com.google.code.gson:gson:' + project.'google-gson.version'
+ testRuntime 'org.apache.commons:commons-exec:' + project.'commons-exec.version'
+ testRuntime 'com.jayway.jsonpath:json-path:' + project.'json-path.version'
}
def generatedResources = "$buildDir/generated-resources/main"
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/controllers/PulseController.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/controllers/PulseController.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/controllers/PulseController.java
index c8737ce..6abb2de 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/controllers/PulseController.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/controllers/PulseController.java
@@ -117,7 +117,7 @@ public class PulseController {
+ ((requestMap == null) ? "" : requestMap) });
} catch (Exception e) {
if (LOGGER.fineEnabled()) {
- LOGGER.fine("Exception Occured : " + e.getMessage());
+ LOGGER.fine("Exception Occurred : " + e.getMessage());
}
}
@@ -140,7 +140,7 @@ public class PulseController {
LOGGER.logJSONError(eJSON, null);
} catch (Exception e) {
if (LOGGER.fineEnabled()) {
- LOGGER.fine("Exception Occured : " + e.getMessage());
+ LOGGER.fine("Exception Occurred : " + e.getMessage());
}
}
}
@@ -253,7 +253,7 @@ public class PulseController {
LOGGER.logJSONError(eJSON, null);
} catch (Exception e) {
if (LOGGER.fineEnabled()) {
- LOGGER.fine("Exception Occured : " + e.getMessage());
+ LOGGER.fine("Exception Occurred : " + e.getMessage());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/Cluster.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/Cluster.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/Cluster.java
index 732a1b0..309fdf7 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/Cluster.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/Cluster.java
@@ -2337,6 +2337,12 @@ public class Cluster extends Thread {
}
}
+ /**
+ * Default constructor only used for testing
+ */
+ public Cluster() {
+ }
+
/**
* This function is used for calling getUpdator function of ClusterDataFactory
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
index dbad2df..f3b4493 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/DataBrowser.java
@@ -49,10 +49,6 @@ public class DataBrowser {
private final ResourceBundle resourceBundle = Repository.get()
.getResourceBundle();
- private final String queryHistoryFile = PulseConstants.PULSE_QUERY_HISTORY_FILE_LOCATION
- + System.getProperty("file.separator")
- + PulseConstants.PULSE_QUERY_HISTORY_FILE_NAME;
-
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
PulseConstants.PULSE_QUERY_HISTORY_DATE_PATTERN);
@@ -198,7 +194,7 @@ public class DataBrowser {
JSONObject queriesJSON = new JSONObject();
try {
- inputStream = new FileInputStream(queryHistoryFile);
+ inputStream = new FileInputStream(Repository.get().getPulseConfig().getQueryHistoryFileName());
String inputStreamString = new Scanner(inputStream, "UTF-8")
.useDelimiter("\\A").next();
queriesJSON = new JSONObject(inputStreamString);
@@ -237,7 +233,7 @@ public class DataBrowser {
boolean operationStatus = false;
FileOutputStream fileOut = null;
- File file = new File(queryHistoryFile);
+ File file = new File(Repository.get().getPulseConfig().getQueryHistoryFileName());
try {
fileOut = new FileOutputStream(file);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/PulseConfig.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/PulseConfig.java b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/PulseConfig.java
index 627e37c..4470f7f 100644
--- a/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/PulseConfig.java
+++ b/geode-pulse/src/main/java/com/vmware/gemfire/tools/pulse/internal/data/PulseConfig.java
@@ -53,6 +53,9 @@ public class PulseConfig {
// Flag for appending log messages
private Boolean logAppend;
+ // Query history log file
+ private String queryHistoryFileName;
+
public PulseConfig() {
this.setLogFileName(PulseConstants.PULSE_LOG_FILE_NAME);
this.LogFileLocation = PulseConstants.PULSE_LOG_FILE_LOCATION;
@@ -61,6 +64,10 @@ public class PulseConfig {
this.logDatePattern = PulseConstants.PULSE_LOG_MESSAGE_DATE_PATTERN;
this.logLevel = PulseConstants.PULSE_LOG_LEVEL;
this.logAppend = PulseConstants.PULSE_LOG_APPEND;
+ this.queryHistoryFileName = PulseConstants.PULSE_QUERY_HISTORY_FILE_LOCATION
+ + System.getProperty("file.separator")
+ + PulseConstants.PULSE_QUERY_HISTORY_FILE_NAME;
+
}
public String getLogFileName() {
@@ -123,4 +130,11 @@ public class PulseConfig {
this.logAppend = logAppend;
}
+ public String getQueryHistoryFileName() {
+ return queryHistoryFileName;
+ }
+
+ public void setQueryHistoryFileName(String queryHistoryFileName) {
+ this.queryHistoryFileName = queryHistoryFileName;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/controllers/PulseControllerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/controllers/PulseControllerJUnitTest.java b/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/controllers/PulseControllerJUnitTest.java
new file mode 100644
index 0000000..c4f7a49
--- /dev/null
+++ b/geode-pulse/src/test/java/com/vmware/gemfire/tools/pulse/controllers/PulseControllerJUnitTest.java
@@ -0,0 +1,756 @@
+package com.vmware.gemfire.tools.pulse.controllers;
+
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+import com.vmware.gemfire.tools.pulse.internal.PulseAppListener;
+import com.vmware.gemfire.tools.pulse.internal.data.Cluster;
+import com.vmware.gemfire.tools.pulse.internal.data.PulseConfig;
+import com.vmware.gemfire.tools.pulse.internal.data.Repository;
+import com.vmware.gemfire.tools.pulse.internal.json.JSONObject;
+import org.apache.commons.collections.buffer.CircularFifoBuffer;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.mock.web.MockHttpSession;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContextListener;
+import java.io.File;
+import java.security.Principal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.UUID;
+
+import static org.hamcrest.Matchers.containsInAnyOrder;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doReturn;
+import static org.powermock.api.mockito.PowerMockito.spy;
+import static org.powermock.api.mockito.PowerMockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+/**
+ * @author Jens Deppe
+ */
+@Category(IntegrationTest.class)
+@PrepareForTest(Repository.class)
+@RunWith(PowerMockRunner.class)
+@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
+@WebAppConfiguration
+@ContextConfiguration("classpath*:mvc-dispatcher-servlet.xml")
+@PowerMockIgnore("*.IntegrationTest")
+public class PulseControllerJUnitTest {
+
+ @Autowired
+ private WebApplicationContext wac;
+
+ private MockMvc mockMvc;
+
+ private Cluster cluster;
+
+ @Rule
+ public TemporaryFolder tempFolder = new TemporaryFolder();
+
+ private static final String PRINCIPAL_USER = "test-user";
+
+ private static final String MEMBER_ID = "member1";
+ private static final String MEMBER_NAME = "localhost-server";
+ private static final String CLUSTER_NAME = "mock-cluster";
+ private static final String REGION_NAME = "mock-region";
+ private static final String REGION_PATH = "/" + REGION_NAME;
+ private static final String REGION_TYPE = "PARTITION";
+ private static final String AEQ_LISTENER = "async-event-listener";
+ private static final String CLIENT_NAME = "client-1";
+
+ private static final Principal principal;
+
+ static {
+ principal = () -> PRINCIPAL_USER;
+ }
+
+ @Before
+ public void setup() throws Exception {
+ this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
+
+ cluster = Mockito.spy(Cluster.class);
+
+ Cluster.Region region = new Cluster.Region();
+ region.setName(REGION_NAME);
+ region.setFullPath(REGION_PATH);
+ region.setRegionType(REGION_TYPE);
+ region.setMemberCount(1);
+ region.setMemberName(new ArrayList<String>() {{
+ add(MEMBER_NAME);
+ }});
+ Cluster.RegionOnMember regionOnMember = new Cluster.RegionOnMember();
+ regionOnMember.setRegionFullPath(REGION_PATH);
+ regionOnMember.setMemberName(MEMBER_NAME);
+ region.setRegionOnMembers(new ArrayList<Cluster.RegionOnMember>() {{
+ add(regionOnMember);
+ }});
+ cluster.addClusterRegion("/mock-region", region);
+
+ Cluster.Member member = new Cluster.Member();
+ member.setId(MEMBER_ID);
+ member.setName(MEMBER_NAME);
+ member.setUptime(1L);
+
+ member.setMemberRegions(new HashMap<String, Cluster.Region>() {{
+ put(REGION_NAME, region);
+ }});
+
+ Cluster.AsyncEventQueue aeq = new Cluster.AsyncEventQueue();
+ aeq.setAsyncEventListener(AEQ_LISTENER);
+ member.setAsyncEventQueueList(new ArrayList() {{
+ add(aeq);
+ }});
+
+ Cluster.Client client = new Cluster.Client();
+ client.setId("100");
+ client.setName(CLIENT_NAME);
+ client.setUptime(1L);
+ member.setMemberClientsHMap(new HashMap<String, Cluster.Client>() {{
+ put(CLIENT_NAME, client);
+ }});
+
+ cluster.setMembersHMap(new HashMap() {{put(MEMBER_NAME, member);}});
+ cluster.setServerName(CLUSTER_NAME);
+ cluster.setMemoryUsageTrend(new CircularFifoBuffer() {{
+ add(1);
+ add(2);
+ add(3);
+ }});
+
+ Repository repo = Mockito.spy(Repository.class);
+
+ // Set up a partial mock for some static methods
+ spy(Repository.class);
+ when(Repository.class, "get").thenReturn(repo);
+ doReturn(cluster).when(repo).getCluster();
+
+ PulseConfig config = new PulseConfig();
+ File tempQueryLog = tempFolder.newFile("query_history.log");
+ config.setQueryHistoryFileName(tempQueryLog.toString());
+ doReturn(config).when(repo).getPulseConfig();
+ }
+
+ @Test
+ public void pulseUpdateForClusterDetails() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterDetails\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterDetails.userName").value(PRINCIPAL_USER))
+ .andExpect(jsonPath("$.ClusterDetails.totalHeap").value(0))
+ .andExpect(jsonPath("$.ClusterDetails.clusterName").value(CLUSTER_NAME))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterDiskThroughput() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterDiskThroughput\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterDiskThroughput.currentThroughputWrites").value(0))
+ .andExpect(jsonPath("$.ClusterDiskThroughput.throughputReads").isEmpty())
+ .andExpect(jsonPath("$.ClusterDiskThroughput.currentThroughputReads").value(0))
+ .andExpect(jsonPath("$.ClusterDiskThroughput.throughputWrites").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterGCPauses() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterJVMPauses\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterJVMPauses.currentGCPauses").value(0))
+ .andExpect(jsonPath("$.ClusterJVMPauses.gCPausesTrend").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterKeyStatistics() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterKeyStatistics\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterKeyStatistics.readPerSecTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterKeyStatistics.queriesPerSecTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterKeyStatistics.writePerSecTrend").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterMember() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterMembers\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterMembers.members[0].serverGroups[0]").value("Default"))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].cpuUsage").value(0))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].clients").value(1))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].heapUsage").value(0))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].currentHeapUsage").value(0))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].isManager").value(false))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].threads").value(0))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].memberId").value(MEMBER_ID))
+ .andExpect(jsonPath("$.ClusterMembers.members[0].redundancyZones[0]").value("Default"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterMembersRGraph() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterMembersRGraph\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterMembersRGraph.memberCount").value(0))
+ .andExpect(jsonPath("$.ClusterMembersRGraph.clustor.data").isEmpty())
+ .andExpect(jsonPath("$.ClusterMembersRGraph.clustor.children").isEmpty())
+ .andExpect(jsonPath("$.ClusterMembersRGraph.clustor.name").value(0))
+ .andExpect(jsonPath("$.ClusterMembersRGraph.clustor.id").value(0))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterMemoryUsage() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterMemoryUsage\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterMemoryUsage.currentMemoryUsage").value(0))
+ .andExpect(jsonPath("$.ClusterMemoryUsage.memoryUsageTrend", containsInAnyOrder(1, 2, 3)))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterRegion() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterRegion\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterRegion.clusterName").value(CLUSTER_NAME))
+ .andExpect(jsonPath("$.ClusterRegion.userName").value(PRINCIPAL_USER))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].regionPath").value(REGION_PATH))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].diskReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memoryUsage").value("0.0000"))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].getsRate").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].wanEnabled").value(false))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memberCount").value(1))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].isHDFSWriteOnly").value("NA"))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memberNames[0].name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memberNames[0].id").value(MEMBER_ID))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].emptyNodes").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].type").value(REGION_TYPE))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].isEnableOffHeapMemory").value("OFF"))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].putsRate").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].totalMemory").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].entryCount").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].compressionCodec").value("NA"))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].name").value(REGION_NAME))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].systemRegionEntryCount").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].persistence").value("OFF"))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memoryReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegion.region[0].diskWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegion.region[0].memoryWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegion.region[0].dataUsage").value(0))
+ .andExpect(jsonPath("$.ClusterRegion.region[0].entrySize").value("0.0000"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterRegions() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterRegions\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].regionPath").value(REGION_PATH))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].diskReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memoryUsage").value("0.0000"))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].getsRate").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].wanEnabled").value(false))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memberCount").value(1))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].isHDFSWriteOnly").value("NA"))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memberNames[0].name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memberNames[0].id").value(MEMBER_ID))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].emptyNodes").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].type").value(REGION_TYPE))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].isEnableOffHeapMemory").value("OFF"))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].putsRate").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].totalMemory").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].entryCount").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].compressionCodec").value("NA"))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].name").value(REGION_NAME))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].systemRegionEntryCount").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].persistence").value("OFF"))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memoryReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].diskWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].memoryWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].dataUsage").value(0))
+ .andExpect(jsonPath("$.ClusterRegions.regions[0].entrySize").value("0.0000"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterSelectedRegion() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterSelectedRegion\":{\"regionFullPath\":\"" + REGION_PATH + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.lruEvictionRate").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.getsRate").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.emptyNodes").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.type").value(REGION_TYPE))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.isEnableOffHeapMemory").value("OFF"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.path").value(REGION_PATH))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].cpuUsage").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].clients").value(1))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].heapUsage").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].currentHeapUsage").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].isManager").value(false))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].threads").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].memberId").value(MEMBER_ID))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.members[0].uptime").value("0 Hours 0 Mins 1 Secs"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.memoryReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.diskWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.dataUsage").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.regionPath").value(REGION_PATH))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.diskReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.memoryUsage").value("0.0000"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.wanEnabled").value(false))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.memberCount").value(1))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.isHDFSWriteOnly").value("NA"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.putsRate").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.totalMemory").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.entryCount").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.compressionCodec").value("NA"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.name").value(REGION_NAME))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.systemRegionEntryCount").value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.persistence").value("OFF"))
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.memoryWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegion.selectedRegion.entrySize").value("0.0000"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterSelectedRegionsMember() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterSelectedRegionsMember\":{\"regionFullPath\":\"" + REGION_PATH + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.diskReadsTrend", MEMBER_NAME).isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.regionFullPath", MEMBER_NAME).value(REGION_PATH))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.entryCount", MEMBER_NAME).value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.accessor", MEMBER_NAME).value("True"))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.memberName", MEMBER_NAME).value(MEMBER_NAME))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.memoryReadsTrend", MEMBER_NAME).isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.diskWritesTrend", MEMBER_NAME).isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.memoryWritesTrend", MEMBER_NAME).isEmpty())
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.selectedRegionsMembers.%s.entrySize", MEMBER_NAME).value(0))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.clusterName").value(CLUSTER_NAME))
+ .andExpect(jsonPath("$.ClusterSelectedRegionsMember.userName").value(PRINCIPAL_USER))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForClusterWANInfo() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"ClusterWANInfo\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.ClusterWANInfo.connectedClusters").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberAsynchEventQueues() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberAsynchEventQueues\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.isAsyncEventQueuesPresent").value(true))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].batchTimeInterval").value(0))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].batchConflationEnabled").value(false))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].queueSize").value(0))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].senderType").value(false))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].asyncEventListener").value(AEQ_LISTENER))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].batchSize").value(0))
+ .andExpect(jsonPath("$.MemberAsynchEventQueues.asyncEventQueues[0].primary").value(false))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberClients() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberClients\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberClients.name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].puts").value(0))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].cpuUsage").value("0.0000"))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].clientId").value("100"))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].queueSize").value(0))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].clientCQCount").value(0))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].name").value(CLIENT_NAME))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].isConnected").value("No"))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].threads").value(0))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].isSubscriptionEnabled").value("No"))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].gets").value(0))
+ .andExpect(jsonPath("$.MemberClients.memberClients[0].uptime").value("0 Hours 0 Mins 1 Secs"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberDetails() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberDetails\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberDetails.name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.MemberDetails.offHeapUsedSize").value(0))
+ .andExpect(jsonPath("$.MemberDetails.diskStorageUsed").value(0))
+ .andExpect(jsonPath("$.MemberDetails.regionsCount").value(1))
+ .andExpect(jsonPath("$.MemberDetails.clusterName").value(CLUSTER_NAME))
+ .andExpect(jsonPath("$.MemberDetails.name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.MemberDetails.threads").value(0))
+ .andExpect(jsonPath("$.MemberDetails.clusterId").isNotEmpty())
+ .andExpect(jsonPath("$.MemberDetails.numClients").value(1))
+ .andExpect(jsonPath("$.MemberDetails.userName").value(PRINCIPAL_USER))
+ .andExpect(jsonPath("$.MemberDetails.offHeapFreeSize").value(0))
+ .andExpect(jsonPath("$.MemberDetails.memberId").value(MEMBER_ID))
+ .andExpect(jsonPath("$.MemberDetails.status").value("Normal"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberDiskThroughput() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberDiskThroughput\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberDiskThroughput.throughputWritesTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberDiskThroughput.throughputReadsTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberDiskThroughput.throughputWrites").value(0))
+ .andExpect(jsonPath("$.MemberDiskThroughput.throughputReads").value(0))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberGatewayHub() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberGatewayHub\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberGatewayHub.isGatewayReceiver").value(false))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].batchTimeInterval").value(0))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].batchConflationEnabled").value(false))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].queueSize").value(0))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].senderType").value(false))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].asyncEventListener").value(AEQ_LISTENER))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].batchSize").value(0))
+ .andExpect(jsonPath("$.MemberGatewayHub.asyncEventQueues[0].primary").value(false))
+ .andExpect(jsonPath("$.MemberGatewayHub.isGatewaySender").value(false))
+ .andExpect(jsonPath("$.MemberGatewayHub.regionsInvolved").isEmpty())
+ .andExpect(jsonPath("$.MemberGatewayHub.gatewaySenders").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberGCPauses() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberGCPauses\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberGCPauses.gcPausesCount").value(0))
+ .andExpect(jsonPath("$.MemberGCPauses.gcPausesTrend").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberHeapUsage() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberHeapUsage\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberHeapUsage.heapUsageTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberHeapUsage.currentHeapUsage").value(0))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberKeyStatistics() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberKeyStatistics\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberKeyStatistics.readPerSecTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberKeyStatistics.cpuUsageTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberKeyStatistics.memoryUsageTrend").isEmpty())
+ .andExpect(jsonPath("$.MemberKeyStatistics.writePerSecTrend").isEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMemberRegions() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MemberRegions\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MemberRegions.name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].fullPath").value(REGION_PATH))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].entryCount").value(0))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].name").value(REGION_NAME))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].diskStoreName").value(""))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].gatewayEnabled").value(false))
+ .andExpect(jsonPath("$.MemberRegions.memberRegions[0].entrySize").value("0.0000"))
+ .andExpect(jsonPath("$.MemberRegions.memberId").value(MEMBER_ID))
+ .andExpect(jsonPath("$.MemberRegions.status").value("Normal"))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForMembersList() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"MembersList\":{\"memberName\":\"" + MEMBER_NAME + "\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.MembersList.clusterMembers[0].name").value(MEMBER_NAME))
+ .andExpect(jsonPath("$.MembersList.clusterMembers[0].memberId").value(MEMBER_ID))
+ .andExpect(jsonPath("$.MembersList.clusterName").value(CLUSTER_NAME))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForPulseVersion() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"PulseVersion\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.PulseVersion.sourceDate").isNotEmpty())
+ .andExpect(jsonPath("$.PulseVersion.sourceRepository").isNotEmpty())
+ .andExpect(jsonPath("$.PulseVersion.pulseVersion").isNotEmpty())
+ .andExpect(jsonPath("$.PulseVersion.sourceRevision").isNotEmpty())
+ .andExpect(jsonPath("$.PulseVersion.buildId").isNotEmpty())
+ .andExpect(jsonPath("$.PulseVersion.buildDate").isNotEmpty())
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForQueryStatistics() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"QueryStatistics\":\"{}\"}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.QueryStatistics.queriesList").isEmpty())
+ .andExpect(jsonPath("$.QueryStatistics.connectedFlag").value(false))
+ .andExpect(jsonPath("$.QueryStatistics.connectedErrorMsg").value(""))
+ ;
+ }
+
+ @Test
+ public void pulseUpdateForSystemAlerts() throws Exception {
+ this.mockMvc.perform(post("/pulseUpdate")
+ .param("pulseData", "{\"SystemAlerts\":{\"pageNumber\":\"1\"}}")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.SystemAlerts.pageNumber").value(1))
+ .andExpect(jsonPath("$.SystemAlerts.connectedFlag").value(false))
+ .andExpect(jsonPath("$.SystemAlerts.connectedErrorMsg").value(""))
+ .andExpect(jsonPath("$.SystemAlerts.systemAlerts").isEmpty())
+ ;
+ }
+
+ @Test
+ public void authenticateUserNotLoggedIn() throws Exception {
+ this.mockMvc.perform(get("/authenticateUser")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.isUserLoggedIn").value(false));
+ }
+
+ @Test
+ public void authenticateUserLoggedIn() throws Exception {
+ this.mockMvc.perform(get("/authenticateUser")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.isUserLoggedIn").value(true));
+ }
+
+ @Test
+ public void clusterLogout() throws Exception {
+ MockHttpSession mockSession = new MockHttpSession(wac.getServletContext(), UUID.randomUUID().toString());
+ assertFalse(mockSession.isInvalid());
+
+ this.mockMvc.perform(get("/clusterLogout").principal(principal)
+ .session(mockSession)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().is3xxRedirection())
+ .andExpect(redirectedUrl("../Login.html"));
+
+ assertTrue(mockSession.isInvalid());
+ }
+
+ @Test
+ public void pulseVersion() throws Exception {
+ ServletContextListener listener = new PulseAppListener();
+ listener.contextInitialized(null);
+
+ this.mockMvc.perform(get("/pulseVersion")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.pulseVersion").isNotEmpty())
+ .andExpect(jsonPath("$.buildId").isNotEmpty())
+ .andExpect(jsonPath("$.buildDate").isNotEmpty())
+ .andExpect(jsonPath("$.sourceDate").isNotEmpty())
+ .andExpect(jsonPath("$.sourceRevision").isNotEmpty())
+ .andExpect(jsonPath("$.sourceRepository").isNotEmpty())
+ ;
+ }
+
+ @Test
+ public void clearAlerts() throws Exception {
+ this.mockMvc.perform(get("/clearAlerts")
+ .param("alertType", "1")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.pageNumber").value(1))
+ .andExpect(jsonPath("$.systemAlerts").isEmpty())
+ .andExpect(jsonPath("$.connectedFlag").value(false))
+ .andExpect(jsonPath("$.status").value("deleted"))
+ ;
+ }
+
+ @Test
+ public void acknowledgeAlert() throws Exception {
+ this.mockMvc.perform(get("/acknowledgeAlert")
+ .param("alertId", "1")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.status").value("deleted"));
+ }
+
+ @Test
+ public void dataBrowserRegions() throws Exception {
+ this.mockMvc.perform(get("/dataBrowserRegions")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.clusterName").value(CLUSTER_NAME))
+ .andExpect(jsonPath("$.connectedFlag").value(false))
+ .andExpect(jsonPath("$.clusterRegions[0].fullPath").value(REGION_PATH))
+ .andExpect(jsonPath("$.clusterRegions[0].regionType").value(REGION_TYPE))
+ ;
+ }
+
+ @Test
+ public void dataBrowserQuery() throws Exception {
+ doReturn(new JSONObject().put("foo", "bar")).when(cluster).executeQuery(anyString(), anyString(), anyInt());
+
+ this.mockMvc.perform(get("/dataBrowserQuery")
+ .param("query", "SELECT * FROM " + REGION_PATH)
+ .param("members", MEMBER_NAME)
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.foo").value("bar"))
+ ;
+ }
+
+ @Test
+ public void dataBrowserQueryHistory() throws Exception {
+ dataBrowserQuery();
+
+ this.mockMvc.perform(get("/dataBrowserQueryHistory")
+ .param("action", "view")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.queryHistory[0].queryText").value("SELECT * FROM " + REGION_PATH))
+ ;
+ }
+
+ @Test
+ public void pulseProductSupport() throws Exception {
+ this.mockMvc.perform(get("/pulseProductSupport")
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.product").value("gemfire"))
+ ;
+ }
+
+ @Test
+ public void getQueryStatisticsGridModel() throws Exception {
+ this.mockMvc.perform(get("/getQueryStatisticsGridModel")
+ .principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.columnNames", containsInAnyOrder("Query",
+ "NumExecution",
+ "TotalExecutionTime(ns)",
+ "NumExecutionsInProgress",
+ "NumTimesCompiled",
+ "NumTimesGlobalIndexLookup",
+ "NumRowsModified",
+ "ParseTime(ms)",
+ "BindTime(ms)",
+ "OptimizeTime(ms)",
+ "RoutingInfoTime(ms)",
+ "GenerateTime(ms)",
+ "TotalCompilationTime(ms)",
+ "ExecutionTime(ns)",
+ "ProjectionTime(ns)",
+ "RowsModificationTime(ns)",
+ "QNNumRowsSeen",
+ "QNMsgSendTime(ns)",
+ "QNMsgSerTime(ns)",
+ "QNRespDeSerTime(ns)")))
+ ;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/0f272db0/gradle/dependency-versions.properties
----------------------------------------------------------------------
diff --git a/gradle/dependency-versions.properties b/gradle/dependency-versions.properties
index 611ee7a..5012608 100644
--- a/gradle/dependency-versions.properties
+++ b/gradle/dependency-versions.properties
@@ -63,6 +63,7 @@ jetty.version = 9.3.6.v20151106
jline.version = 2.12
jmock.version = 2.8.1
jna.version = 4.0.0
+json-path.version = 1.2.0
json4s.version = 3.2.4
jsr305.version = 3.0.1
junit.version = 4.12
@@ -100,4 +101,4 @@ tomcat6.version = 6.0.37
tomcat7.version = 7.0.30
mortbay-jetty-servlet-api.version=2.5-20081211
selenium.version=2.52.0
-google-gson.version=2.3.1
\ No newline at end of file
+google-gson.version=2.3.1