Re: RFR: 8263320: [test] Add Object Stream Formatter to work with test utility HexPrinter

2021-03-18 Thread Chris Hegarty
On Tue, 9 Mar 2021 21:37:16 GMT, Roger Riggs  wrote:

> ObjectStreamPrinter is a Formatter plugin to the test library HexPrinter.
> 
> A binary stream of serialized java objects is converted into a textual form 
> by parsing the header, typecodes, and interpreting the stream contents. The 
> formatter can be used standalone or with the HexPrinter to align the 
> formatted stream with the corresponding hexadecimal bytes.
> 
> StreamDump is a test utility to pass the contents of a file to the HexPrinter 
> utility. The format of the file is guessed from the encoding and initial 
> bytes. ASN.1 and serialized object streams are supported.

Marked as reviewed by chegar (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/2900


RFR: 8263320: [test] Add Object Stream Formatter to work with test utility HexPrinter

2021-03-09 Thread Roger Riggs
ObjectStreamPrinter is a Formatter plugin to the test library HexPrinter.

A binary stream of serialized java objects is converted into a textual form by 
parsing the header, typecodes, and interpreting the stream contents. The 
formatter can be used standalone or with the HexPrinter to align the formatted 
stream with the corresponding hexadecimal bytes.

StreamDump is a test utility to pass the contents of a file to the HexPrinter 
utility. The format of the file is guessed from the encoding and initial bytes. 
ASN.1 and serialized object streams are supported.

-

Commit messages:
 - 8263320: [test] Add Object Stream Formatter to work with test utility 
HexPrinter

Changes: https://git.openjdk.java.net/jdk/pull/2900/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2900&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8263320
  Stats: 1684 lines in 4 files changed: 1684 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2900.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2900/head:pull/2900

PR: https://git.openjdk.java.net/jdk/pull/2900


Re: RFR: 8263320: [test] Add Object Stream Formatter to work with test utility HexPrinter

2021-03-09 Thread Roger Riggs
On Tue, 9 Mar 2021 21:37:16 GMT, Roger Riggs  wrote:

> ObjectStreamPrinter is a Formatter plugin to the test library HexPrinter.
> 
> A binary stream of serialized java objects is converted into a textual form 
> by parsing the header, typecodes, and interpreting the stream contents. The 
> formatter can be used standalone or with the HexPrinter to align the 
> formatted stream with the corresponding hexadecimal bytes.
> 
> StreamDump is a test utility to pass the contents of a file to the HexPrinter 
> utility. The format of the file is guessed from the encoding and initial 
> bytes. ASN.1 and serialized object streams are supported.

The idea is to provide a fairly literal interpretation of the stream contents 
with annotations to make it easy to read and understand the nesting, object 
handle assignments, internal references, class descriptors, and block data 
usage.

A Hashmap with three key/value pairs is formatted:
Map map = new HashMap<>();
map.put("1", "One");
map.put("2", "Two");
map.put("2.2", "Two");

: ac ed 00 05  // ObjectStream Version: 
5
0004: 73 72 00 11 6a 61 76 61 2e 75 74 69  // READ CLASSDESC #0 
java.util.HashMap
0010: 6c 2e 48 61 73 68 4d 61 70   // 
0019:05 07 da c1 c3 16 60  //   svid: 
362498820763181265L
0020: d1   // 
0021:03//   flags: 
WRITE_OBJECT, SERIALIZABLE
0022:   00 02  //   2 field(s) {
0024: 46 00 0a 6c 6f 61 64 46 61 63 74 6f  // F loadFactor 
float; 
0030: 72   // 
0031:49 00 09 74 68 72 65 73 68 6f 6c 64   // I threshold int; 
003d:78//   } ENDBLOCK; 
003e:   70 //   Super: NULL; 
003f:  // OBJ #1 
java.util.HashMap 
003f:  3f  //   loadFactor:0.75 
0040: 40 00 00 // 
0043:  00 00 00 0c //   threshold:12 
0047:  //   CustomData: 
0047:  77 08 00 00 00 10 00 00 00  // BLOCKDATA 8[ 
]; 
0050: 03   // 
0051:74 00 01 31   // STRING #2 "1" 
0055:74 00 03 4f 6e 65 // STRING #3 "One" 
005b:  74 00 01 32 // STRING #4 "2" 
005f:  74  // STRING #5 "Two" 
0060: 00 03 54 77 6f   // 
0065:74 00 03 32 2e 32 // STRING #6 "2.2" 
006b:  71 00 7e 00 05  // REF #5 Two 
0070: 78   // ENDBLOCK; 

The tests include a number of other examples.

-

PR: https://git.openjdk.java.net/jdk/pull/2900