< prev index next >
test/javax/net/ssl/FixingJavadocs/SSLSessionNulls.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2001, 2011, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2001, 2016, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 24,143 ****
/*
* @test
* @bug 4387882
* @summary Need to revisit the javadocs for JSSE, especially the
* promoted classes.
* @run main/othervm SSLSessionNulls
*
* SunJSSE does not support dynamic system properties, no way to re-use
* system properties in samevm/agentvm mode.
* @author Brad Wetmore
*/
! import java.io.*;
! import java.net.*;
! import javax.net.ssl.*;
! public class SSLSessionNulls {
!
! /*
! * =============================================================
! * Set the various variables needed for the tests, then
! * specify what tests to run on each side.
! */
! /*
! * Should we run the client or server in a separate thread?
! * Both sides can throw exceptions, but do you have a preference
! * as to which side should be the main thread.
! */
! static boolean separateServerThread = true;
/*
* Where do we find the keystores?
*/
static String pathToStores = "../etc";
static String keyStoreFile = "keystore";
static String trustStoreFile = "truststore";
static String passwd = "passphrase";
! /*
! * Is the server ready to serve?
! */
! volatile static boolean serverReady = false;
!
! /*
! * Turn on SSL debugging?
! */
! static boolean debug = false;
!
! /*
! * If the client or server is doing some kind of object creation
! * that the other side depends on, and that thread prematurely
! * exits, you may experience a hang. The test harness will
! * terminate all hung threads after its timeout has expired,
! * currently 3 minutes by default, but you might try to be
! * smart about it....
! */
!
! /*
! * Define the server side of the test.
! *
! * If the server prematurely exits, serverReady will be set to true
! * to avoid infinite hangs.
! */
! void doServerSide() throws Exception {
! SSLServerSocketFactory sslssf =
! (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
! SSLServerSocket sslServerSocket =
! (SSLServerSocket) sslssf.createServerSocket(serverPort);
! serverPort = sslServerSocket.getLocalPort();
!
! /*
! * Signal Client, we're ready for his connect.
! */
! serverReady = true;
! SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();
! InputStream sslIS = sslSocket.getInputStream();
! OutputStream sslOS = sslSocket.getOutputStream();
sslIS.read();
sslOS.write(85);
sslOS.flush();
!
! sslSocket.close();
! }
!
! /*
! * Define the client side of the test.
! *
! * If the server prematurely exits, serverReady will be set to true
! * to avoid infinite hangs.
! */
! void doClientSide() throws Exception {
!
! /*
! * Wait for server to get started.
! */
! while (!serverReady) {
! Thread.sleep(50);
! }
!
! SSLSocketFactory sslsf =
! (SSLSocketFactory) SSLSocketFactory.getDefault();
! SSLSocket sslSocket = (SSLSocket)
! sslsf.createSocket("localhost", serverPort);
!
! InputStream sslIS = sslSocket.getInputStream();
! OutputStream sslOS = sslSocket.getOutputStream();
sslOS.write(280);
sslOS.flush();
sslIS.read();
! SSLSession sslSession = sslSocket.getSession();
try {
sslSession.getValue(null);
} catch (IllegalArgumentException e) {
System.out.print("Caught proper exception: ");
--- 24,84 ----
/*
* @test
* @bug 4387882
* @summary Need to revisit the javadocs for JSSE, especially the
* promoted classes.
+ * @library /javax/net/ssl/templates
* @run main/othervm SSLSessionNulls
*
* SunJSSE does not support dynamic system properties, no way to re-use
* system properties in samevm/agentvm mode.
* @author Brad Wetmore
*/
! import java.io.IOException;
! import java.io.InputStream;
! import java.io.OutputStream;
! import javax.net.ssl.SSLSession;
! public class SSLSessionNulls {
/*
* Where do we find the keystores?
*/
static String pathToStores = "../etc";
static String keyStoreFile = "keystore";
static String trustStoreFile = "truststore";
static String passwd = "passphrase";
! public static void main(String[] args) throws Exception {
! String keyFilename =
! System.getProperty("test.src", "./") + "/" + pathToStores +
! "/" + keyStoreFile;
! String trustFilename =
! System.getProperty("test.src", "./") + "/" + pathToStores +
! "/" + trustStoreFile;
! SSLTest.setup(keyFilename, trustFilename, passwd);
! new SSLTest()
! .setServerApplication((socket, test) -> {
! InputStream sslIS = socket.getInputStream();
! OutputStream sslOS = socket.getOutputStream();
sslIS.read();
sslOS.write(85);
sslOS.flush();
! })
! .setClientApplication((socket, test) -> {
! InputStream sslIS = socket.getInputStream();
! OutputStream sslOS = socket.getOutputStream();
sslOS.write(280);
sslOS.flush();
sslIS.read();
! SSLSession sslSession = socket.getSession();
try {
sslSession.getValue(null);
} catch (IllegalArgumentException e) {
System.out.print("Caught proper exception: ");
*** 161,290 ****
String [] names = sslSession.getValueNames();
if ((names == null) || (names.length != 0)) {
throw new IOException(
"getValueNames didn't return 0-length arrary");
}
!
! sslSocket.close();
! }
!
! /*
! * =============================================================
! * The remainder is just support stuff
! */
!
! // use any free port by default
! volatile int serverPort = 0;
!
! volatile Exception serverException = null;
! volatile Exception clientException = null;
!
! public static void main(String[] args) throws Exception {
! String keyFilename =
! System.getProperty("test.src", "./") + "/" + pathToStores +
! "/" + keyStoreFile;
! String trustFilename =
! System.getProperty("test.src", "./") + "/" + pathToStores +
! "/" + trustStoreFile;
!
! System.setProperty("javax.net.ssl.keyStore", keyFilename);
! System.setProperty("javax.net.ssl.keyStorePassword", passwd);
! System.setProperty("javax.net.ssl.trustStore", trustFilename);
! System.setProperty("javax.net.ssl.trustStorePassword", passwd);
!
! if (debug)
! System.setProperty("javax.net.debug", "all");
!
! /*
! * Start the tests.
! */
! new SSLSessionNulls();
! }
!
! Thread clientThread = null;
! Thread serverThread = null;
!
! /*
! * Primary constructor, used to drive remainder of the test.
! *
! * Fork off the other side, then do your work.
! */
! SSLSessionNulls() throws Exception {
! if (separateServerThread) {
! startServer(true);
! startClient(false);
! } else {
! startClient(true);
! startServer(false);
! }
!
! /*
! * Wait for other side to close down.
! */
! if (separateServerThread) {
! serverThread.join();
! } else {
! 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.
! */
! if (serverException != null) {
! System.out.print("Server Exception:");
! throw serverException;
! }
! if (clientException != null) {
! System.out.print("Client Exception:");
! throw clientException;
! }
! }
!
! void startServer(boolean newThread) throws Exception {
! if (newThread) {
! serverThread = new Thread() {
! public void run() {
! try {
! doServerSide();
! } catch (Exception e) {
! /*
! * Our server thread just died.
! *
! * Release the client, if not active already...
! */
! System.err.println("Server died...");
! serverReady = true;
! serverException = e;
! }
! }
! };
! serverThread.start();
! } else {
! doServerSide();
! }
! }
!
! void startClient(boolean newThread) throws Exception {
! if (newThread) {
! clientThread = new Thread() {
! public void run() {
! try {
! doClientSide();
! } catch (Exception e) {
! /*
! * Our client thread just died.
! */
! System.err.println("Client died...");
! clientException = e;
! }
! }
! };
! clientThread.start();
! } else {
! doClientSide();
! }
}
}
--- 102,110 ----
String [] names = sslSession.getValueNames();
if ((names == null) || (names.length != 0)) {
throw new IOException(
"getValueNames didn't return 0-length arrary");
}
! })
! .runTest();
}
}
< prev index next >