[
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)