--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/com/sun/jndi/ldap/ReadTimeoutTest.java Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,81 @@
+/**
+ * @test
+ * @bug 6176036
+ * @summary Read-timeout specification for LDAP operations
+ */
+
+import java.net.Socket;
+import java.net.ServerSocket;
+import java.io.*;
+import javax.naming.*;
+import javax.naming.directory.*;
+import java.util.Hashtable;
+
+public class ReadTimeoutTest {
+
+ 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.INITIAL_CONTEXT_FACTORY,
+ "com.sun.jndi.ldap.LdapCtxFactory");
+ env.put("com.sun.jndi.ldap.read.timeout", "1000");
+ env.put(Context.PROVIDER_URL, "ldap://localhost:2001");
+
+ Server s = new Server();
+
+ try {
+
+ // start the server
+ s.start();
+
+ // Create initial context
+ DirContext ctx = new InitialDirContext(env);
+ System.out.println("LDAP Client: Connected to the Server");
+
+ SearchControls scl = new SearchControls();
+ scl.setSearchScope(SearchControls.SUBTREE_SCOPE);
+ System.out.println("Performing Search");
+ NamingEnumeration answer =
+ ctx.search("ou=People,o=JNDITutorial", "(objectClass=*)", scl);
+
+ // Close the context when we're done
+ ctx.close();
+ } catch (NamingException e) {
+ passed = true;
+ e.printStackTrace();
+ }
+ s.interrupt();
+ if (!passed) {
+ throw new Exception("Read timeout test failed," +
+ " read timeout exception not thrown");
+ }
+ System.out.println("The test PASSED");
+ }
+
+ static class Server extends Thread {
+
+ static int serverPort = 2001;
+
+ Server() {
+ }
+
+ public void run() {
+ try {
+ ServerSocket serverSock = new ServerSocket(serverPort);
+ Socket socket = serverSock.accept();
+ System.out.println("Server: Connection accepted");
+
+ BufferedInputStream bin = new BufferedInputStream(socket.
+ getInputStream());
+ while (true) {
+ bin.read();
+ }
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+}
+}