RFR: 8263320: [test] Add Object Stream Formatter to work with test utility HexPrinter
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
On Tue, 9 Mar 2021 21:37:16 GMT, Roger Riggs <rriggs@openjdk.org> 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<String, String> map = new HashMap<>(); map.put("1", "One"); map.put("2", "Two"); map.put("2.2", "Two"); 0000: 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
On Tue, 9 Mar 2021 21:37:16 GMT, Roger Riggs <rriggs@openjdk.org> 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
On Tue, 9 Mar 2021 21:37:16 GMT, Roger Riggs <rriggs@openjdk.org> 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.
This pull request has now been integrated. Changeset: 788e30c1 Author: Roger Riggs <rriggs@openjdk.org> URL: https://git.openjdk.java.net/jdk/commit/788e30c1 Stats: 1684 lines in 4 files changed: 1684 ins; 0 del; 0 mod 8263320: [test] Add Object Stream Formatter to work with test utility HexPrinter Reviewed-by: chegar ------------- PR: https://git.openjdk.java.net/jdk/pull/2900
participants (2)
-
Chris Hegarty
-
Roger Riggs