On Wed, 15 Mar 2023 22:49:57 GMT, Leonid Mesnik <lmes...@openjdk.org> wrote:

>> The StreamPumper is fixed to process the last line even it is not finishes 
>> with '\n' or '\r'. The test included. Testing with tier1-3 also to verify 
>> that tests are not broken.
>
> Leonid Mesnik has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   comments added

A few minor suggestions.

The additional commentary is very helpful. Figuring out exactly how this code 
works is painful.

Thanks.

test/lib-test/jdk/test/lib/process/ProcessToolsLastLineTest.java line 50:

> 48: 
> 49:         // The line which exceeds internal StreamPumper buffer (256 bytes)
> 50:         String VERY_LONG_LINE = "VERYLONGLINE".repeat(30);

It might be a bit more obvious that this does exceed 256 by simply doing:

String veryLongLine = "X".repeat(257);

test/lib-test/jdk/test/lib/process/ProcessToolsLastLineTest.java line 54:

> 52:             System.out.print(args[0]);
> 53:         } else {
> 54:             test("ARG1");

Some boundary testing here would be:

test("\n");
test("\nARG1");
test("\nARG1\n");
test("ARG1/n");
test("ARG1");

test/lib/jdk/test/lib/process/StreamPumper.java line 99:

> 97:      * Implements Thread.run(). Continuously read from {@code in} and 
> write to
> 98:      * {@code out} until {@code in} has reached end of stream.
> 99:      * Additionally this method also split data read from buffer into the 
> lines and process each line using linePumps.

A few grammatical nits. I suggest:
> Additionally this method also splits the data read from the buffer into 
> lines, and processes each line using linePumps.

test/lib/jdk/test/lib/process/StreamPumper.java line 138:

> 136:                     }
> 137:                     // The remaining after last '\n' (lastcrlf position) 
> buffer data is written into lineBos.
> 138:                     // The end of this line from next buffer is 
> concatenated to this data in the next iteration.

In trying to help my own understanding here I suggest:

// If no crlf was found, or there was additional data after the last crlf was 
found, then write the leftover data
// in lineBos. If there is more data to read it will be concatenated with the 
current data on the next iteration.
// If there is no more data, or no more crlf found, all the remaining data will 
be processed after the loop, as the
// final line.

test/lib/jdk/test/lib/process/StreamPumper.java line 149:

> 147:             }
> 148:             // Process data remaining after last '\n' in the last buffer.
> 149:             // It is already written in the lineBos buffer but not 
> processed because '\n' hasn't been met.

Suggestion:

// If there was no terminating crlf the remaining data has been written to 
lineBos, but this final line of data
// now needs to be processed by the linePumper.

-------------

PR: https://git.openjdk.org/jdk/pull/13034

Reply via email to