OpenJDK / jdk / jdk
changeset 8574:8b25e0b1d00e
7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up
Reviewed-by: alanb
author | coffeys |
---|---|
date | Mon, 07 Mar 2011 14:43:11 +0000 |
parents | e3f785b9d3fb |
children | 2254c2c93b04 |
files | jdk/test/com/sun/jndi/ldap/NoWaitForReplyTest.java |
diffstat | 1 files changed, 71 insertions(+), 58 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/test/com/sun/jndi/ldap/NoWaitForReplyTest.java Fri Mar 04 21:28:35 2011 +0000 +++ b/jdk/test/com/sun/jndi/ldap/NoWaitForReplyTest.java Mon Mar 07 14:43:11 2011 +0000 @@ -38,81 +38,94 @@ public static void main(String[] args) throws Exception { - boolean passed = false; - - // Set up the environment for creating the initial context - Hashtable env = new Hashtable(11); - env.put(Context.PROVIDER_URL, "ldap://localhost:22001"); - env.put(Context.INITIAL_CONTEXT_FACTORY, - "com.sun.jndi.ldap.LdapCtxFactory"); - - // Wait up to 10 seconds for a response from the LDAP server - env.put("com.sun.jndi.ldap.read.timeout", "10000"); - - // Don't wait until the first search reply is received - env.put("com.sun.jndi.ldap.search.waitForReply", "false"); - - // Send the LDAP search request without first authenticating (no bind) - env.put("java.naming.ldap.version", "3"); - - DummyServer ldapServer = new DummyServer(); - - try { + boolean passed = false; // start the LDAP server + DummyServer ldapServer = new DummyServer(); ldapServer.start(); - // Create initial context - System.out.println("Client: connecting to the server"); - DirContext ctx = new InitialDirContext(env); + // Set up the environment for creating the initial context + Hashtable env = new Hashtable(11); + env.put(Context.PROVIDER_URL, "ldap://localhost:" + + ldapServer.getPortNumber()); + env.put(Context.INITIAL_CONTEXT_FACTORY, + "com.sun.jndi.ldap.LdapCtxFactory"); + + // Wait up to 10 seconds for a response from the LDAP server + env.put("com.sun.jndi.ldap.read.timeout", "10000"); - SearchControls scl = new SearchControls(); - scl.setSearchScope(SearchControls.SUBTREE_SCOPE); - System.out.println("Client: performing search"); - NamingEnumeration answer = - ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl); + // Don't wait until the first search reply is received + env.put("com.sun.jndi.ldap.search.waitForReply", "false"); + + // Send the LDAP search request without first authenticating (no bind) + env.put("java.naming.ldap.version", "3"); + + + try { + + // Create initial context + System.out.println("Client: connecting to the server"); + DirContext ctx = new InitialDirContext(env); - // Server will never reply: either we waited in the call above until - // the timeout (fail) or we did not wait and reached here (pass). - passed = true; - System.out.println("Client: did not wait until first reply"); + SearchControls scl = new SearchControls(); + scl.setSearchScope(SearchControls.SUBTREE_SCOPE); + System.out.println("Client: performing search"); + NamingEnumeration answer = + ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl); - // Close the context when we're done - ctx.close(); + // Server will never reply: either we waited in the call above until + // the timeout (fail) or we did not wait and reached here (pass). + passed = true; + System.out.println("Client: did not wait until first reply"); - } catch (NamingException e) { - // timeout (ignore) - } - ldapServer.interrupt(); + // Close the context when we're done + ctx.close(); - if (!passed) { - throw new Exception( - "Test FAILED: should not have waited until first search reply"); - } - System.out.println("Test PASSED"); + } catch (NamingException e) { + // timeout (ignore) + } + ldapServer.interrupt(); + + if (!passed) { + throw new Exception( + "Test FAILED: should not have waited until first search reply"); + } + System.out.println("Test PASSED"); } static class DummyServer extends Thread { - static int serverPort = 22001; + private final ServerSocket serverSocket; + + DummyServer() throws IOException { + this.serverSocket = new ServerSocket(0); + System.out.println("Server: listening on port " + serverSocket.getLocalPort()); + } - DummyServer() { - } + public int getPortNumber() { + return serverSocket.getLocalPort(); + } + + public void run() { + try (Socket socket = serverSocket.accept()) { + System.out.println("Server: accepted a connection"); + InputStream in = socket.getInputStream(); - public void run() { - try { - ServerSocket serverSock = new ServerSocket(serverPort); - Socket socket = serverSock.accept(); - System.out.println("Server: accepted a connection"); - BufferedInputStream bin = - new BufferedInputStream(socket.getInputStream()); + while (!isInterrupted()) { + in.skip(in.available()); + } + + } catch (Exception e) { + // ignore - while (true) { - bin.read(); + } finally { + System.out.println("Server: shutting down"); + try { + serverSocket.close(); + } catch (IOException e) { + // ignore } - } catch (IOException e) { - // ignore + } } } } -}