You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bo...@apache.org on 2018/08/21 21:34:09 UTC
[geode] branch develop updated: GEODE-5571: Added query to history
before query execution
This is an automated email from the ASF dual-hosted git repository.
boglesby pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 291fae0 GEODE-5571: Added query to history before query execution
291fae0 is described below
commit 291fae083fa521df81f70f61d45c892db5001f05
Author: Barry Oglesby <bo...@users.noreply.github.com>
AuthorDate: Tue Aug 21 14:34:03 2018 -0700
GEODE-5571: Added query to history before query execution
---
.../controllers/PulseControllerJUnitTest.java | 100 ++++++++++++++++++++-
.../internal/controllers/PulseController.java | 67 ++++++--------
.../scripts/pulsescript/pages/DataBrowserQuery.js | 4 +-
3 files changed, 126 insertions(+), 45 deletions(-)
diff --git a/geode-pulse/src/integrationTest/java/org/apache/geode/tools/pulse/controllers/PulseControllerJUnitTest.java b/geode-pulse/src/integrationTest/java/org/apache/geode/tools/pulse/controllers/PulseControllerJUnitTest.java
index de172bc..0dafa51 100644
--- a/geode-pulse/src/integrationTest/java/org/apache/geode/tools/pulse/controllers/PulseControllerJUnitTest.java
+++ b/geode-pulse/src/integrationTest/java/org/apache/geode/tools/pulse/controllers/PulseControllerJUnitTest.java
@@ -19,10 +19,14 @@ import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.verify;
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.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@@ -807,11 +811,105 @@ public class PulseControllerJUnitTest {
doReturn(mapper.createObjectNode().put("foo", "bar")).when(cluster).executeQuery(anyString(),
anyString(), anyInt());
+ String query = "SELECT * FROM " + REGION_PATH;
this.mockMvc
- .perform(get("/dataBrowserQuery").param("query", "SELECT * FROM " + REGION_PATH)
+ .perform(get("/dataBrowserQuery").param("query", query)
.param("members", MEMBER_NAME).principal(principal)
.accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
.andExpect(status().isOk()).andExpect(jsonPath("$.foo").value("bar"));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
+ }
+
+ @Test
+ public void dataBrowserQueryWithMessageResult() throws Exception {
+ String message = "Query is invalid due to error : Region mentioned in query probably missing /";
+ doReturn(mapper.createObjectNode().put("message", message)).when(cluster).executeQuery(
+ anyString(),
+ anyString(), anyInt());
+
+ String query = "SELECT * FROM " + REGION_PATH;
+ this.mockMvc
+ .perform(get("/dataBrowserQuery").param("query", query)
+ .param("members", MEMBER_NAME).principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk()).andExpect(jsonPath("$.message").value(message));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
+ }
+
+ @Test
+ public void dataBrowserQueryWithExceptionResult() throws Exception {
+ doThrow(new IllegalStateException()).when(cluster).executeQuery(anyString(),
+ anyString(), anyInt());
+
+ String query = "SELECT * FROM " + REGION_PATH;
+ this.mockMvc
+ .perform(get("/dataBrowserQuery").param("query", query)
+ .param("members", MEMBER_NAME).principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk()).andExpect(content().string("{}"));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
+ }
+
+ @Test
+ public void dataBrowserExport() throws Exception {
+ doReturn(mapper.createObjectNode().put("foo", "bar")).when(cluster).executeQuery(anyString(),
+ anyString(), anyInt());
+
+ String query = "SELECT * FROM " + REGION_PATH;
+ this.mockMvc
+ .perform(get("/dataBrowserExport").param("query", query)
+ .param("members", MEMBER_NAME).principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition", "attachment; filename=results.json"))
+ .andExpect(jsonPath("$.foo").value("bar"));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
+ }
+
+ @Test
+ public void dataBrowserExportWithMessageResult() throws Exception {
+ String message = "Query is invalid due to error : Region mentioned in query probably missing /";
+ doReturn(mapper.createObjectNode().put("message", message)).when(cluster).executeQuery(
+ anyString(),
+ anyString(), anyInt());
+
+ String query = "SELECT * FROM " + REGION_PATH;
+ this.mockMvc
+ .perform(get("/dataBrowserExport").param("query", query)
+ .param("members", MEMBER_NAME).principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition", "attachment; filename=results.json"))
+ .andExpect(jsonPath("$.message").value(message));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
+ }
+
+ @Test
+ public void dataBrowserExportWithExceptionResult() throws Exception {
+ doThrow(new IllegalStateException()).when(cluster).executeQuery(anyString(),
+ anyString(), anyInt());
+
+ String query = "SELECT * FROM " + REGION_PATH;
+ this.mockMvc
+ .perform(get("/dataBrowserExport").param("query", query)
+ .param("members", MEMBER_NAME).principal(principal)
+ .accept(MediaType.parseMediaType(MediaType.APPLICATION_JSON_UTF8_VALUE)))
+ .andExpect(status().isOk())
+ .andExpect(header().string("Content-Disposition", "attachment; filename=results.json"))
+ .andExpect(content().string("{}"));
+
+ // Verify cluster addQueryInHistory is invoked
+ verify(this.cluster).addQueryInHistory(query, principal.getName());
}
@Test
diff --git a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/PulseController.java b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/PulseController.java
index b74c243..4ba3a5e 100644
--- a/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/PulseController.java
+++ b/geode-pulse/src/main/java/org/apache/geode/tools/pulse/internal/controllers/PulseController.java
@@ -319,27 +319,7 @@ public class PulseController {
logger.debug(e);
}
- ObjectNode queryResult = mapper.createObjectNode();
- try {
-
- if (StringUtils.isNotBlank(query)) {
- // get cluster object
- Cluster cluster = Repository.get().getCluster();
- String userName = request.getUserPrincipal().getName();
-
- // Call execute query method
- queryResult = cluster.executeQuery(query, members, limit);
-
- // Add query in history if query is executed successfully
- if (!queryResult.has("error")) {
- // Add html escaped query to history
- String escapedQuery = StringEscapeUtils.escapeHtml(query);
- cluster.addQueryInHistory(escapedQuery, userName);
- }
- }
- } catch (Exception e) {
- logger.debug("Exception Occurred : ", e);
- }
+ ObjectNode queryResult = executeQuery(request, query, members, limit);
response.getOutputStream().write(queryResult.toString().getBytes());
}
@@ -406,27 +386,7 @@ public class PulseController {
logger.debug(e);
}
- ObjectNode queryResult = mapper.createObjectNode();
- try {
-
- if (StringUtils.isNotBlank(query)) {
- // get cluster object
- Cluster cluster = Repository.get().getCluster();
- String userName = request.getUserPrincipal().getName();
-
- // Call execute query method
- queryResult = cluster.executeQuery(query, members, limit);
-
- // Add query in history if query is executed successfully
- if (!queryResult.has("error")) {
- // Add html escaped query to history
- String escapedQuery = StringEscapeUtils.escapeHtml(query);
- cluster.addQueryInHistory(escapedQuery, userName);
- }
- }
- } catch (Exception e) {
- logger.debug("Exception Occurred : ", e);
- }
+ ObjectNode queryResult = executeQuery(request, query, members, limit);
response.setContentType("application/json");
response.setHeader("Content-Disposition", "attachment; filename=results.json");
@@ -474,4 +434,27 @@ public class PulseController {
logger.debug("Exception Occurred : ", e);
}
}
+
+ private ObjectNode executeQuery(HttpServletRequest request, String query, String members,
+ int limit) {
+ ObjectNode queryResult = mapper.createObjectNode();
+ try {
+
+ if (StringUtils.isNotBlank(query)) {
+ // get cluster object
+ Cluster cluster = Repository.get().getCluster();
+ String userName = request.getUserPrincipal().getName();
+
+ // Add html escaped query to history
+ String escapedQuery = StringEscapeUtils.escapeHtml(query);
+ cluster.addQueryInHistory(escapedQuery, userName);
+
+ // Call execute query method
+ queryResult = cluster.executeQuery(query, members, limit);
+ }
+ } catch (Exception e) {
+ logger.debug("Exception Occurred : ", e);
+ }
+ return queryResult;
+ }
}
diff --git a/geode-pulse/src/main/webapp/scripts/pulsescript/pages/DataBrowserQuery.js b/geode-pulse/src/main/webapp/scripts/pulsescript/pages/DataBrowserQuery.js
index 9ef656a..2a59382 100644
--- a/geode-pulse/src/main/webapp/scripts/pulsescript/pages/DataBrowserQuery.js
+++ b/geode-pulse/src/main/webapp/scripts/pulsescript/pages/DataBrowserQuery.js
@@ -154,11 +154,11 @@ function executeDBQuery(){
if(!isEmpty($('#memberAccordion').html())){
populateResultGrids();
}
- // Update queries list in history panel
- updateQueryHistory("view","");
//$('.queryHistoryScroll-pane').jScrollPane();/*Custome scroll*/
}
+ // Update queries list in history panel
+ updateQueryHistory("view","");
}
// Hide Loading/Busy symbol