8019341: Update CookieHttpsClientTest to use the newer framework.
Reviewed-by: xuelei, smarks, michaelm
--- a/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java Fri Jul 05 14:37:41 2013 -0700
+++ b/jdk/test/sun/security/ssl/sun/net/www/protocol/https/HttpsURLConnection/CookieHttpsClientTest.java Fri Jul 05 18:22:58 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,15 +21,14 @@
* questions.
*/
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+
/*
* @test
* @bug 7129083
* @summary Cookiemanager does not store cookies if url is read
* before setting cookiemanager
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
- *
* @run main/othervm CookieHttpsClientTest
*/
@@ -186,10 +185,10 @@
public static void main(String args[]) throws Exception {
String keyFilename =
- System.getProperty("test.src", "./") + "/" + pathToStores +
+ System.getProperty("test.src", ".") + "/" + pathToStores +
"/" + keyStoreFile;
String trustFilename =
- System.getProperty("test.src", "./") + "/" + pathToStores +
+ System.getProperty("test.src", ".") + "/" + pathToStores +
"/" + trustStoreFile;
System.setProperty("javax.net.ssl.keyStore", keyFilename);
@@ -205,40 +204,83 @@
Thread clientThread = null;
Thread serverThread = null;
+
/*
* Primary constructor, used to drive remainder of the test.
*
* Fork off the other side, then do your work.
*/
CookieHttpsClientTest() throws Exception {
- if (separateServerThread) {
- startServer(true);
- startClient(false);
- } else {
- startClient(true);
- startServer(false);
+ Exception startException = null;
+ try {
+ if (separateServerThread) {
+ startServer(true);
+ startClient(false);
+ } else {
+ startClient(true);
+ startServer(false);
+ }
+ } catch (Exception e) {
+ startException = e;
}
/*
* Wait for other side to close down.
*/
if (separateServerThread) {
- serverThread.join();
+ if (serverThread != null) {
+ serverThread.join();
+ }
} else {
- clientThread.join();
+ if (clientThread != null) {
+ clientThread.join();
+ }
}
/*
* When we get here, the test is pretty much over.
- *
- * If the main thread excepted, that propagates back
- * immediately. If the other thread threw an exception, we
- * should report back.
+ * Which side threw the error?
+ */
+ Exception local;
+ Exception remote;
+
+ if (separateServerThread) {
+ remote = serverException;
+ local = clientException;
+ } else {
+ remote = clientException;
+ local = serverException;
+ }
+
+ Exception exception = null;
+
+ /*
+ * Check various exception conditions.
*/
- if (serverException != null)
- throw serverException;
- if (clientException != null)
- throw clientException;
+ if ((local != null) && (remote != null)) {
+ // If both failed, return the curthread's exception.
+ local.initCause(remote);
+ exception = local;
+ } else if (local != null) {
+ exception = local;
+ } else if (remote != null) {
+ exception = remote;
+ } else if (startException != null) {
+ exception = startException;
+ }
+
+ /*
+ * If there was an exception *AND* a startException,
+ * output it.
+ */
+ if (exception != null) {
+ if (exception != startException) {
+ exception.addSuppressed(startException);
+ }
+ throw exception;
+ }
+
+ // Fall-through: no exception to throw!
}
void startServer(boolean newThread) throws Exception {
@@ -261,7 +303,13 @@
};
serverThread.start();
} else {
- doServerSide();
+ try {
+ doServerSide();
+ } catch (Exception e) {
+ serverException = e;
+ } finally {
+ serverReady = true;
+ }
}
}
@@ -277,12 +325,16 @@
*/
System.err.println("Client died...");
clientException = e;
- }
+ }
}
};
clientThread.start();
} else {
- doClientSide();
+ try {
+ doClientSide();
+ } catch (Exception e) {
+ clientException = e;
+ }
}
}
}
--- a/jdk/test/sun/security/ssl/templates/SSLEngineTemplate.java Fri Jul 05 14:37:41 2013 -0700
+++ b/jdk/test/sun/security/ssl/templates/SSLEngineTemplate.java Fri Jul 05 18:22:58 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,14 +21,14 @@
* questions.
*/
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+
/*
* @test
* @bug 1234567
* @summary SSLEngine has not yet caused Solaris kernel to panic
* @run main/othervm SSLEngineTemplate
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
*/
/**
--- a/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java Fri Jul 05 14:37:41 2013 -0700
+++ b/jdk/test/sun/security/ssl/templates/SSLSocketSSLEngineTemplate.java Fri Jul 05 18:22:58 2013 -0700
@@ -309,14 +309,25 @@
} catch (Exception e) {
serverException = e;
} finally {
- socket.close();
+ if (socket != null) {
+ socket.close();
+ }
// Wait for the client to join up with us.
- thread.join();
+ if (thread != null) {
+ thread.join();
+ }
+
if (serverException != null) {
+ if (clientException != null) {
+ serverException.initCause(clientException);
+ }
throw serverException;
}
if (clientException != null) {
+ if (serverException != null) {
+ clientException.initCause(serverException);
+ }
throw clientException;
}
}
--- a/jdk/test/sun/security/ssl/templates/SSLSocketTemplate.java Fri Jul 05 14:37:41 2013 -0700
+++ b/jdk/test/sun/security/ssl/templates/SSLSocketTemplate.java Fri Jul 05 18:22:58 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -21,14 +21,14 @@
* questions.
*/
+// SunJSSE does not support dynamic system properties, no way to re-use
+// system properties in samevm/agentvm mode.
+
/*
* @test
* @bug 1234567
* @summary Use this template to help speed your client/server tests.
* @run main/othervm SSLSocketTemplate
- *
- * SunJSSE does not support dynamic system properties, no way to re-use
- * system properties in samevm/agentvm mode.
* @author Brad Wetmore
*/
@@ -180,6 +180,7 @@
* Fork off the other side, then do your work.
*/
SSLSocketTemplate() throws Exception {
+ Exception startException = null;
try {
if (separateServerThread) {
startServer(true);
@@ -189,16 +190,20 @@
startServer(false);
}
} catch (Exception e) {
- // swallow for now. Show later
+ startException = e;
}
/*
* Wait for other side to close down.
*/
if (separateServerThread) {
- serverThread.join();
+ if (serverThread != null) {
+ serverThread.join();
+ }
} else {
- clientThread.join();
+ if (clientThread != null) {
+ clientThread.join();
+ }
}
/*
@@ -207,36 +212,44 @@
*/
Exception local;
Exception remote;
- String whichRemote;
if (separateServerThread) {
remote = serverException;
local = clientException;
- whichRemote = "server";
} else {
remote = clientException;
local = serverException;
- whichRemote = "client";
+ }
+
+ Exception exception = null;
+
+ /*
+ * Check various exception conditions.
+ */
+ if ((local != null) && (remote != null)) {
+ // If both failed, return the curthread's exception.
+ local.initCause(remote);
+ exception = local;
+ } else if (local != null) {
+ exception = local;
+ } else if (remote != null) {
+ exception = remote;
+ } else if (startException != null) {
+ exception = startException;
}
/*
- * If both failed, return the curthread's exception, but also
- * print the remote side Exception
+ * If there was an exception *AND* a startException,
+ * output it.
*/
- if ((local != null) && (remote != null)) {
- System.out.println(whichRemote + " also threw:");
- remote.printStackTrace();
- System.out.println();
- throw local;
+ if (exception != null) {
+ if (exception != startException) {
+ exception.addSuppressed(startException);
+ }
+ throw exception;
}
- if (remote != null) {
- throw remote;
- }
-
- if (local != null) {
- throw local;
- }
+ // Fall-through: no exception to throw!
}
void startServer(boolean newThread) throws Exception {