mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

ludovicp
29.35.2010 7c30dbb5403772b323df3ad907d9ed15d23b5aee
opends/tests/staf-tests/shared/java/ldapjdk/PSearch.java
@@ -22,109 +22,129 @@
 * CDDL HEADER END
 *
 *
 *      Copyright 2009 Sun Microsystems, Inc.
 *      Copyright 2009-2010 Sun Microsystems, Inc.
 */
import netscape.ldap.util.GetOpt;
import com.ibm.staf.STAFHandle;
public class PSearch {
    public static void main(String[] args) {
        String usage = "Usage: psearch -h <hostname> -p <port> -b <suffix>" + "[-D bindDN] [-w bindPW]" + "-f <fileURL+file name>" + "-l <y>" + "-n <number of thread>" + " -o <add,modify,delete,moddn>";
        String hostname = "localhost";
        int portnumber = 1389; //LDAPv3.DEFAULT_PORT;
        int nbThreads = 1;//number of thread by default
        // Check for these options. -H means to print out a usage message.
        GetOpt options = new GetOpt("h:p:b:D:w:H:f:n:o:l", args);
  public static void main(String[] args) {
    String usage = "Usage: psearch -h <hostname> -p <port> -b <suffix>" + "[-D bindDN] [-w bindPW]" + "-f <fileURL+file name>" + "-s" + "-n <number of thread>" + " -o <add,modify,delete,moddn>"+ " -l";
    String hostname = "localhost";
    int portnumber = 1389; //LDAPv3.DEFAULT_PORT;
    int nbThreads = 1;//number of thread by default
    // Check for these options. -H means to print out a usage message.
    GetOpt options = new GetOpt("h:p:b:D:w:H:f:n:o:s:l", args);
        // Get the arguments specified for each option.
        String host = options.getOptionParam('h');
        // host
        if (options.hasOption('h')) {
            if (host == null) {
                // usage
                System.out.println(usage);
                System.exit(1);
            } else {
                hostname = host;
            }
        }
        String port = options.getOptionParam('p');
        // If a port number was specified, convert the port value
        // to an integer.
        if (port != null) {
            try {
                portnumber = java.lang.Integer.parseInt(port);
            } catch (java.lang.Exception e) {
                System.out.println("Invalid port number: " + port);
                System.out.println(usage);
                System.exit(1);
            }
        }
        //number of thread
        String nbT = options.getOptionParam('n');
        if (nbT != null) {
            try {
                nbThreads = java.lang.Integer.parseInt(nbT);
            } catch (java.lang.Exception e) {
                System.out.println("Invalid Thread number: " + nbT);
                System.out.println(usage);
                System.exit(1);
            }
        }
        // PSearch suffix
        String suffix = options.getOptionParam('b');
        String bindDN = options.getOptionParam('D');
        String bindPW = options.getOptionParam('w');
        //operations all by default
        String operation = PSearchOperations.ALL;
        if (options.hasOption('o')) {
            String opParam = options.getOptionParam('o');
            if (opParam.equals("add")) {
                operation = PSearchOperations.ADD;
            } else if (opParam.equals("modify")) {
                operation = PSearchOperations.MODIFY;
            } else if (opParam.equals("delete")) {
                operation = PSearchOperations.DELETE;
            } else if (opParam.equals("moddn")) {
                operation = PSearchOperations.MODDN;
            }else if (opParam.equals("all")) {
                operation = PSearchOperations.ALL;;
            } else {
                System.out.println("Invalid operation type: " + opParam);
                System.out.println(usage);
                System.exit(1);
            }
        }
        // to disable the log files
        boolean useFile = false;
        String fileName = "logLile";
        if (options.hasOption('f')) {
            useFile = options.hasOption('f');
            fileName = options.getOptionParam('f');
        }
        // to enable system out logs
        boolean output = options.hasOption('l');
        System.out.println("Connecting to " + hostname + ":" + portnumber +
                " as \"" + bindDN + "\"" +
                " on suffix \"" + suffix + "\"" +
                " on operation \"" + operation + "\"" +
                " use file: \"" + useFile + "\" output: \"" + output + "\"");
        //start all thread
        for (int i = 0; i < nbThreads; i++) {
            PSearchOperations ps = new PSearchOperations(i, hostname, portnumber, bindDN, bindPW, suffix);
            if (useFile) {
                ps.useLogFile(useFile);
                ps.setLogFile(fileName);
            }
            ps.setOutput(output);
            ps.setOperation(operation);
            ps.start();
        }
    // Get the arguments specified for each option.
    String host = options.getOptionParam('h');
    // host
    if (options.hasOption('h')) {
      if (host == null) {
        // usage
        System.out.println(usage);
        System.exit(1);
      } else {
        hostname = host;
      }
    }
    String port = options.getOptionParam('p');
    // If a port number was specified, convert the port value
    // to an integer.
    if (port != null) {
      try {
        portnumber = java.lang.Integer.parseInt(port);
      } catch (java.lang.Exception e) {
        System.out.println("Invalid port number: " + port);
        System.out.println(usage);
        System.exit(1);
      }
    }
    //number of thread
    String nbT = options.getOptionParam('n');
    if (nbT != null) {
      try {
        nbThreads = java.lang.Integer.parseInt(nbT);
      } catch (java.lang.Exception e) {
        System.out.println("Invalid Thread number: " + nbT);
        System.out.println(usage);
        System.exit(1);
      }
    }
    // PSearch suffix
    String suffix = options.getOptionParam('b');
    String bindDN = options.getOptionParam('D');
    String bindPW = options.getOptionParam('w');
    //operations all by default
    String operation = PSearchOperations.ALL;
    if (options.hasOption('o')) {
      String opParam = options.getOptionParam('o');
      if (opParam.equals("add")) {
        operation = PSearchOperations.ADD;
      } else if (opParam.equals("modify")) {
        operation = PSearchOperations.MODIFY;
      } else if (opParam.equals("delete")) {
        operation = PSearchOperations.DELETE;
      } else if (opParam.equals("moddn")) {
        operation = PSearchOperations.MODDN;
      } else if (opParam.equals("all")) {
        operation = PSearchOperations.ALL;
        ;
      } else {
        System.out.println("Invalid operation type: " + opParam);
        System.out.println(usage);
        System.exit(1);
      }
    }
    // to disable the log files
    boolean useFile = false;
    String fileName = "logLile";
    if (options.hasOption('f')) {
      useFile = options.hasOption('f');
      fileName = options.getOptionParam('f');
    }
    // to enable diff format
    boolean ldifFormat = options.hasOption('l');
    // to enable system out logs
    boolean output = options.hasOption('s');
    System.out.println("Connecting to " + hostname + ":" + portnumber +
            " as \"" + bindDN + "\"" +
            " on suffix \"" + suffix + "\"" +
            " on operation \"" + operation + "\"" +
            " use file: \"" + useFile + "\" output: \"" + output + "\"");
    //start all thread
    for (int i = 0; i < nbThreads; i++) {
      PSearchOperations ps = new PSearchOperations(i, hostname, portnumber, bindDN, bindPW, suffix);
      if (useFile) {
        ps.useLogFile(useFile);
        ps.setLogFile(fileName);
      }
      ps.setOutput(output);
      ps.setLdifFormat(ldifFormat);
      ps.setOperation(operation);
      ps.start();
    }
        try {
      STAFHandle handle = new STAFHandle("PSearch listener");
      handle.submit2(hostname, "SEM", "PULSE EVENT PSearch/Ready");
      handle.submit2(hostname, "SEM", "WAIT EVENT PSearch tests/Completed");
      handle.submit2(hostname, "SEM", "DELETE EVENT PSearch tests/Completed");
      System.exit(0);
    } catch (Exception e) {
      System.out.println("STAF Handle fail");
    }
  }
}