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

Rui Shen edited comment on EDGENT-306 at 11/4/16 7:50 AM:
----------------------------------------------------------

Hi Dale,

Thanks for your response during your vacation. 

Here is my method to generate the file content, which is just the usual way. 

  private void writeFileContent(File file, String[] lines) throws Exception {
    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(file), StandardCharsets.UTF_8))) {
      for (int j = 0; j < lines.length; j++) {
        bw.write(lines[j]);
        bw.write("\n");
      }
    } catch (Exception e) {
      throw e;
    }
  }

I replace my above code with your code of writing files in 
FileStreamsTextFileWriterTest.testWriterWatcherReader() -- see below, and my 
test case can pass now, :).  And an interesting thing is that if I remove the 
policy setting from the code, it does not work any more. So looks like that I 
must use FileStreams.textFileWriter() to generate file contents and must uses 
policy as you defined. 

      for (int i = 0; i < files.length; i++) {
        String filePath = files[i];
        int throttleSec = 2;
        TStream<String> contents = PlumbingStreams.blockingThrottle(
            t.strings(fileContents[i]), throttleSec, TimeUnit.SECONDS);

        IFileWriterPolicy<String> policy = new FileWriterPolicy<String>(
            FileWriterFlushConfig.newImplicitConfig(),
            FileWriterCycleConfig.newCountBasedConfig(1), // one per file
            FileWriterRetentionConfig.newFileCountBasedConfig(10));
        FileStreams.textFileWriter(contents, () -> 
filePath.toString(),()->policy);
      }


was (Author: ilovepumpkin):
Hi Dale,

Thanks for your response during your vacation. 

Here is my method to generate the file content, which is just the usual way. 

  private void writeFileContent(File file, String[] lines) throws Exception {
    try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
        new FileOutputStream(file), StandardCharsets.UTF_8))) {
      for (int j = 0; j < lines.length; j++) {
        bw.write(lines[j]);
        bw.write("\n");
      }
    } catch (Exception e) {
      throw e;
    }
  }

I replace my above code with your code of writing files in 
FileStreamsTextFileWriterTest.testWriterWatcherReader(), and my test case can 
pass now, :).  And an interesting thing is that if I remove the policy setting 
from the code, it does not work any more. So looks like that I must use 
FileStreams.textFileWriter() to generate file contents and must uses policy as 
you defined. 

> With edgent Tester, failed to read file content from the newly appeared files 
> from a directory 
> -----------------------------------------------------------------------------------------------
>
>                 Key: EDGENT-306
>                 URL: https://issues.apache.org/jira/browse/EDGENT-306
>             Project: Edgent
>          Issue Type: Bug
>          Components: Test
>    Affects Versions: 0.4.0
>            Reporter: Rui Shen
>         Attachments: CopyOfFileStreamsTest.java, FileReaderApp.java, M2.png
>
>
> I got a trouble when using edgent Tester. The scenario that I am trying to 
> test is:
> 1) There is a empty directory (e.g "testdata")
> 2) Use FileStreams.directoryWatcher to watch the directory "testdata" and use 
> FileStreams.textFileReader to read content of newly appeared files in the 
> directory.
>  
> I am trying to use edgent Tester to write a unit test of this scenario (I 
> checked org.apache.edgent.test.connectors.file.FileStreamsTest and didn't 
> find such scenario). But I found my unit test always failed at reading the 
> content of newly appeared files. But if the files are pre-existing, it works. 
>  
> I attached two files. To reproduce this issue, you can run 
> testDirectoryWatcherOrder in CopyOfFileStreamsTest.java. And you will see the 
> following error. FileReaderApp.java is a standard alone version of the above 
> test scenario - it works well (once you start it, generate some files with 
> content in the directory, you can see the file content are printed in 
> console). 
>  
> So could you please let me know if this is a defect of edgent Tester or my 
> usage mistake? 



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

Reply via email to