[ 
https://issues.apache.org/jira/browse/GEODE-734?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15726436#comment-15726436
 ] 

ASF GitHub Bot commented on GEODE-734:
--------------------------------------

Github user kirklund commented on a diff in the pull request:

    https://github.com/apache/geode/pull/297#discussion_r91152153
  
    --- Diff: 
geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/ShowStackTraceDUnitTest.java
 ---
    @@ -149,4 +143,126 @@ public void testExportStacktrace() throws 
ClassNotFoundException, IOException {
         getLogWriter().info("Output : \n" + 
commandResultToString(commandResult));
         assertFalse(commandResult.getStatus().equals(Status.OK));
       }
    +
    +  /***
    +   * Tests the behavior of the show stack-trace command to verify that 
files with any extension are
    +   * allowed Refer: GEODE-734
    +   *
    +   * @throws ClassNotFoundException
    +   * @throws IOException
    +   */
    +  @Test
    +  public void testExportStacktraceWithNonTXTFile() throws 
ClassNotFoundException, IOException {
    +    setupSystem();
    +
    +    // Test non txt extension file is allowed
    +    File stacktracesFile = workDirectory.newFile("allStackTraces.log");
    +    CommandStringBuilder commandStringBuilder =
    +        new CommandStringBuilder(CliStrings.EXPORT_STACKTRACE);
    +    commandStringBuilder.addOption(CliStrings.EXPORT_STACKTRACE__FILE,
    +        stacktracesFile.getCanonicalPath());
    +    String exportCommandString = commandStringBuilder.toString();
    +    getLogWriter().info("CommandString : " + exportCommandString);
    +    CommandResult exportCommandResult = 
executeCommand(exportCommandString);
    +    getLogWriter().info("Output : \n" + 
commandResultToString(exportCommandResult));
    +    assertTrue(exportCommandResult.getStatus().equals(Status.OK));
    +
    +    // test file with-out any extension
    +    File allStacktracesFile = workDirectory.newFile("allStackTraces");
    +    commandStringBuilder = new 
CommandStringBuilder(CliStrings.EXPORT_STACKTRACE);
    +    commandStringBuilder.addOption(CliStrings.EXPORT_STACKTRACE__FILE,
    +        allStacktracesFile.getCanonicalPath());
    +    exportCommandString = commandStringBuilder.toString();
    +    getLogWriter().info("CommandString : " + exportCommandString);
    +    exportCommandResult = executeCommand(exportCommandString);
    +    getLogWriter().info("Output : \n" + 
commandResultToString(exportCommandResult));
    +    assertTrue(exportCommandResult.getStatus().equals(Status.OK));
    +  }
    +
    +  /***
    +   * Tests the behavior of the show stack-trace command when file is 
already present and
    +   * abort-if-file-exists option is set to false(which is default). As a 
result it should overwrite
    +   * the file and return OK status
    +   *
    +   * @throws ClassNotFoundException
    +   * @throws IOException
    +   */
    +  @Test
    +  public void testExportStacktraceWhenFilePresent() throws 
ClassNotFoundException, IOException {
    +    setupSystem();
    +
    +    // test pass although file present
    +    File stacktracesFile = workDirectory.newFile("allStackTraces.log");
    +    CommandStringBuilder commandStringBuilder =
    +        new CommandStringBuilder(CliStrings.EXPORT_STACKTRACE);
    +    commandStringBuilder.addOption(CliStrings.EXPORT_STACKTRACE__FILE,
    +        stacktracesFile.getCanonicalPath());
    +    String exportCommandString = commandStringBuilder.toString();
    +    getLogWriter().info("CommandString : " + exportCommandString);
    +    CommandResult exportCommandResult = 
executeCommand(exportCommandString);
    +    getLogWriter().info("Output : \n" + 
commandResultToString(exportCommandResult));
    +    assertTrue(exportCommandResult.getStatus().equals(Status.OK));
    +
    +  }
    +
    +  /***
    +   * Tests the behavior of the show stack-trace command when file is 
already present and when
    +   * abort-if-file-exists option is set to true. As a result it should 
fail with ERROR status
    +   *
    +   * @throws ClassNotFoundException
    +   * @throws IOException
    +   */
    +  @Test
    +  public void testExportStacktraceFilePresentWithAbort()
    +      throws ClassNotFoundException, IOException {
    +    setupSystem();
    +
    +    File stacktracesFile = workDirectory.newFile("allStackTraces.log");
    +    CommandStringBuilder commandStringBuilder =
    +        new CommandStringBuilder(CliStrings.EXPORT_STACKTRACE);
    +    commandStringBuilder.addOption(CliStrings.EXPORT_STACKTRACE__FILE,
    +        stacktracesFile.getCanonicalPath());
    +    
commandStringBuilder.addOption(CliStrings.EXPORT_STACKTRACE__FAIL__IF__FILE__PRESENT,
    +        Boolean.TRUE.toString());
    +    String exportCommandString = commandStringBuilder.toString();
    +    getLogWriter().info("CommandString : " + exportCommandString);
    +    CommandResult exportCommandResult = 
executeCommand(exportCommandString);
    +    getLogWriter().info("Output : \n" + 
commandResultToString(exportCommandResult));
    +    assertTrue(exportCommandResult.getStatus().equals(Status.ERROR));
    +    try {
    +      assertTrue(((String) 
exportCommandResult.getResultData().getGfJsonObject()
    +          .getJSONObject("content").getJSONArray("message").get(0))
    +              .contains("file " + stacktracesFile.getCanonicalPath() + " 
already present"));
    +    } catch (GfJsonException e) {
    --- End diff --
    
    I have one more change to request to the two tests with try-catch blocks. 
Please change the method signature to throws Exception and delete the try-catch 
block. JUnit handles this better than using fail with e.getCause() or 
e.getMessage(). With JUnit handling it, it's much easier to debug if these 
tests ever fail. Thanks!


> gfsh export stack-traces should not require an output file with extension .txt
> ------------------------------------------------------------------------------
>
>                 Key: GEODE-734
>                 URL: https://issues.apache.org/jira/browse/GEODE-734
>             Project: Geode
>          Issue Type: Improvement
>          Components: gfsh
>            Reporter: Jens Deppe
>
> gfsh {{export stack-traces}} requires a file with a {{.txt}} extension:
> {noformat}
> gfsh>export stack-traces --file=/tmp/trace.log
> Invalid file type, the file extension must be ".txt"
> {noformat}
> This seems like a totally arbitrary restriction. Please can it be removed.
> If the concern is that an existing file might be overwritten then we should 
> have a user prompt indicating that.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to