7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up
Reviewed-by: alanb
--- 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
+ }
}
}
}
-}