<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">Hi Philipp,</div><div class=""><br class=""></div>Most are fine but PreserveRawManifestEntryAndDigest.java is still very slow and fails intermittently.<div class=""><br class=""></div><div class="">The problem is due to jarsignerProc(). Since you have parallel=true for the test providers, many jarsigner processes would run at the same time and some of our test machines cannot load so many processes (they are also running other jobs).</div><div class=""><br class=""></div><div class="">I read about the place when jarsignerProc() is called and seems you want to make sure the first file is signed by A and the second is not. Can we do this using JarFile API? Does you have other things to check in getExpectedJarSignerOutputUpdatedContentNotValidatedBySignerA()?</div><div class=""><br class=""></div><div class="">How about we remove the `jarsigner -verify` call? Like this:</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> // double-check reading the files with a verifying JarFile</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> try (JarFile jar = new JarFile(jarFilename4, true)) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> if (firstAddedFilename != null) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> JarEntry je1 = jar.getJarEntry(firstAddedFilename);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> jar.getInputStream(je1).readAllBytes();</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(187, 0, 4); background-color: rgb(255, 255, 255);" class="">- assertTrue(je1.getCodeSigners().length > 0);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ CodeSigner[] ss = je1.getCodeSigners();</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ assertTrue(ss.length == 2);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ assertTrue(containsSignerA(ss));</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> if (secondAddedFilename != null) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> JarEntry je2 = jar.getJarEntry(secondAddedFilename);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> jar.getInputStream(je2).readAllBytes();</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(187, 0, 4); background-color: rgb(255, 255, 255);" class="">- assertTrue(je2.getCodeSigners().length > 0);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ CodeSigner[] ss = je2.getCodeSigners();</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ assertTrue(ss.length == 1);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ assertFalse(containsSignerA(ss));</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> }</div><p style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255); min-height: 13px;" class=""> <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(187, 0, 187); background-color: rgb(255, 255, 255);" class="">@@ -392,6 +380,17 @@</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255);" class=""> }</div><p style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; background-color: rgb(255, 255, 255); min-height: 13px;" class=""> <br class="webkit-block-placeholder"></p><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ private static boolean containsSignerA(CodeSigner[] ss) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ for (CodeSigner s : ss) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ X509Certificate x = (X509Certificate)</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ s.getSignerCertPath().getCertificates().get(0);</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ if (x.getSubjectX500Principal().toString().equals("CN=A")) {</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ return true;</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ return false;</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+ }</div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "SF Mono"; color: rgb(25, 187, 3); background-color: rgb(255, 255, 255);" class="">+</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Max</div><br class=""><blockquote type="cite" class="">On Jul 22, 2019, at 10:02 AM, Weijun Wang <<a href="mailto:weijun.wang@oracle.com" class="">weijun.wang@oracle.com</a>> wrote:<br class=""><br class="">Please take a review at<br class=""><br class=""> <a href="http://cr.openjdk.java.net/~weijun/8228456/webrev.00/" class="">http://cr.openjdk.java.net/~weijun/8228456/webrev.00/</a><br class=""><br class="">The change is contributed by Philipp Kunz. Since we are now in RDP 2 and we are not allowed to fix non-test P3 (and lower) bugs. I've removed all src/ changes in Philipp's patch (If I read correctly, is mostly on renaming methods, and brings no behavior change) and made necessary change in test codes to use original method names.<br class=""><br class="">I haven't read the changes yet. I only made sure they pass on my own system. Oracle's test farm is in maintenance during the weekend.<br class=""><br class="">Thanks,<br class="">Max<br class=""><br class=""></blockquote><br class=""></div></body></html>