test/jdk/com/sun/jndi/ldap/lib/LDAPTestUtils.java
author xyin
Tue, 13 Feb 2018 12:26:22 +0800
changeset 48852 478e198da84b
child 57345 ff884a2f247b
permissions -rw-r--r--
8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java Reviewed-by: vtewari, rriggs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
48852
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     1
/*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     2
 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     4
 *
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     7
 * published by the Free Software Foundation.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     8
 *
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    13
 * accompanied this code).
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    14
 *
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    18
 *
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    21
 * questions.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    22
 */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    23
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    24
import com.sun.jndi.ldap.LdapURL;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    25
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    26
import javax.naming.Context;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    27
import javax.naming.NamingEnumeration;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    28
import javax.naming.NamingException;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    29
import javax.naming.directory.Attribute;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    30
import javax.naming.directory.Attributes;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    31
import javax.naming.directory.DirContext;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    32
import javax.naming.directory.SearchResult;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    33
import java.io.FileNotFoundException;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    34
import java.io.PrintStream;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    35
import java.net.ServerSocket;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    36
import java.nio.file.Files;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    37
import java.nio.file.Path;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    38
import java.nio.file.Paths;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    39
import java.util.Enumeration;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    40
import java.util.Hashtable;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    41
import java.util.Vector;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    42
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    43
public class LDAPTestUtils {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    44
    public static final String TEST_LDAP_SERVER_THREAD = "test.ldap.server.thread";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    45
    public static final int CERTS_LOOKUP_MAX_DEPTH = 4;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    46
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    47
    protected static boolean debug = true;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    48
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    49
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    50
     * Process command line arguments and return properties in a Hashtable.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    51
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    52
    public static Hashtable<Object, Object> initEnv(String testname,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    53
            String[] args) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    54
        return initEnv(null, testname, args, false);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    55
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    56
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    57
    public static Hashtable<Object, Object> initEnv(ServerSocket socket,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    58
            String testname, String[] args, boolean authInfo) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    59
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    60
        Hashtable<Object, Object> env = new Hashtable<>();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    61
        String root = "o=IMC,c=US";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    62
        String vendor = "Vendor1";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    63
        String client = "Client1";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    64
        String realm = "";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    65
        Vector<String> refs = new Vector<>();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    66
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    67
        // set defaults for some JNDI properties
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    68
        env.put(Context.INITIAL_CONTEXT_FACTORY,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    69
                "com.sun.jndi.ldap.LdapCtxFactory");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    70
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    71
        if (authInfo) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    72
            env.put(Context.SECURITY_AUTHENTICATION, "simple");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    73
            env.put(Context.SECURITY_PRINCIPAL, "cn=admin,o=IMC,c=US");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    74
            env.put(Context.SECURITY_CREDENTIALS, "secret99");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    75
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    76
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    77
        env.put("root", root);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    78
        env.put("vendor", vendor);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    79
        env.put("client", client);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    80
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    81
        boolean traceEnable = false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    82
        for (int i = 0; i < args.length; i++) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    83
            if (args[i].equals("-D") && (args.length > i + 1)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    84
                extractProperty(args[++i], env);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    85
            } else if (args[i].startsWith("-D")) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    86
                extractProperty(args[i].substring(2), env);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    87
            } else if (args[i].equals("-referral") && (args.length > i + 1)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    88
                refs.addElement(args[++i]);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    89
            } else if (args[i].equals("-trace")) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    90
                traceEnable = true;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    91
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    92
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    93
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    94
        env.put("disabled.realm", realm);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    95
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    96
        if (refs.size() > 0) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    97
            env.put("referrals", refs);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    98
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
    99
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   100
        if (traceEnable) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   101
            enableLDAPTrace(env, testname);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   102
        } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   103
            if (socket != null) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   104
                env.put(TEST_LDAP_SERVER_THREAD,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   105
                        startLDAPServer(socket, getCaptureFile(testname)));
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   106
                env.put("java.naming.provider.url",
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   107
                        "ldap://localhost:" + socket.getLocalPort());
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   108
            } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   109
                // for tests which run against remote server or no server
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   110
                // required
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   111
                debug("Skip local LDAP Server creation "
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   112
                        + "since ServerSocket is null");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   113
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   114
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   115
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   116
        return env;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   117
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   118
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   119
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   120
     * Clean-up the directory context.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   121
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   122
    public static void cleanup(DirContext ctx) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   123
        if (ctx != null) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   124
            try {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   125
                ctx.close();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   126
            } catch (NamingException e) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   127
                // ignore
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   128
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   129
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   130
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   131
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   132
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   133
     * Clean-up the sub context.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   134
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   135
    public static void cleanupSubcontext(DirContext ctx, String name) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   136
        if (ctx != null) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   137
            try {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   138
                ctx.destroySubcontext(name);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   139
            } catch (NamingException ne) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   140
                // ignore
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   141
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   142
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   143
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   144
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   145
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   146
     * Assemble a distinguished name from the base components and the
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   147
     * namespace root.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   148
     *
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   149
     * The components are prefixed with 'dc=' if the root is a DC-style name.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   150
     * Otherwise they are prefixed with 'ou='.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   151
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   152
    public static String buildDN(String[] bases, String root) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   153
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   154
        StringBuilder dn = new StringBuilder();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   155
        String prefix;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   156
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   157
        if (!root.contains("dc=")) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   158
            prefix = "ou=";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   159
        } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   160
            prefix = "dc=";
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   161
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   162
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   163
        for (String base : bases) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   164
            dn.append(prefix).append(base).append(",");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   165
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   166
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   167
        return dn.append(root).toString();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   168
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   169
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   170
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   171
     * Scan the results to confirm that the expected name is present.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   172
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   173
    public static int checkResult(NamingEnumeration results, String name)
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   174
            throws NamingException {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   175
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   176
        return checkResult(results, new String[] { name }, null);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   177
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   178
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   179
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   180
     * Scan the results to confirm that the expected names and attributes
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   181
     * are present.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   182
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   183
    public static int checkResult(NamingEnumeration results, String[] names,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   184
            Attributes attrs) throws NamingException {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   185
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   186
        int found = 0;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   187
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   188
        while (results != null && results.hasMore()) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   189
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   190
            SearchResult entry = (SearchResult) results.next();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   191
            String entryDN = entry.getName();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   192
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   193
            debug(">>> received: " + entryDN);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   194
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   195
            if (entry.isRelative()) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   196
                entryDN = entryDN.toLowerCase(); // normalize
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   197
            } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   198
                LdapURL url = new LdapURL(entryDN); // extract DN
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   199
                entryDN = url.getDN().toLowerCase(); // normalize
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   200
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   201
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   202
            for (String name : names) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   203
                if ((entryDN.contains(name.toLowerCase())) || (entryDN
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   204
                        .equalsIgnoreCase(name))) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   205
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   206
                    debug(">>> checked results: found '" + name + "'");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   207
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   208
                    if (attrs == null || foundAttributes(entry, attrs)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   209
                        found++;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   210
                        break;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   211
                    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   212
                }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   213
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   214
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   215
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   216
        debug(">>> checked results: found " + found
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   217
                + " entries that meet the criteria.");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   218
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   219
        return found;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   220
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   221
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   222
    /*
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   223
     * Confirm that the attributes are present in the entry.
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   224
     */
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   225
    public static boolean foundAttributes(SearchResult entry, Attributes attrs)
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   226
            throws NamingException {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   227
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   228
        Attributes eattrs = entry.getAttributes();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   229
        int found = 0;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   230
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   231
        if ((eattrs == null) || (attrs == null)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   232
            return false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   233
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   234
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   235
        for (NamingEnumeration ne = attrs.getAll(); ne.hasMoreElements(); ) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   236
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   237
            Attribute attr = (Attribute) ne.next();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   238
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   239
            if (equalsIgnoreCase(eattrs.get(attr.getID()), attr)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   240
                found++;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   241
            } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   242
                debug(">>> foundAttributes: no match for " + attr.getID());
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   243
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   244
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   245
        debug(">>> foundAttributes: found " + found + " attributes");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   246
        return (found == attrs.size());
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   247
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   248
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   249
    public static Thread startLDAPServer(ServerSocket serverSocket,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   250
            String fileName) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   251
        if (serverSocket == null) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   252
            throw new RuntimeException("Error: failed to create LDAPServer "
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   253
                    + "since ServerSocket is null");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   254
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   255
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   256
        if (!Files.exists(Paths.get(fileName))) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   257
            throw new RuntimeException(
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   258
                    "Error: failed to create LDAPServer, not found ldap "
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   259
                            + "cache file " + fileName);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   260
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   261
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   262
        Thread thread = new Thread(() -> {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   263
            try {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   264
                new test.LDAPServer(serverSocket, fileName);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   265
            } catch (Exception e) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   266
                System.out.println("Warning: LDAP server running with issue");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   267
                e.printStackTrace();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   268
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   269
        });
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   270
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   271
        thread.start();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   272
        return thread;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   273
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   274
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   275
    private static boolean equalsIgnoreCase(Attribute received,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   276
            Attribute expected) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   277
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   278
        if (received == null || !received.getID()
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   279
                .equalsIgnoreCase(expected.getID())) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   280
            return false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   281
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   282
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   283
        try {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   284
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   285
            Enumeration expectedVals = expected.getAll();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   286
            Object obj;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   287
            while (expectedVals.hasMoreElements()) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   288
                obj = expectedVals.nextElement();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   289
                if (!received.contains(obj)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   290
                    if (!(obj instanceof String)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   291
                        return false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   292
                    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   293
                    if (!received.contains(((String) obj).toLowerCase())) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   294
                        return false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   295
                    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   296
                }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   297
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   298
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   299
        } catch (NamingException e) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   300
            return false;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   301
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   302
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   303
        return true;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   304
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   305
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   306
    private static void extractProperty(String propString,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   307
            Hashtable<Object, Object> env) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   308
        int index;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   309
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   310
        if ((index = propString.indexOf('=')) > 0) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   311
            env.put(propString.substring(0, index),
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   312
                    propString.substring(index + 1));
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   313
        } else {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   314
            throw new RuntimeException(
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   315
                    "Failed to extract test args property from " + propString);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   316
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   317
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   318
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   319
    private static void enableLDAPTrace(Hashtable<Object, Object> env,
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   320
            String testname) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   321
        try {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   322
            PrintStream outStream = new PrintStream(getCaptureFile(testname));
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   323
            env.put("com.sun.jndi.ldap.trace.ber", outStream);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   324
        } catch (FileNotFoundException e) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   325
            throw new RuntimeException(
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   326
                    "Error: failed to enable ldap trace: " + e.getMessage(), e);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   327
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   328
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   329
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   330
    private static String getCaptureFile(String testname) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   331
        return Paths.get(System.getProperty("test.src"))
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   332
                .resolve(testname + ".ldap").toString();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   333
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   334
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   335
    public static void debug(Object object) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   336
        if (debug) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   337
            System.out.println(object);
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   338
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   339
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   340
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   341
    public static String findCertsHome(int depth) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   342
        Path path = Paths.get(System.getProperty("test.src", "."))
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   343
                .toAbsolutePath();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   344
        for (int i = depth; i >= 0; i--) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   345
            Path homePath = path.resolve("certs");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   346
            if (Files.exists(homePath) && Files.isDirectory(homePath)) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   347
                return homePath.toString();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   348
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   349
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   350
            path = path.getParent();
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   351
            if (path == null) {
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   352
                break;
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   353
            }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   354
        }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   355
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   356
        return System.getProperty("test.src", ".");
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   357
    }
478e198da84b 8196770: Add JNDI test com/sun/jndi/ldap/blits/AddTests/AddNewEntry.java
xyin
parents:
diff changeset
   358
}