3333 * @run main/othervm HttpsUrlConnClient RSASSA-PSS RSASSA-PSS
3434 */
3535
36- import java .io .*;
36+ import java .io .BufferedReader ;
37+ import java .io .IOException ;
38+ import java .io .InputStream ;
39+ import java .io .InputStreamReader ;
40+ import java .io .OutputStream ;
3741import java .math .BigInteger ;
3842import java .security .KeyPair ;
3943import java .security .KeyPairGenerator ;
4044import java .net .Socket ;
4145import java .net .URL ;
4246import java .net .HttpURLConnection ;
4347import java .net .InetAddress ;
48+
4449import javax .net .ssl .*;
50+
4551import java .security .KeyStore ;
4652import java .security .PublicKey ;
4753import java .security .Security ;
5561import java .security .cert .PKIXRevocationChecker ;
5662import java .security .spec .PKCS8EncodedKeySpec ;
5763import java .text .SimpleDateFormat ;
58- import java .util .*;
64+ import java .util .ArrayList ;
65+ import java .util .Arrays ;
66+ import java .util .Base64 ;
67+ import java .util .Collections ;
68+ import java .util .Date ;
69+ import java .util .HashMap ;
70+ import java .util .List ;
71+ import java .util .Map ;
72+ import java .util .TimeZone ;
73+ import java .util .concurrent .CountDownLatch ;
5974import java .util .concurrent .TimeUnit ;
6075
6176import jdk .test .lib .security .SimpleOCSPServer ;
@@ -92,10 +107,6 @@ public class HttpsUrlConnClient {
92107 static String INT_ALIAS = "intermediate" ;
93108 static String SSL_ALIAS = "ssl" ;
94109
95- /*
96- * Is the server ready to serve?
97- */
98- volatile static boolean serverReady = false ;
99110 volatile int serverPort = 0 ;
100111
101112 volatile Exception serverException = null ;
@@ -164,7 +175,7 @@ static void testPKIXParametersRevEnabled(String[] allowedProts)
164175 ClientParameters cliParams = new ClientParameters ();
165176 cliParams .protocols = allowedProts ;
166177 ServerParameters servParams = new ServerParameters ();
167- serverReady = false ;
178+ CountDownLatch serverReady = new CountDownLatch ( 1 ) ;
168179
169180 System .out .println ("=====================================" );
170181 System .out .println ("Stapling enabled, PKIXParameters with" );
@@ -192,7 +203,7 @@ static void testPKIXParametersRevEnabled(String[] allowedProts)
192203 Security .setProperty ("ocsp.enable" , "false" );
193204
194205 HttpsUrlConnClient sslTest = new HttpsUrlConnClient (cliParams ,
195- servParams );
206+ servParams , serverReady );
196207 TestResult tr = sslTest .getResult ();
197208 if (!checkClientValidationFailure (tr .clientExc , BasicReason .REVOKED )) {
198209 if (tr .clientExc != null ) {
@@ -219,10 +230,11 @@ static void testPKIXParametersRevEnabled(String[] allowedProts)
219230 /*
220231 * Define the server side of the test.
221232 *
222- * If the server prematurely exits, serverReady will be set to true
233+ * If the server prematurely exits, serverReady will be counted down
223234 * to avoid infinite hangs.
224235 */
225- void doServerSide (ServerParameters servParams ) throws Exception {
236+ void doServerSide (ServerParameters servParams , CountDownLatch serverReady )
237+ throws Exception {
226238
227239 // Selectively enable or disable the feature
228240 System .setProperty ("jdk.tls.server.enableStatusRequestExtension" ,
@@ -274,7 +286,7 @@ void doServerSide(ServerParameters servParams) throws Exception {
274286 /*
275287 * Signal Client, we're ready for his connect.
276288 */
277- serverReady = true ;
289+ serverReady . countDown () ;
278290
279291 try (SSLSocket sslSocket = (SSLSocket ) sslServerSocket .accept ();
280292 BufferedReader in = new BufferedReader (
@@ -306,18 +318,13 @@ void doServerSide(ServerParameters servParams) throws Exception {
306318 /*
307319 * Define the client side of the test.
308320 *
309- * If the server prematurely exits, serverReady will be set to true
321+ * If the server prematurely exits, serverReady will be counted down
310322 * to avoid infinite hangs.
311323 */
312- void doClientSide (ClientParameters cliParams ) throws Exception {
324+ void doClientSide (ClientParameters cliParams , CountDownLatch serverReady )
325+ throws Exception {
313326
314- // Wait 5 seconds for server ready
315- for (int i = 0 ; (i < 100 && !serverReady ); i ++) {
316- Thread .sleep (50 );
317- }
318- if (!serverReady ) {
319- throw new RuntimeException ("Server not ready yet" );
320- }
327+ serverReady .await ();
321328
322329 // Selectively enable or disable the feature
323330 System .setProperty ("jdk.tls.client.enableStatusRequestExtension" ,
@@ -373,16 +380,16 @@ void doClientSide(ClientParameters cliParams) throws Exception {
373380 *
374381 * Fork off the other side, then do your work.
375382 */
376- HttpsUrlConnClient (ClientParameters cliParams ,
377- ServerParameters servParams ) throws Exception {
383+ HttpsUrlConnClient (ClientParameters cliParams , ServerParameters servParams ,
384+ CountDownLatch serverReady ) throws Exception {
378385 Exception startException = null ;
379386 try {
380387 if (separateServerThread ) {
381- startServer (servParams , true );
382- startClient (cliParams , false );
388+ startServer (servParams , true , serverReady );
389+ startClient (cliParams , false , serverReady );
383390 } else {
384- startClient (cliParams , true );
385- startServer (servParams , false );
391+ startClient (cliParams , true , serverReady );
392+ startServer (servParams , false , serverReady );
386393 }
387394 } catch (Exception e ) {
388395 startException = e ;
@@ -453,61 +460,64 @@ TestResult getResult() {
453460 return tr ;
454461 }
455462
456- final void startServer (ServerParameters servParams , boolean newThread )
457- throws Exception {
463+ final void startServer (ServerParameters servParams , boolean newThread ,
464+ CountDownLatch serverReady ) throws IOException {
458465 if (newThread ) {
459466 serverThread = new Thread () {
460467 @ Override
461468 public void run () {
462469 try {
463- doServerSide (servParams );
470+ doServerSide (servParams , serverReady );
464471 } catch (Exception e ) {
465472 /*
466473 * Our server thread just died.
467474 *
468475 * Release the client, if not active already...
469476 */
470- System .err .println ("Server died..." );
471- serverReady = true ;
477+ System .err .println ("Server died: " + e );
472478 serverException = e ;
479+ } finally {
480+ serverReady .countDown ();
473481 }
474482 }
475483 };
476484 serverThread .start ();
477485 } else {
478486 try {
479- doServerSide (servParams );
487+ doServerSide (servParams , serverReady );
480488 } catch (Exception e ) {
489+ System .err .println ("Server died: " + e );
481490 serverException = e ;
482491 } finally {
483- serverReady = true ;
492+ serverReady . countDown () ;
484493 }
485494 }
486495 }
487496
488- final void startClient (ClientParameters cliParams , boolean newThread )
489- throws Exception {
497+ final void startClient (ClientParameters cliParams , boolean newThread ,
498+ CountDownLatch serverReady ) throws Exception {
490499 if (newThread ) {
491500 clientThread = new Thread () {
492501 @ Override
493502 public void run () {
494503 try {
495- doClientSide (cliParams );
504+ doClientSide (cliParams , serverReady );
496505 } catch (Exception e ) {
497506 /*
498507 * Our client thread just died.
499508 */
500- System .err .println ("Client died..." );
509+ System .err .println ("Client died: " + e );
501510 clientException = e ;
502511 }
503512 }
504513 };
505514 clientThread .start ();
506515 } else {
507516 try {
508- doClientSide (cliParams );
517+ doClientSide (cliParams , serverReady );
509518 } catch (Exception e ) {
510519 clientException = e ;
520+ System .err .println ("Client died: " + e );
511521 }
512522 }
513523 }
0 commit comments