From 3499cbe8dfeedcfbd065eb2093de61595c434b7f Mon Sep 17 00:00:00 2001 From: coffeys Date: Mon, 7 Mar 2011 14:43:11 +0000 Subject: [PATCH] 7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up Reviewed-by: alanb --- .../com/sun/jndi/ldap/NoWaitForReplyTest.java | 119 ++++++++++-------- 1 file changed, 66 insertions(+), 53 deletions(-) diff --git a/test/com/sun/jndi/ldap/NoWaitForReplyTest.java b/test/com/sun/jndi/ldap/NoWaitForReplyTest.java index 4a93ef41f..bb772c09b 100644 --- a/test/com/sun/jndi/ldap/NoWaitForReplyTest.java +++ b/test/com/sun/jndi/ldap/NoWaitForReplyTest.java @@ -38,81 +38,94 @@ public class NoWaitForReplyTest { public static void main(String[] args) throws Exception { - boolean passed = false; + 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"); + // start the LDAP server + DummyServer ldapServer = new DummyServer(); + ldapServer.start(); - // Wait up to 10 seconds for a response from the LDAP server - env.put("com.sun.jndi.ldap.read.timeout", "10000"); + // 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"); - // Don't wait until the first search reply is received - env.put("com.sun.jndi.ldap.search.waitForReply", "false"); + // Wait up to 10 seconds for a response from the LDAP server + env.put("com.sun.jndi.ldap.read.timeout", "10000"); - // Send the LDAP search request without first authenticating (no bind) - env.put("java.naming.ldap.version", "3"); + // Don't wait until the first search reply is received + env.put("com.sun.jndi.ldap.search.waitForReply", "false"); - DummyServer ldapServer = new DummyServer(); + // Send the LDAP search request without first authenticating (no bind) + env.put("java.naming.ldap.version", "3"); - try { - // start the LDAP server - ldapServer.start(); + try { - // Create initial context - System.out.println("Client: connecting to the server"); - DirContext ctx = new InitialDirContext(env); + // Create initial context + System.out.println("Client: connecting to the server"); + DirContext ctx = new InitialDirContext(env); - 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); + 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); - // 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"); + // 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"); - // Close the context when we're done - ctx.close(); + // Close the context when we're done + ctx.close(); - } catch (NamingException e) { - // timeout (ignore) - } - ldapServer.interrupt(); + } 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"); + 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() { - } + DummyServer() throws IOException { + this.serverSocket = new ServerSocket(0); + System.out.println("Server: listening on port " + serverSocket.getLocalPort()); + } - public void run() { - try { - ServerSocket serverSock = new ServerSocket(serverPort); - Socket socket = serverSock.accept(); + public int getPortNumber() { + return serverSocket.getLocalPort(); + } + + public void run() { + try (Socket socket = serverSocket.accept()) { System.out.println("Server: accepted a connection"); - BufferedInputStream bin = - new BufferedInputStream(socket.getInputStream()); + InputStream in = socket.getInputStream(); - while (true) { - bin.read(); + while (!isInterrupted()) { + in.skip(in.available()); } - } catch (IOException e) { - // ignore + + } catch (Exception e) { + // ignore + + } finally { + System.out.println("Server: shutting down"); + try { + serverSocket.close(); + } catch (IOException e) { + // ignore + } + } } } } -} -- GitLab