RFR(S): 8240226: DeflateIn_InflateOut.java test incorrectly assumes size of compressed file

Martin Buchholz martinrb at google.com
Fri Feb 28 15:39:53 UTC 2020


LGTM.
We're all resisting the urge to modernize this test.

On Fri, Feb 28, 2020 at 5:17 AM Volker Simonis <volker.simonis at gmail.com>
wrote:

> Hi,
>
> can I please get a review for this trivial test fix:
>
> http://cr.openjdk.java.net/~simonis/webrevs/2020/8240226/
> https://bugs.openjdk.java.net/browse/JDK-8240226
>
> The SkipBytes() subtest in DeflateIn_InflateOut.java executes several
> steps and for each step it deflates an array of 1024*1024 bytes. In
> every step, before deflation is performed, the array is refilled with
> random bytes. However, only after the first step, the size of the
> generated, deflated stream is checked and recorded. The following
> subtests all assume that deflating the array filled with the same
> number of, but different, random bytes will produce a deflated stream
> of the same size.
>
> This assumption is wrong. Depending on the exact contents of the
> source array, the size of the generated, deflated result might
> slightly differ. For some reason, the deflated result produced by the
> default zlib implementation seems to always have the same size
> (although there's no guarantee for this), but other zlib
> implementations sometimes produce differently sized, deflated results.
>
> The problem can easily be reproduced by placing a version of
> Cloudflare's zlib clone (https://github.com/cloudflare/zlib) on the
> LD_LIBRARY_PATH (for jdk versions configured with
> "--with-zlib=system", which is the default since jdk11):
>
> $ LD_LIBRARY_PATH=/ziptests/build/zlib-cloudflare
> ./images/jdk/bin/java DeflateIn_InflateOut
> java.lang.Exception: Stack trace
> at java.base/java.lang.Thread.dumpStack(Thread.java:1379)
> at DeflateIn_InflateOut.fail(DeflateIn_InflateOut.java:235)
> at DeflateIn_InflateOut.check(DeflateIn_InflateOut.java:238)
> at DeflateIn_InflateOut.SkipBytes(DeflateIn_InflateOut.java:204)
> at DeflateIn_InflateOut.realMain(DeflateIn_InflateOut.java:229)
> at DeflateIn_InflateOut.main(DeflateIn_InflateOut.java:243)
>
> Passed = 16 failed = 1
> Exception in thread "main" java.lang.AssertionError: Some tests failed
> at DeflateIn_InflateOut.main(DeflateIn_InflateOut.java:245)
>
> The test may (and actually does) randomly fail at any of the subtests
> executed in SkipBytes() which reuse "numReadable", the size of the
> first deflated stream generated in that method.
>
> The fix is trivial. It is unnecessary to refill the source array with
> random bytes before each subtest. Filling the array one time at test
> startup time should be sufficient.
>
> Thank you and best regards,
> Volker
>


More information about the core-libs-dev mailing list