提交 3499cbe8 编写于 作者: C coffeys

7025105: TEST_BUG test/com/sun/jndi/ldap/NoWaitForReplyTest.java should be cleaned up

Reviewed-by: alanb
上级 b38912d2
...@@ -38,81 +38,94 @@ public class NoWaitForReplyTest { ...@@ -38,81 +38,94 @@ public class NoWaitForReplyTest {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
boolean passed = false; boolean passed = false;
// Set up the environment for creating the initial context // start the LDAP server
Hashtable env = new Hashtable(11); DummyServer ldapServer = new DummyServer();
env.put(Context.PROVIDER_URL, "ldap://localhost:22001"); ldapServer.start();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
// Wait up to 10 seconds for a response from the LDAP server // Set up the environment for creating the initial context
env.put("com.sun.jndi.ldap.read.timeout", "10000"); 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 // Wait up to 10 seconds for a response from the LDAP server
env.put("com.sun.jndi.ldap.search.waitForReply", "false"); env.put("com.sun.jndi.ldap.read.timeout", "10000");
// Send the LDAP search request without first authenticating (no bind) // Don't wait until the first search reply is received
env.put("java.naming.ldap.version", "3"); 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 try {
ldapServer.start();
// Create initial context // Create initial context
System.out.println("Client: connecting to the server"); System.out.println("Client: connecting to the server");
DirContext ctx = new InitialDirContext(env); DirContext ctx = new InitialDirContext(env);
SearchControls scl = new SearchControls(); SearchControls scl = new SearchControls();
scl.setSearchScope(SearchControls.SUBTREE_SCOPE); scl.setSearchScope(SearchControls.SUBTREE_SCOPE);
System.out.println("Client: performing search"); System.out.println("Client: performing search");
NamingEnumeration answer = NamingEnumeration answer =
ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl); ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl);
// Server will never reply: either we waited in the call above until // Server will never reply: either we waited in the call above until
// the timeout (fail) or we did not wait and reached here (pass). // the timeout (fail) or we did not wait and reached here (pass).
passed = true; passed = true;
System.out.println("Client: did not wait until first reply"); System.out.println("Client: did not wait until first reply");
// Close the context when we're done // Close the context when we're done
ctx.close(); ctx.close();
} catch (NamingException e) { } catch (NamingException e) {
// timeout (ignore) // timeout (ignore)
} }
ldapServer.interrupt(); ldapServer.interrupt();
if (!passed) { if (!passed) {
throw new Exception( throw new Exception(
"Test FAILED: should not have waited until first search reply"); "Test FAILED: should not have waited until first search reply");
} }
System.out.println("Test PASSED"); System.out.println("Test PASSED");
} }
static class DummyServer extends Thread { 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() { public int getPortNumber() {
try { return serverSocket.getLocalPort();
ServerSocket serverSock = new ServerSocket(serverPort); }
Socket socket = serverSock.accept();
public void run() {
try (Socket socket = serverSocket.accept()) {
System.out.println("Server: accepted a connection"); System.out.println("Server: accepted a connection");
BufferedInputStream bin = InputStream in = socket.getInputStream();
new BufferedInputStream(socket.getInputStream());
while (true) { while (!isInterrupted()) {
bin.read(); 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
}
}
} }
} }
} }
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册