< 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 >