From f2160f4bd1c8ac67e5a86a6710d431e8932877f9 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 28 May 2010 11:47:51 +0000
Subject: [PATCH] Synchronize SDK on java.net with internal repository.
---
sdk/src/com/sun/opends/sdk/tools/ModRate.java | 502 +++++++++++++++++++++++++++----------------------------
1 files changed, 250 insertions(+), 252 deletions(-)
diff --git a/sdk/src/com/sun/opends/sdk/tools/ModRate.java b/sdk/src/com/sun/opends/sdk/tools/ModRate.java
index f1874db..2e689e8 100644
--- a/sdk/src/com/sun/opends/sdk/tools/ModRate.java
+++ b/sdk/src/com/sun/opends/sdk/tools/ModRate.java
@@ -31,7 +31,7 @@
import static com.sun.opends.sdk.messages.Messages.*;
import static com.sun.opends.sdk.tools.ToolConstants.*;
-import static com.sun.opends.sdk.tools.Utils.*;
+import static com.sun.opends.sdk.tools.Utils.filterExitCode;
import java.io.InputStream;
import java.io.OutputStream;
@@ -43,232 +43,15 @@
-
/**
- * A load generation tool that can be used to load a Directory Server
- * with Modify requests using one or more LDAP connections.
+ * A load generation tool that can be used to load a Directory Server with
+ * Modify requests using one or more LDAP connections.
*/
public final class ModRate extends ConsoleApplication
{
- private BooleanArgument verbose;
-
-
-
- /**
- * The main method for ModRate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- */
-
- public static void main(String[] args)
+ private static final class ModifyPerformanceRunner extends PerformanceRunner
{
- int retCode = mainModRate(args, System.in, System.out, System.err);
- System.exit(filterExitCode(retCode));
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that
- * information to run the modrate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @return The error code.
- */
-
- static int mainModRate(String[] args)
- {
- return mainModRate(args, System.in, System.out, System.err);
- }
-
-
-
- /**
- * Parses the provided command-line arguments and uses that
- * information to run the modrate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- * @param inStream
- * The input stream to use for standard input, or
- * <CODE>null</CODE> if standard input is not needed.
- * @param outStream
- * The output stream to use for standard output, or
- * <CODE>null</CODE> if standard output is not needed.
- * @param errStream
- * The output stream to use for standard error, or
- * <CODE>null</CODE> if standard error is not needed.
- * @return The error code.
- */
-
- static int mainModRate(String[] args, InputStream inStream,
- OutputStream outStream, OutputStream errStream)
-
- {
- return new ModRate(inStream, outStream, errStream).run(args);
- }
-
-
-
- private ModRate(InputStream in, OutputStream out, OutputStream err)
- {
- super(in, out, err);
-
- }
-
-
-
- private int run(String[] args)
- {
- // Create the command-line argument parser for use with this
- // program.
- LocalizableMessage toolDescription =
- LocalizableMessage.raw("This utility can be used to "
- + "measure modify performance");
- // TODO: correct usage
- ArgumentParser argParser =
- new ArgumentParser(ModRate.class.getName(), toolDescription,
- false, true, 1, 0, "[modifyString ...]");
- ArgumentParserConnectionFactory connectionFactory;
- ModifyPerformanceRunner runner;
-
- BooleanArgument showUsage;
- StringArgument propertiesFileArgument;
- BooleanArgument noPropertiesFileArgument;
- StringArgument baseDN;
-
- try
- {
- connectionFactory =
- new ArgumentParserConnectionFactory(argParser, this);
- runner = new ModifyPerformanceRunner(argParser, this);
- propertiesFileArgument =
- new StringArgument("propertiesFilePath", null,
- OPTION_LONG_PROP_FILE_PATH, false, false, true,
- INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
- INFO_DESCRIPTION_PROP_FILE_PATH.get());
- argParser.addArgument(propertiesFileArgument);
- argParser.setFilePropertiesArgument(propertiesFileArgument);
-
- noPropertiesFileArgument =
- new BooleanArgument("noPropertiesFileArgument", null,
- OPTION_LONG_NO_PROP_FILE, INFO_DESCRIPTION_NO_PROP_FILE
- .get());
- argParser.addArgument(noPropertiesFileArgument);
- argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
-
- baseDN =
- new StringArgument("baseDN", OPTION_SHORT_BASEDN,
- OPTION_LONG_BASEDN, true, false, true,
- INFO_BASEDN_PLACEHOLDER.get(), null, null,
- INFO_SEARCH_DESCRIPTION_BASEDN.get());
- baseDN.setPropertyName(OPTION_LONG_BASEDN);
- argParser.addArgument(baseDN);
-
- verbose =
- new BooleanArgument("verbose", 'v', "verbose",
- INFO_DESCRIPTION_VERBOSE.get());
- verbose.setPropertyName("verbose");
- argParser.addArgument(verbose);
-
- showUsage =
- new BooleanArgument("showUsage", OPTION_SHORT_HELP,
- OPTION_LONG_HELP, INFO_DESCRIPTION_SHOWUSAGE.get());
- argParser.addArgument(showUsage);
- argParser.setUsageArgument(showUsage, getOutputStream());
- }
- catch (ArgumentException ae)
- {
- LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(ae.getMessage());
- println(message);
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
- }
-
- // Parse the command-line arguments provided to this program.
- try
- {
- argParser.parseArguments(args);
- connectionFactory.validate();
- runner.validate();
- }
- catch (ArgumentException ae)
- {
- LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
- println(message);
- println(argParser.getUsageMessage());
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
- }
-
- // If we should just display usage or version information,
- // then print it and exit.
- if (argParser.usageOrVersionDisplayed())
- {
- return 0;
- }
-
- runner.modStrings =
- argParser.getTrailingArguments().toArray(
- new String[argParser.getTrailingArguments().size()]);
- runner.baseDN = baseDN.getValue();
-
- try
- {
-
- // Try it out to make sure the format string and data sources
- // match.
- Object[] data =
- DataSource.generateData(runner.getDataSources(), null);
- for (String modString : runner.modStrings)
- {
- String.format(modString, data);
- }
- String.format(runner.baseDN, data);
- }
- catch (Exception ex1)
- {
- println(LocalizableMessage.raw("Error formatting filter or base DN: "
- + ex1.toString()));
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
- }
-
- return runner.run(connectionFactory);
- }
-
-
-
- private class ModifyPerformanceRunner extends PerformanceRunner
- {
- private String baseDN;
- private String[] modStrings;
-
-
-
- private ModifyPerformanceRunner(ArgumentParser argParser,
- ConsoleApplication app) throws ArgumentException
- {
- super(argParser, app);
- }
-
-
-
- WorkerThread<?> newWorkerThread(AsynchronousConnection connection,
- ConnectionFactory connectionFactory)
- {
- return new ModifyWorkerThread(connection, connectionFactory);
- }
-
-
-
- StatsThread newStatsThread()
- {
- return new StatsThread(new String[0]);
- }
-
-
-
- private class ModifyWorkerThread extends
+ private final class ModifyWorkerThread extends
WorkerThread<ResultHandler<Result>>
{
private ModifyRequest mr;
@@ -276,24 +59,26 @@
- private ModifyWorkerThread(AsynchronousConnection connection,
- ConnectionFactory connectionFactory)
+ private ModifyWorkerThread(final AsynchronousConnection connection,
+ final ConnectionFactory connectionFactory)
{
super(connection, connectionFactory);
}
- public ResultHandler<Result> getHandler(long startTime)
+ @Override
+ public ResultHandler<Result> getHandler(final long startTime)
{
return new UpdateStatsResultHandler<Result>(startTime);
}
+ @Override
public FutureResult<?> performOperation(
- AsynchronousConnection connection,
- ResultHandler<Result> handler, DataSource[] dataSources)
+ final AsynchronousConnection connection,
+ final ResultHandler<Result> handler, final DataSource[] dataSources)
{
if (dataSources != null)
{
@@ -305,7 +90,7 @@
- private ModifyRequest newModifyRequest(Object[] data)
+ private ModifyRequest newModifyRequest(final Object[] data)
{
String formattedString;
int colonPos;
@@ -318,20 +103,20 @@
{
mr = Requests.newModifyRequest(String.format(baseDN, data));
}
- for (int i = 0; i < modStrings.length; i++)
+ for (final String modString : modStrings)
{
if (data == null)
{
- formattedString = modStrings[i];
+ formattedString = modString;
}
else
{
- formattedString = String.format(modStrings[i], data);
+ formattedString = String.format(modString, data);
}
colonPos = formattedString.indexOf(':');
if (colonPos > 0)
{
- mr.addChange(ModificationType.REPLACE, formattedString
+ mr.addModification(ModificationType.REPLACE, formattedString
.substring(0, colonPos), formattedString
.substring(colonPos + 1));
}
@@ -339,6 +124,108 @@
return mr;
}
}
+
+
+
+ private String baseDN;
+
+ private String[] modStrings;
+
+
+
+ private ModifyPerformanceRunner(final ArgumentParser argParser,
+ final ConsoleApplication app) throws ArgumentException
+ {
+ super(argParser, app);
+ }
+
+
+
+ @Override
+ StatsThread newStatsThread()
+ {
+ return new StatsThread(new String[0]);
+ }
+
+
+
+ @Override
+ WorkerThread<?> newWorkerThread(final AsynchronousConnection connection,
+ final ConnectionFactory connectionFactory)
+ {
+ return new ModifyWorkerThread(connection, connectionFactory);
+ }
+ }
+
+
+
+ /**
+ * The main method for ModRate tool.
+ *
+ * @param args
+ * The command-line arguments provided to this program.
+ */
+
+ public static void main(final String[] args)
+ {
+ final int retCode = mainModRate(args, System.in, System.out, System.err);
+ System.exit(filterExitCode(retCode));
+ }
+
+
+
+ /**
+ * Parses the provided command-line arguments and uses that information to run
+ * the modrate tool.
+ *
+ * @param args
+ * The command-line arguments provided to this program.
+ * @return The error code.
+ */
+
+ static int mainModRate(final String[] args)
+ {
+ return mainModRate(args, System.in, System.out, System.err);
+ }
+
+
+
+ /**
+ * Parses the provided command-line arguments and uses that information to run
+ * the modrate tool.
+ *
+ * @param args
+ * The command-line arguments provided to this program.
+ * @param inStream
+ * The input stream to use for standard input, or <CODE>null</CODE>
+ * if standard input is not needed.
+ * @param outStream
+ * The output stream to use for standard output, or <CODE>null</CODE>
+ * if standard output is not needed.
+ * @param errStream
+ * The output stream to use for standard error, or <CODE>null</CODE>
+ * if standard error is not needed.
+ * @return The error code.
+ */
+
+ static int mainModRate(final String[] args, final InputStream inStream,
+ final OutputStream outStream, final OutputStream errStream)
+
+ {
+ return new ModRate(inStream, outStream, errStream).run(args);
+ }
+
+
+
+ private BooleanArgument verbose;
+
+
+
+ private ModRate(final InputStream in, final OutputStream out,
+ final OutputStream err)
+ {
+ super(in, out, err);
+
}
@@ -346,9 +233,9 @@
/**
* Indicates whether or not the user has requested advanced mode.
*
- * @return Returns <code>true</code> if the user has requested
- * advanced mode.
+ * @return Returns <code>true</code> if the user has requested advanced mode.
*/
+ @Override
public boolean isAdvancedMode()
{
return false;
@@ -357,12 +244,12 @@
/**
- * Indicates whether or not the user has requested interactive
- * behavior.
+ * Indicates whether or not the user has requested interactive behavior.
*
- * @return Returns <code>true</code> if the user has requested
- * interactive behavior.
+ * @return Returns <code>true</code> if the user has requested interactive
+ * behavior.
*/
+ @Override
public boolean isInteractive()
{
return false;
@@ -372,14 +259,14 @@
/**
* Indicates whether or not this console application is running in its
- * menu-driven mode. This can be used to dictate whether output should
- * go to the error stream or not. In addition, it may also dictate
- * whether or not sub-menus should display a cancel option as well as
- * a quit option.
+ * menu-driven mode. This can be used to dictate whether output should go to
+ * the error stream or not. In addition, it may also dictate whether or not
+ * sub-menus should display a cancel option as well as a quit option.
*
- * @return Returns <code>true</code> if this console application is
- * running in its menu-driven mode.
+ * @return Returns <code>true</code> if this console application is running in
+ * its menu-driven mode.
*/
+ @Override
public boolean isMenuDrivenMode()
{
return false;
@@ -390,9 +277,9 @@
/**
* Indicates whether or not the user has requested quiet output.
*
- * @return Returns <code>true</code> if the user has requested quiet
- * output.
+ * @return Returns <code>true</code> if the user has requested quiet output.
*/
+ @Override
public boolean isQuiet()
{
return false;
@@ -401,12 +288,12 @@
/**
- * Indicates whether or not the user has requested script-friendly
- * output.
+ * Indicates whether or not the user has requested script-friendly output.
*
- * @return Returns <code>true</code> if the user has requested
- * script-friendly output.
+ * @return Returns <code>true</code> if the user has requested script-friendly
+ * output.
*/
+ @Override
public boolean isScriptFriendly()
{
return false;
@@ -417,11 +304,122 @@
/**
* Indicates whether or not the user has requested verbose output.
*
- * @return Returns <code>true</code> if the user has requested verbose
- * output.
+ * @return Returns <code>true</code> if the user has requested verbose output.
*/
+ @Override
public boolean isVerbose()
{
return verbose.isPresent();
}
+
+
+
+ private int run(final String[] args)
+ {
+ // Create the command-line argument parser for use with this
+ // program.
+ final LocalizableMessage toolDescription = LocalizableMessage
+ .raw("This utility can be used to " + "measure modify performance");
+ // TODO: correct usage
+ final ArgumentParser argParser = new ArgumentParser(
+ ModRate.class.getName(), toolDescription, false, true, 1, 0,
+ "[modifyString ...]");
+ ArgumentParserConnectionFactory connectionFactory;
+ ModifyPerformanceRunner runner;
+
+ BooleanArgument showUsage;
+ StringArgument propertiesFileArgument;
+ BooleanArgument noPropertiesFileArgument;
+ StringArgument baseDN;
+
+ try
+ {
+ connectionFactory = new ArgumentParserConnectionFactory(argParser, this);
+ runner = new ModifyPerformanceRunner(argParser, this);
+ propertiesFileArgument = new StringArgument("propertiesFilePath", null,
+ OPTION_LONG_PROP_FILE_PATH, false, false, true,
+ INFO_PROP_FILE_PATH_PLACEHOLDER.get(), null, null,
+ INFO_DESCRIPTION_PROP_FILE_PATH.get());
+ argParser.addArgument(propertiesFileArgument);
+ argParser.setFilePropertiesArgument(propertiesFileArgument);
+
+ noPropertiesFileArgument = new BooleanArgument(
+ "noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
+ INFO_DESCRIPTION_NO_PROP_FILE.get());
+ argParser.addArgument(noPropertiesFileArgument);
+ argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
+
+ baseDN = new StringArgument("baseDN", OPTION_SHORT_BASEDN,
+ OPTION_LONG_BASEDN, true, false, true, INFO_BASEDN_PLACEHOLDER.get(),
+ null, null, INFO_SEARCH_DESCRIPTION_BASEDN.get());
+ baseDN.setPropertyName(OPTION_LONG_BASEDN);
+ argParser.addArgument(baseDN);
+
+ verbose = new BooleanArgument("verbose", 'v', "verbose",
+ INFO_DESCRIPTION_VERBOSE.get());
+ verbose.setPropertyName("verbose");
+ argParser.addArgument(verbose);
+
+ showUsage = new BooleanArgument("showUsage", OPTION_SHORT_HELP,
+ OPTION_LONG_HELP, INFO_DESCRIPTION_SHOWUSAGE.get());
+ argParser.addArgument(showUsage);
+ argParser.setUsageArgument(showUsage, getOutputStream());
+ }
+ catch (final ArgumentException ae)
+ {
+ final LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(ae
+ .getMessage());
+ println(message);
+ return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ }
+
+ // Parse the command-line arguments provided to this program.
+ try
+ {
+ argParser.parseArguments(args);
+ connectionFactory.validate();
+ runner.validate();
+ }
+ catch (final ArgumentException ae)
+ {
+ final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae
+ .getMessage());
+ println(message);
+ println(argParser.getUsageMessage());
+ return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ }
+
+ // If we should just display usage or version information,
+ // then print it and exit.
+ if (argParser.usageOrVersionDisplayed())
+ {
+ return 0;
+ }
+
+ runner.modStrings = argParser.getTrailingArguments().toArray(
+ new String[argParser.getTrailingArguments().size()]);
+ runner.baseDN = baseDN.getValue();
+
+ try
+ {
+
+ // Try it out to make sure the format string and data sources
+ // match.
+ final Object[] data = DataSource.generateData(runner.getDataSources(),
+ null);
+ for (final String modString : runner.modStrings)
+ {
+ String.format(modString, data);
+ }
+ String.format(runner.baseDN, data);
+ }
+ catch (final Exception ex1)
+ {
+ println(LocalizableMessage.raw("Error formatting filter or base DN: "
+ + ex1.toString()));
+ return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ }
+
+ return runner.run(connectionFactory);
+ }
}
--
Gitblit v1.10.0