@Test @ConnectionConfiguration(user = "data,cluster", password = "data,cluster") public void modifyInternalRegionSuperUser() { CommandResult result = gfshConnection.executeCommand("put --key=key1 --value=value1 --region=PdxTypes"); assertThat(result.getStatus()).isEqualTo(Result.Status.ERROR); assertThat(result.getMessageFromContent()).contains("Unauthorized"); }
private void writeResultTableToFile(File file, CommandResult commandResult) throws IOException { try (FileWriter fileWriter = new FileWriter(file)) { while (commandResult.hasNextLine()) { fileWriter.write(commandResult.nextLine()); if (commandResult.hasNextLine()) { fileWriter.write(SystemUtils.LINE_SEPARATOR); } } } } }
@Test public void queryReturnsNonSelectResult() { CommandResult result = gfsh.executeCommand( "query --query=\"(select c.address from /complexRegion c where c.name = 'name1' limit 1).size\""); Map<String, String> data = result.getMapFromSection(DataCommandResult.DATA_INFO_SECTION); assertThat(data.get("Rows")).isEqualTo("1"); Map<String, List<String>> table = result.getMapFromTableContent(DataCommandResult.QUERY_SECTION); assertThat(table.get("Result")).contains("1"); }
private static CommandResponse prepareCommandResponse(String memberName, CommandResult result) { GfJsonObject content; content = result.getContent(); return new CommandResponse(memberName, getType(result), result.getStatus().getCode(), "1/1", CliMetaData.ANNOTATION_NULL_VALUE, getDebugInfo(), result.getHeader(), content, result.getFooter(), result.failedToPersist(), result.getFileToDownload()); }
private void validateResult(CommandResult cmdResult, Boolean expected) { if (ResultData.TYPE_MODEL.equals(cmdResult.getType())) { ResultModel rd = (ResultModel) cmdResult.getResultData(); DataResultModel result = rd.getDataSection(DataCommandResult.DATA_INFO_SECTION); assertThat(result.getContent().get("Result")).isEqualTo(expected.toString()); } else fail("Expected CompositeResult Returned Result Type " + cmdResult.getType()); }
@Test public void canOutputSimpleRegionToFile() throws Exception { File outputFile = temporaryFolder.newFile("queryOutput.txt"); FileUtils.deleteQuietly(outputFile); CommandResult result = gfsh.executeCommand( "query --query='select * from /simpleRegion' --file=" + outputFile.getAbsolutePath()); assertThat(result.getStatus()).isEqualTo(Result.Status.OK); // .statusIsSuccess().containsOutput(outputFile.getAbsolutePath()); assertThat(outputFile).exists(); List<String> lines = Files.readLines(outputFile, StandardCharsets.UTF_8); assertThat(lines.get(7)).isEqualTo("Result"); assertThat(lines.get(8)).isEqualTo("--------"); lines.subList(9, lines.size()).forEach(line -> assertThat(line).matches("value\\d+")); }
@Test public void infoResultDataStructure() { InfoResultData result = ResultBuilder.createInfoResultData(); result.addLine("line 1"); result.addLine("line 2"); result.setHeader("Heads"); result.setFooter("Tails"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getListFromContent("message")).contains("line 1", "line 2"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getValueFromContent("message")).isNotEmpty(); assertThat(cmdResult.getStatus()).isEqualTo(Result.Status.OK); }
private void verifyDestroyIndexCommandResult(CommandResult result, List<CliFunctionResult> cliFunctionResults, String expectedStatus) { assertThat(result.getStatus()).isEqualTo(Status.OK); if (result.getType().equals(TYPE_TABULAR)) { TabularResultData data = (TabularResultData) result.getResultData(); List<String> members = data.retrieveAllValues("Member"); assertThat(cliFunctionResults.size()).isEqualTo(members.size()); // Verify each member for (int i = 0; i < members.size(); i++) { assertThat(members.get(i)).isEqualTo("member" + i); } // Verify each status List<String> status = data.retrieveAllValues("Status"); for (String statu : status) { assertThat(statu).isEqualTo(expectedStatus); } } else { // Info result. Verify next lines are equal. assertThat(result.nextLine()).isEqualTo(expectedStatus); } }
public CommandResult executeCommand(String command) { gfsh.executeCommand(command); CommandResult result; try { result = (CommandResult) gfsh.getResult(); } catch (InterruptedException e) { throw new RuntimeException(e); } if (StringUtils.isBlank(gfsh.outputString) && result != null && !result.getMessageFromContent().isEmpty()) { if (result.getStatus() == Result.Status.ERROR) { gfsh.outputString = result.toString(); } else { // print out the message body as the command result List<String> messages = result.getListFromContent("message"); for (String line : messages) { gfsh.outputString += line + "\n"; } } } System.out.println("Command result for <" + command + ">: \n" + gfsh.outputString); commandResult = result; return result; }
@Override public CommandResult postExecution(GfshParseResult parseResult, CommandResult commandResult, Path tempFile) { // in the command over http case, the command result is in the downloaded temp file if (tempFile != null) { Path dirPath; String dirName = parseResult.getParamValueAsString("dir"); if (StringUtils.isBlank(dirName)) { dirPath = Paths.get(System.getProperty("user.dir")).toAbsolutePath(); } else { dirPath = Paths.get(dirName).toAbsolutePath(); } String fileName = "exportedLogs_" + System.currentTimeMillis() + ".zip"; File exportedLogFile = dirPath.resolve(fileName).toFile(); try { FileUtils.copyFile(tempFile.toFile(), exportedLogFile); FileUtils.deleteQuietly(tempFile.toFile()); commandResult = (CommandResult) ResultBuilder .createInfoResult("Logs exported to: " + exportedLogFile.getAbsolutePath()); } catch (IOException e) { logger.error(e.getMessage(), e); commandResult = ResultBuilder.createGemFireErrorResult(e.getMessage()); } } else if (commandResult.getStatus() == Result.Status.OK) { commandResult = (CommandResult) ResultBuilder.createInfoResult( "Logs exported to the connected member's file system: " + commandResult.nextLine()); } return commandResult; } }
if (result.getStatus() == Result.Status.ERROR) { assertThat(result.getMessageFromContent()).doesNotContain("not authorized"); int errorCode = ((ErrorResultData) result.getResultData()).getErrorCode(); LogService.getLogger().info("Skip user error: " + result.getMessageFromContent()); continue; assertThat(((ErrorResultData) result.getResultData()).getErrorCode()) .describedAs(other.getCommand()).isEqualTo(ResultBuilder.ERRORCODE_UNAUTHORIZED);
@Test public void compositeResultDataStructure() { CompositeResultData result = ResultBuilder.createCompositeResultData(); result.setHeader("Heads"); result.setFooter("Tails"); // build up an example result.addSection().addData("section 0 key", "section 0 value"); result.addSection().addTable().accumulate("table 1 column", "table 1 value"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getMapFromSection("0").get("section 0 key")).isEqualTo("section 0 value"); Map<String, List<String>> table = cmdResult.getMapFromTableContent("1", "0"); assertThat(table.get("table 1 column")).contains("table 1 value"); }
@Test public void testDestroyIndexByNameIsIdempotent() throws Exception { createSimpleIndexA(); CommandStringBuilder csb = new CommandStringBuilder(CliStrings.DESTROY_INDEX); csb.addOption(CliStrings.DESTROY_INDEX__NAME, indexName); csb.addOption(CliStrings.IFEXISTS); gfsh.executeAndAssertThat(csb.toString()).statusIsSuccess() .containsOutput("Destroyed index " + indexName); CommandResult result = gfsh.executeCommand(csb.toString()); assertThat(result.getStatus()).isEqualTo(Result.Status.OK); Map<String, List<String>> table = result.getMapFromTableContent(ResultModel.MEMBER_STATUS_SECTION); assertThat(table.get("Status")).containsExactly("IGNORED"); assertThat(table.get("Message")).containsExactly("Index named \"" + indexName + "\" not found"); }
@Test public void testWithUnsetGfshEnvironmentVariables() { IgnoredException ex = addIgnoredException(QueryInvalidException.class.getSimpleName(), locator.getVM()); try { String query = "query --query=\"select ID , status , createTime , pk, floatMinValue from ${UNSET_REGION} where ID <= ${UNSET_PORTFOLIO_ID}" + " and status=${UNSET_STATUS}" + "\" --interactive=false"; CommandResult result = gfsh.executeCommand(query); assertThat(result.getStatus()).isEqualTo(Result.Status.ERROR); assertThat(result.getResultData().toString()) .contains(String.format("Syntax error in query: %s", "")); } finally { ex.remove(); } }
@Test public void resultWithFileDoesHaveFileToDownload() { Path fileToDownload = Paths.get(".").toAbsolutePath(); CommandResult commandResult = new LegacyCommandResult(fileToDownload); assertThat(commandResult.hasFileToDownload()).isTrue(); assertThat(commandResult.nextLine()).isEqualTo(fileToDownload.toString() + LINE_SEPARATOR); assertThat(commandResult.getFileToDownload()).isEqualTo(fileToDownload); } }
@Test public void tabularResultDataStructure() { TabularResultData result = ResultBuilder.createTabularResultData(); result.accumulate("column1", "value11"); result.accumulate("column1", "value12"); result.accumulate("column2", "value21"); result.accumulate("column2", "value22"); result.setHeader("Heads"); result.setFooter("Tails"); CommandResult cmdResult = ResultBuilder.buildResult(result); assertThat(cmdResult.getHeader()).isEqualTo("Heads"); assertThat(cmdResult.getFooter()).isEqualTo("Tails"); assertThat(cmdResult.getListFromContent("column1")).contains("value11", "value12"); assertThat(cmdResult.getListFromContent("column2")).contains("value21", "value22"); }
@Test public void invalidQueryGivesDescriptiveErrorMessage() { CommandResult result = gfsh.executeCommand("query --query='this is not a valid query'"); Map<String, String> data = result.getMapFromSection(DataCommandResult.DATA_INFO_SECTION); assertThat(data.get("Result")).isEqualTo("false"); assertThat(data.get("Message")) .startsWith("Query is invalid due to error : <Syntax error in query:"); }
@Test public void whenGfshIsAlreadyConnected() throws Exception { when(gfsh.isConnectedAndReady()).thenReturn(true); result = gfshParserRule.executeCommandWithInstance(connectCommand, "connect"); assertThat(result.nextLine()).contains("Already connected to"); }
private static String getType(CommandResult result) { return result.getType(); }