From 263d085885df024dca9250cc03c807912b0a7662 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Tue, 24 Apr 2012 22:33:21 +0000
Subject: [PATCH] Reformat to comply with new Checkstyle rules.
---
opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java | 1014 +++++++++++++++++++++++++---------------------------------
1 files changed, 441 insertions(+), 573 deletions(-)
diff --git a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
index 1ba09f3..438b66e 100644
--- a/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
+++ b/opendj3/opendj-ldap-toolkit/src/main/java/com/forgerock/opendj/ldap/tools/AuthRate.java
@@ -6,17 +6,16 @@
* (the "License"). You may not use this file except in compliance
* with the License.
*
- * You can obtain a copy of the license at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt
+ * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at
- * trunk/opendj3/legal-notices/CDDLv1_0.txt. If applicable,
- * add the following below this CDDL HEADER, with the fields enclosed
- * by brackets "[]" replaced with your own identifying information:
+ * file and include the License file at legal-notices/CDDLv1_0.txt.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
@@ -28,10 +27,8 @@
package com.forgerock.opendj.ldap.tools;
-
-
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
import static com.forgerock.opendj.ldap.tools.ToolConstants.*;
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
import static com.forgerock.opendj.ldap.tools.Utils.filterExitCode;
import java.util.ArrayList;
@@ -42,613 +39,484 @@
import java.util.concurrent.atomic.AtomicLong;
import org.forgerock.i18n.LocalizableMessage;
-import org.forgerock.opendj.ldap.*;
-import org.forgerock.opendj.ldap.requests.*;
+import org.forgerock.opendj.ldap.Connection;
+import org.forgerock.opendj.ldap.ConnectionFactory;
+import org.forgerock.opendj.ldap.DereferenceAliasesPolicy;
+import org.forgerock.opendj.ldap.ErrorResultException;
+import org.forgerock.opendj.ldap.FutureResult;
+import org.forgerock.opendj.ldap.ResultCode;
+import org.forgerock.opendj.ldap.ResultHandler;
+import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.requests.BindRequest;
+import org.forgerock.opendj.ldap.requests.CRAMMD5SASLBindRequest;
+import org.forgerock.opendj.ldap.requests.DigestMD5SASLBindRequest;
+import org.forgerock.opendj.ldap.requests.ExternalSASLBindRequest;
+import org.forgerock.opendj.ldap.requests.GSSAPISASLBindRequest;
+import org.forgerock.opendj.ldap.requests.PlainSASLBindRequest;
+import org.forgerock.opendj.ldap.requests.Requests;
+import org.forgerock.opendj.ldap.requests.SearchRequest;
+import org.forgerock.opendj.ldap.requests.SimpleBindRequest;
import org.forgerock.opendj.ldap.responses.BindResult;
import org.forgerock.opendj.ldap.responses.SearchResultEntry;
import com.forgerock.opendj.util.RecursiveFutureResult;
-
-
/**
* A load generation tool that can be used to load a Directory Server with Bind
* requests using one or more LDAP connections.
*/
-public final class AuthRate extends ConsoleApplication
-{
- private final class BindPerformanceRunner extends PerformanceRunner
- {
- private final class BindStatsThread extends StatsThread
- {
- private final String[] extraColumn;
+public final class AuthRate extends ConsoleApplication {
+ private final class BindPerformanceRunner extends PerformanceRunner {
+ private final class BindStatsThread extends StatsThread {
+ private final String[] extraColumn;
+ private BindStatsThread(final boolean extraFieldRequired) {
+ super(extraFieldRequired ? new String[] { "bind time %" } : new String[0]);
+ extraColumn = new String[extraFieldRequired ? 1 : 0];
+ }
-
- private BindStatsThread(final boolean extraFieldRequired)
- {
- super(extraFieldRequired ? new String[] { "bind time %" }
- : new String[0]);
- extraColumn = new String[extraFieldRequired ? 1 : 0];
- }
-
-
-
- @Override
- String[] getAdditionalColumns()
- {
- invalidCredRecentCount.set(0);
- if (extraColumn.length != 0)
- {
- final long searchWaitTime = searchWaitRecentTime.getAndSet(0);
- extraColumn[0] = String.format("%.1f",
- ((float) (waitTime - searchWaitTime) / waitTime) * 100.0);
+ @Override
+ String[] getAdditionalColumns() {
+ invalidCredRecentCount.set(0);
+ if (extraColumn.length != 0) {
+ final long searchWaitTime = searchWaitRecentTime.getAndSet(0);
+ extraColumn[0] =
+ String.format("%.1f",
+ ((float) (waitTime - searchWaitTime) / waitTime) * 100.0);
+ }
+ return extraColumn;
+ }
}
- return extraColumn;
- }
- }
+ private final class BindUpdateStatsResultHandler extends
+ UpdateStatsResultHandler<BindResult> {
+ private BindUpdateStatsResultHandler(final long startTime) {
+ super(startTime);
+ }
+ @Override
+ public void handleErrorResult(final ErrorResultException error) {
+ super.handleErrorResult(error);
- private final class BindUpdateStatsResultHandler extends
- UpdateStatsResultHandler<BindResult>
- {
- private BindUpdateStatsResultHandler(final long startTime)
- {
- super(startTime);
- }
-
-
-
- @Override
- public void handleErrorResult(final ErrorResultException error)
- {
- super.handleErrorResult(error);
-
- if (error.getResult().getResultCode() == ResultCode.INVALID_CREDENTIALS)
- {
- invalidCredRecentCount.getAndIncrement();
+ if (error.getResult().getResultCode() == ResultCode.INVALID_CREDENTIALS) {
+ invalidCredRecentCount.getAndIncrement();
+ }
+ }
}
- }
- }
+ private final class BindWorkerThread extends WorkerThread {
+ private SearchRequest sr;
+ private BindRequest br;
+ private Object[] data;
+ private final char[] invalidPassword = "invalid-password".toCharArray();
+ private final ThreadLocal<Random> rng = new ThreadLocal<Random>() {
- private final class BindWorkerThread extends WorkerThread
- {
- private SearchRequest sr;
- private BindRequest br;
- private Object[] data;
- private final char[] invalidPassword = "invalid-password".toCharArray();
+ @Override
+ protected Random initialValue() {
+ return new Random();
+ }
- private final ThreadLocal<Random> rng = new ThreadLocal<Random>()
- {
+ };
+
+ private BindWorkerThread(final Connection connection,
+ final ConnectionFactory connectionFactory) {
+ super(connection, connectionFactory);
+ }
+
+ @Override
+ public FutureResult<?> performOperation(final Connection connection,
+ final DataSource[] dataSources, final long startTime) {
+ if (dataSources != null) {
+ data = DataSource.generateData(dataSources, data);
+ if (data.length == dataSources.length) {
+ final Object[] newData = new Object[data.length + 1];
+ System.arraycopy(data, 0, newData, 0, data.length);
+ data = newData;
+ }
+ }
+ if (filter != null && baseDN != null) {
+ if (sr == null) {
+ if (dataSources == null) {
+ sr = Requests.newSearchRequest(baseDN, scope, filter, attributes);
+ } else {
+ sr =
+ Requests.newSearchRequest(String.format(baseDN, data), scope,
+ String.format(filter, data), attributes);
+ }
+ sr.setDereferenceAliasesPolicy(dereferencesAliasesPolicy);
+ } else if (dataSources != null) {
+ sr.setFilter(String.format(filter, data));
+ sr.setName(String.format(baseDN, data));
+ }
+
+ final RecursiveFutureResult<SearchResultEntry, BindResult> future =
+ new RecursiveFutureResult<SearchResultEntry, BindResult>(
+ new BindUpdateStatsResultHandler(startTime)) {
+ @Override
+ protected FutureResult<? extends BindResult> chainResult(
+ final SearchResultEntry innerResult,
+ final ResultHandler<? super BindResult> resultHandler)
+ throws ErrorResultException {
+ searchWaitRecentTime.getAndAdd(System.nanoTime() - startTime);
+ if (data == null) {
+ data = new Object[1];
+ }
+ data[data.length - 1] = innerResult.getName().toString();
+ return performBind(connection, data, resultHandler);
+ }
+ };
+ connection.searchSingleEntryAsync(sr, future);
+ return future;
+ } else {
+ return performBind(connection, data,
+ new BindUpdateStatsResultHandler(startTime));
+ }
+ }
+
+ private FutureResult<BindResult> performBind(final Connection connection,
+ final Object[] data, final ResultHandler<? super BindResult> handler) {
+ final boolean useInvalidPassword;
+
+ // Avoid rng if possible.
+ switch (invalidCredPercent) {
+ case 0:
+ useInvalidPassword = false;
+ break;
+ case 100:
+ useInvalidPassword = true;
+ break;
+ default:
+ final Random r = rng.get();
+ final int p = r.nextInt(100);
+ useInvalidPassword = (p < invalidCredPercent);
+ break;
+ }
+
+ if (bindRequest instanceof SimpleBindRequest) {
+ final SimpleBindRequest o = (SimpleBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfSimpleBindRequest(o);
+ }
+
+ final SimpleBindRequest sbr = (SimpleBindRequest) br;
+ if (data != null && o.getName() != null) {
+ sbr.setName(String.format(o.getName(), data));
+ }
+ if (useInvalidPassword) {
+ sbr.setPassword(invalidPassword);
+ } else {
+ sbr.setPassword(o.getPassword());
+ }
+ } else if (bindRequest instanceof DigestMD5SASLBindRequest) {
+ final DigestMD5SASLBindRequest o = (DigestMD5SASLBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfDigestMD5SASLBindRequest(o);
+ }
+
+ final DigestMD5SASLBindRequest sbr = (DigestMD5SASLBindRequest) br;
+ if (data != null) {
+ if (o.getAuthenticationID() != null) {
+ sbr.setAuthenticationID(String.format(o.getAuthenticationID(), data));
+ }
+ if (o.getAuthorizationID() != null) {
+ sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
+ }
+ }
+ if (useInvalidPassword) {
+ sbr.setPassword(invalidPassword);
+ } else {
+ sbr.setPassword(o.getPassword());
+ }
+ } else if (bindRequest instanceof CRAMMD5SASLBindRequest) {
+ final CRAMMD5SASLBindRequest o = (CRAMMD5SASLBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfCRAMMD5SASLBindRequest(o);
+ }
+
+ final CRAMMD5SASLBindRequest sbr = (CRAMMD5SASLBindRequest) br;
+ if (data != null && o.getAuthenticationID() != null) {
+ sbr.setAuthenticationID(String.format(o.getAuthenticationID(), data));
+ }
+ if (useInvalidPassword) {
+ sbr.setPassword(invalidPassword);
+ } else {
+ sbr.setPassword(o.getPassword());
+ }
+ } else if (bindRequest instanceof GSSAPISASLBindRequest) {
+ final GSSAPISASLBindRequest o = (GSSAPISASLBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfGSSAPISASLBindRequest(o);
+ }
+
+ final GSSAPISASLBindRequest sbr = (GSSAPISASLBindRequest) br;
+ if (data != null) {
+ if (o.getAuthenticationID() != null) {
+ sbr.setAuthenticationID(String.format(o.getAuthenticationID(), data));
+ }
+ if (o.getAuthorizationID() != null) {
+ sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
+ }
+ }
+ if (useInvalidPassword) {
+ sbr.setPassword(invalidPassword);
+ } else {
+ sbr.setPassword(o.getPassword());
+ }
+ } else if (bindRequest instanceof ExternalSASLBindRequest) {
+ final ExternalSASLBindRequest o = (ExternalSASLBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfExternalSASLBindRequest(o);
+ }
+
+ final ExternalSASLBindRequest sbr = (ExternalSASLBindRequest) br;
+ if (data != null && o.getAuthorizationID() != null) {
+ sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
+ }
+ } else if (bindRequest instanceof PlainSASLBindRequest) {
+ final PlainSASLBindRequest o = (PlainSASLBindRequest) bindRequest;
+ if (br == null) {
+ br = Requests.copyOfPlainSASLBindRequest(o);
+ }
+
+ final PlainSASLBindRequest sbr = (PlainSASLBindRequest) br;
+ if (data != null) {
+ if (o.getAuthenticationID() != null) {
+ sbr.setAuthenticationID(String.format(o.getAuthenticationID(), data));
+ }
+ if (o.getAuthorizationID() != null) {
+ sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
+ }
+ }
+ if (useInvalidPassword) {
+ sbr.setPassword(invalidPassword);
+ } else {
+ sbr.setPassword(o.getPassword());
+ }
+ }
+
+ return connection.bindAsync(br, null, handler);
+ }
+ }
+
+ private final AtomicLong searchWaitRecentTime = new AtomicLong();
+ private final AtomicInteger invalidCredRecentCount = new AtomicInteger();
+ private String filter;
+ private String baseDN;
+ private SearchScope scope;
+ private DereferenceAliasesPolicy dereferencesAliasesPolicy;
+ private String[] attributes;
+ private BindRequest bindRequest;
+ private int invalidCredPercent;
+
+ private BindPerformanceRunner(final ArgumentParser argParser, final ConsoleApplication app)
+ throws ArgumentException {
+ super(argParser, app, true, true, true);
+ }
@Override
- protected Random initialValue()
- {
- return new Random();
+ WorkerThread newWorkerThread(final Connection connection,
+ final ConnectionFactory connectionFactory) {
+ return new BindWorkerThread(connection, connectionFactory);
}
- };
-
-
-
- private BindWorkerThread(final Connection connection,
- final ConnectionFactory connectionFactory)
- {
- super(connection, connectionFactory);
- }
-
-
-
- @Override
- public FutureResult<?> performOperation(final Connection connection,
- final DataSource[] dataSources, final long startTime)
- {
- if (dataSources != null)
- {
- data = DataSource.generateData(dataSources, data);
- if (data.length == dataSources.length)
- {
- final Object[] newData = new Object[data.length + 1];
- System.arraycopy(data, 0, newData, 0, data.length);
- data = newData;
- }
+ @Override
+ StatsThread newStatsThread() {
+ return new BindStatsThread(filter != null && baseDN != null);
}
- if (filter != null && baseDN != null)
- {
- if (sr == null)
- {
- if (dataSources == null)
- {
- sr = Requests.newSearchRequest(baseDN, scope, filter, attributes);
- }
- else
- {
- sr = Requests.newSearchRequest(String.format(baseDN, data),
- scope, String.format(filter, data), attributes);
- }
- sr.setDereferenceAliasesPolicy(dereferencesAliasesPolicy);
- }
- else if (dataSources != null)
- {
- sr.setFilter(String.format(filter, data));
- sr.setName(String.format(baseDN, data));
- }
-
- final RecursiveFutureResult<SearchResultEntry, BindResult> future =
- new RecursiveFutureResult<SearchResultEntry, BindResult>(
- new BindUpdateStatsResultHandler(startTime))
- {
- @Override
- protected FutureResult<? extends BindResult> chainResult(
- final SearchResultEntry innerResult,
- final ResultHandler<? super BindResult> resultHandler)
- throws ErrorResultException
- {
- searchWaitRecentTime.getAndAdd(System.nanoTime() - startTime);
- if (data == null)
- {
- data = new Object[1];
- }
- data[data.length - 1] = innerResult.getName().toString();
- return performBind(connection, data, resultHandler);
- }
- };
- connection.searchSingleEntryAsync(sr, future);
- return future;
- }
- else
- {
- return performBind(connection, data,
- new BindUpdateStatsResultHandler(startTime));
- }
- }
-
-
-
- private FutureResult<BindResult> performBind(final Connection connection,
- final Object[] data, final ResultHandler<? super BindResult> handler)
- {
- final boolean useInvalidPassword;
-
- // Avoid rng if possible.
- switch (invalidCredPercent)
- {
- case 0:
- useInvalidPassword = false;
- break;
- case 100:
- useInvalidPassword = true;
- break;
- default:
- final Random r = rng.get();
- final int p = r.nextInt(100);
- useInvalidPassword = (p < invalidCredPercent);
- break;
- }
-
- if (bindRequest instanceof SimpleBindRequest)
- {
- final SimpleBindRequest o = (SimpleBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfSimpleBindRequest(o);
- }
-
- final SimpleBindRequest sbr = (SimpleBindRequest) br;
- if (data != null && o.getName() != null)
- {
- sbr.setName(String.format(o.getName(), data));
- }
- if (useInvalidPassword)
- {
- sbr.setPassword(invalidPassword);
- }
- else
- {
- sbr.setPassword(o.getPassword());
- }
- }
- else if (bindRequest instanceof DigestMD5SASLBindRequest)
- {
- final DigestMD5SASLBindRequest o = (DigestMD5SASLBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfDigestMD5SASLBindRequest(o);
- }
-
- final DigestMD5SASLBindRequest sbr = (DigestMD5SASLBindRequest) br;
- if (data != null)
- {
- if (o.getAuthenticationID() != null)
- {
- sbr.setAuthenticationID(String.format(o.getAuthenticationID(),
- data));
- }
- if (o.getAuthorizationID() != null)
- {
- sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
- }
- }
- if (useInvalidPassword)
- {
- sbr.setPassword(invalidPassword);
- }
- else
- {
- sbr.setPassword(o.getPassword());
- }
- }
- else if (bindRequest instanceof CRAMMD5SASLBindRequest)
- {
- final CRAMMD5SASLBindRequest o = (CRAMMD5SASLBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfCRAMMD5SASLBindRequest(o);
- }
-
- final CRAMMD5SASLBindRequest sbr = (CRAMMD5SASLBindRequest) br;
- if (data != null && o.getAuthenticationID() != null)
- {
- sbr.setAuthenticationID(String.format(o.getAuthenticationID(), data));
- }
- if (useInvalidPassword)
- {
- sbr.setPassword(invalidPassword);
- }
- else
- {
- sbr.setPassword(o.getPassword());
- }
- }
- else if (bindRequest instanceof GSSAPISASLBindRequest)
- {
- final GSSAPISASLBindRequest o = (GSSAPISASLBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfGSSAPISASLBindRequest(o);
- }
-
- final GSSAPISASLBindRequest sbr = (GSSAPISASLBindRequest) br;
- if (data != null)
- {
- if (o.getAuthenticationID() != null)
- {
- sbr.setAuthenticationID(String.format(o.getAuthenticationID(),
- data));
- }
- if (o.getAuthorizationID() != null)
- {
- sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
- }
- }
- if (useInvalidPassword)
- {
- sbr.setPassword(invalidPassword);
- }
- else
- {
- sbr.setPassword(o.getPassword());
- }
- }
- else if (bindRequest instanceof ExternalSASLBindRequest)
- {
- final ExternalSASLBindRequest o = (ExternalSASLBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfExternalSASLBindRequest(o);
- }
-
- final ExternalSASLBindRequest sbr = (ExternalSASLBindRequest) br;
- if (data != null && o.getAuthorizationID() != null)
- {
- sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
- }
- }
- else if (bindRequest instanceof PlainSASLBindRequest)
- {
- final PlainSASLBindRequest o = (PlainSASLBindRequest) bindRequest;
- if (br == null)
- {
- br = Requests.copyOfPlainSASLBindRequest(o);
- }
-
- final PlainSASLBindRequest sbr = (PlainSASLBindRequest) br;
- if (data != null)
- {
- if (o.getAuthenticationID() != null)
- {
- sbr.setAuthenticationID(String.format(o.getAuthenticationID(),
- data));
- }
- if (o.getAuthorizationID() != null)
- {
- sbr.setAuthorizationID(String.format(o.getAuthorizationID(), data));
- }
- }
- if (useInvalidPassword)
- {
- sbr.setPassword(invalidPassword);
- }
- else
- {
- sbr.setPassword(o.getPassword());
- }
- }
-
- return connection.bindAsync(br, null, handler);
- }
}
+ /**
+ * The main method for AuthRate tool.
+ *
+ * @param args
+ * The command-line arguments provided to this program.
+ */
-
- private final AtomicLong searchWaitRecentTime = new AtomicLong();
- private final AtomicInteger invalidCredRecentCount = new AtomicInteger();
- private String filter;
- private String baseDN;
- private SearchScope scope;
- private DereferenceAliasesPolicy dereferencesAliasesPolicy;
- private String[] attributes;
- private BindRequest bindRequest;
- private int invalidCredPercent;
-
-
-
- private BindPerformanceRunner(final ArgumentParser argParser,
- final ConsoleApplication app) throws ArgumentException
- {
- super(argParser, app, true, true, true);
+ public static void main(final String[] args) {
+ final int retCode = new AuthRate().run(args);
+ System.exit(filterExitCode(retCode));
}
+ private BooleanArgument verbose;
+ private BooleanArgument scriptFriendly;
+ private AuthRate() {
+ // Nothing to do.
+ }
+ /**
+ * {@inheritDoc}
+ */
@Override
- WorkerThread newWorkerThread(final Connection connection,
- final ConnectionFactory connectionFactory)
- {
- return new BindWorkerThread(connection, connectionFactory);
+ public boolean isScriptFriendly() {
+ return scriptFriendly.isPresent();
}
-
-
+ /**
+ * {@inheritDoc}
+ */
@Override
- StatsThread newStatsThread()
- {
- return new BindStatsThread(filter != null && baseDN != null);
- }
- }
-
-
-
- /**
- * The main method for AuthRate tool.
- *
- * @param args
- * The command-line arguments provided to this program.
- */
-
- public static void main(final String[] args)
- {
- final int retCode = new AuthRate().run(args);
- System.exit(filterExitCode(retCode));
- }
-
-
-
- private BooleanArgument verbose;
- private BooleanArgument scriptFriendly;
-
-
-
- private AuthRate()
- {
- // Nothing to do.
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean isScriptFriendly()
- {
- return scriptFriendly.isPresent();
- }
-
-
-
- /**
- * {@inheritDoc}
- */
- @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 = INFO_AUTHRATE_TOOL_DESCRIPTION
- .get();
- final ArgumentParser argParser = new ArgumentParser(
- AuthRate.class.getName(), toolDescription, false, true, 0, 0,
- "[filter format string] [attributes ...]");
-
- ConnectionFactoryProvider connectionFactoryProvider;
- ConnectionFactory connectionFactory;
- BindPerformanceRunner runner;
-
- StringArgument baseDN;
- MultiChoiceArgument<SearchScope> searchScope;
- MultiChoiceArgument<DereferenceAliasesPolicy> dereferencePolicy;
- BooleanArgument showUsage;
- StringArgument propertiesFileArgument;
- BooleanArgument noPropertiesFileArgument;
- IntegerArgument invalidCredPercent;
-
- try
- {
- Utils.setDefaultPerfToolProperties();
-
- connectionFactoryProvider = new ConnectionFactoryProvider(argParser, this);
- runner = new BindPerformanceRunner(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);
-
- showUsage = new BooleanArgument("showUsage", OPTION_SHORT_HELP,
- OPTION_LONG_HELP, INFO_DESCRIPTION_SHOWUSAGE.get());
- argParser.addArgument(showUsage);
- argParser.setUsageArgument(showUsage, getOutputStream());
-
- baseDN = new StringArgument("baseDN", OPTION_SHORT_BASEDN,
- OPTION_LONG_BASEDN, false, false, true,
- INFO_BASEDN_PLACEHOLDER.get(), null, null,
- INFO_SEARCHRATE_TOOL_DESCRIPTION_BASEDN.get());
- baseDN.setPropertyName(OPTION_LONG_BASEDN);
- argParser.addArgument(baseDN);
-
- searchScope = new MultiChoiceArgument<SearchScope>("searchScope", 's',
- "searchScope", false, true, INFO_SEARCH_SCOPE_PLACEHOLDER.get(),
- SearchScope.values(), false,
- INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get());
- searchScope.setPropertyName("searchScope");
- searchScope.setDefaultValue(SearchScope.WHOLE_SUBTREE);
- argParser.addArgument(searchScope);
-
- dereferencePolicy = new MultiChoiceArgument<DereferenceAliasesPolicy>(
- "derefpolicy", 'a', "dereferencePolicy", false, true,
- INFO_DEREFERENCE_POLICE_PLACEHOLDER.get(),
- DereferenceAliasesPolicy.values(), false,
- INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get());
- dereferencePolicy.setPropertyName("dereferencePolicy");
- dereferencePolicy.setDefaultValue(DereferenceAliasesPolicy.NEVER);
- argParser.addArgument(dereferencePolicy);
-
- invalidCredPercent = new IntegerArgument("invalidPassword", 'I',
- "invalidPassword", false, false, true,
- LocalizableMessage.raw("{invalidPassword}"), 0, null, true, 0, true,
- 100,
- LocalizableMessage.raw("Percent of bind operations with simulated "
- + "invalid password"));
- invalidCredPercent.setPropertyName("invalidPassword");
- argParser.addArgument(invalidCredPercent);
-
- verbose = new BooleanArgument("verbose", 'v', "verbose",
- INFO_DESCRIPTION_VERBOSE.get());
- verbose.setPropertyName("verbose");
- argParser.addArgument(verbose);
-
- scriptFriendly = new BooleanArgument("scriptFriendly", 'S',
- "scriptFriendly", INFO_DESCRIPTION_SCRIPT_FRIENDLY.get());
- scriptFriendly.setPropertyName("scriptFriendly");
- argParser.addArgument(scriptFriendly);
- }
- catch (final ArgumentException ae)
- {
- final LocalizableMessage message = ERR_CANNOT_INITIALIZE_ARGS.get(ae
- .getMessage());
- println(message);
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ public boolean isVerbose() {
+ return verbose.isPresent();
}
- // Parse the command-line arguments provided to this program.
- try
- {
- argParser.parseArguments(args);
+ private int run(final String[] args) {
+ // Create the command-line argument parser for use with this
+ // program.
+ final LocalizableMessage toolDescription = INFO_AUTHRATE_TOOL_DESCRIPTION.get();
+ final ArgumentParser argParser =
+ new ArgumentParser(AuthRate.class.getName(), toolDescription, false, true, 0, 0,
+ "[filter format string] [attributes ...]");
- // If we should just display usage or version information,
- // then print it and exit.
- if (argParser.usageOrVersionDisplayed())
- {
- return 0;
- }
+ ConnectionFactoryProvider connectionFactoryProvider;
+ ConnectionFactory connectionFactory;
+ BindPerformanceRunner runner;
- connectionFactory = connectionFactoryProvider.getConnectionFactory();
- runner.validate();
+ StringArgument baseDN;
+ MultiChoiceArgument<SearchScope> searchScope;
+ MultiChoiceArgument<DereferenceAliasesPolicy> dereferencePolicy;
+ BooleanArgument showUsage;
+ StringArgument propertiesFileArgument;
+ BooleanArgument noPropertiesFileArgument;
+ IntegerArgument invalidCredPercent;
- runner.bindRequest = connectionFactoryProvider.getBindRequest();
- if (runner.bindRequest == null)
- {
- throw new ArgumentException(
- LocalizableMessage
- .raw("Authentication information must be provided to use this tool"));
- }
- }
- catch (final ArgumentException ae)
- {
- final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae
- .getMessage());
- println(message);
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
- }
+ try {
+ Utils.setDefaultPerfToolProperties();
- final List<String> attributes = new LinkedList<String>();
- final ArrayList<String> filterAndAttributeStrings = argParser
- .getTrailingArguments();
- if (filterAndAttributeStrings.size() > 0)
- {
- // the list of trailing arguments should be structured as follow:
- // the first trailing argument is considered the filter, the other as
- // attributes.
- runner.filter = filterAndAttributeStrings.remove(0);
+ connectionFactoryProvider = new ConnectionFactoryProvider(argParser, this);
+ runner = new BindPerformanceRunner(argParser, this);
- // The rest are attributes
- for (final String s : filterAndAttributeStrings)
- {
- attributes.add(s);
- }
- }
- runner.attributes = attributes.toArray(new String[attributes.size()]);
- runner.baseDN = baseDN.getValue();
- try
- {
- runner.scope = searchScope.getTypedValue();
- runner.dereferencesAliasesPolicy = dereferencePolicy.getTypedValue();
- runner.invalidCredPercent = invalidCredPercent.getIntValue();
- }
- catch (final ArgumentException ex1)
- {
- println(ex1.getMessageObject());
- return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
- }
+ 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);
- // Try it out to make sure the format string and data sources
- // match.
- final Object[] data = DataSource
- .generateData(runner.getDataSources(), null);
- try
- {
- if (runner.baseDN != null && runner.filter != null)
- {
- String.format(runner.filter, 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();
- }
+ noPropertiesFileArgument =
+ new BooleanArgument("noPropertiesFileArgument", null, OPTION_LONG_NO_PROP_FILE,
+ INFO_DESCRIPTION_NO_PROP_FILE.get());
+ argParser.addArgument(noPropertiesFileArgument);
+ argParser.setNoPropertiesFileArgument(noPropertiesFileArgument);
- return runner.run(connectionFactory);
- }
+ showUsage =
+ new BooleanArgument("showUsage", OPTION_SHORT_HELP, OPTION_LONG_HELP,
+ INFO_DESCRIPTION_SHOWUSAGE.get());
+ argParser.addArgument(showUsage);
+ argParser.setUsageArgument(showUsage, getOutputStream());
+
+ baseDN =
+ new StringArgument("baseDN", OPTION_SHORT_BASEDN, OPTION_LONG_BASEDN, false,
+ false, true, INFO_BASEDN_PLACEHOLDER.get(), null, null,
+ INFO_SEARCHRATE_TOOL_DESCRIPTION_BASEDN.get());
+ baseDN.setPropertyName(OPTION_LONG_BASEDN);
+ argParser.addArgument(baseDN);
+
+ searchScope =
+ new MultiChoiceArgument<SearchScope>("searchScope", 's', "searchScope", false,
+ true, INFO_SEARCH_SCOPE_PLACEHOLDER.get(), SearchScope.values(), false,
+ INFO_SEARCH_DESCRIPTION_SEARCH_SCOPE.get());
+ searchScope.setPropertyName("searchScope");
+ searchScope.setDefaultValue(SearchScope.WHOLE_SUBTREE);
+ argParser.addArgument(searchScope);
+
+ dereferencePolicy =
+ new MultiChoiceArgument<DereferenceAliasesPolicy>("derefpolicy", 'a',
+ "dereferencePolicy", false, true, INFO_DEREFERENCE_POLICE_PLACEHOLDER
+ .get(), DereferenceAliasesPolicy.values(), false,
+ INFO_SEARCH_DESCRIPTION_DEREFERENCE_POLICY.get());
+ dereferencePolicy.setPropertyName("dereferencePolicy");
+ dereferencePolicy.setDefaultValue(DereferenceAliasesPolicy.NEVER);
+ argParser.addArgument(dereferencePolicy);
+
+ invalidCredPercent =
+ new IntegerArgument("invalidPassword", 'I', "invalidPassword", false, false,
+ true, LocalizableMessage.raw("{invalidPassword}"), 0, null, true, 0,
+ true, 100, LocalizableMessage
+ .raw("Percent of bind operations with simulated "
+ + "invalid password"));
+ invalidCredPercent.setPropertyName("invalidPassword");
+ argParser.addArgument(invalidCredPercent);
+
+ verbose =
+ new BooleanArgument("verbose", 'v', "verbose", INFO_DESCRIPTION_VERBOSE.get());
+ verbose.setPropertyName("verbose");
+ argParser.addArgument(verbose);
+
+ scriptFriendly =
+ new BooleanArgument("scriptFriendly", 'S', "scriptFriendly",
+ INFO_DESCRIPTION_SCRIPT_FRIENDLY.get());
+ scriptFriendly.setPropertyName("scriptFriendly");
+ argParser.addArgument(scriptFriendly);
+ } 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);
+
+ // If we should just display usage or version information,
+ // then print it and exit.
+ if (argParser.usageOrVersionDisplayed()) {
+ return 0;
+ }
+
+ connectionFactory = connectionFactoryProvider.getConnectionFactory();
+ runner.validate();
+
+ runner.bindRequest = connectionFactoryProvider.getBindRequest();
+ if (runner.bindRequest == null) {
+ throw new ArgumentException(LocalizableMessage
+ .raw("Authentication information must be provided to use this tool"));
+ }
+ } catch (final ArgumentException ae) {
+ final LocalizableMessage message = ERR_ERROR_PARSING_ARGS.get(ae.getMessage());
+ println(message);
+ return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ }
+
+ final List<String> attributes = new LinkedList<String>();
+ final ArrayList<String> filterAndAttributeStrings = argParser.getTrailingArguments();
+ if (filterAndAttributeStrings.size() > 0) {
+ // the list of trailing arguments should be structured as follow:
+ // the first trailing argument is considered the filter, the other
+ // as
+ // attributes.
+ runner.filter = filterAndAttributeStrings.remove(0);
+
+ // The rest are attributes
+ for (final String s : filterAndAttributeStrings) {
+ attributes.add(s);
+ }
+ }
+ runner.attributes = attributes.toArray(new String[attributes.size()]);
+ runner.baseDN = baseDN.getValue();
+ try {
+ runner.scope = searchScope.getTypedValue();
+ runner.dereferencesAliasesPolicy = dereferencePolicy.getTypedValue();
+ runner.invalidCredPercent = invalidCredPercent.getIntValue();
+ } catch (final ArgumentException ex1) {
+ println(ex1.getMessageObject());
+ return ResultCode.CLIENT_SIDE_PARAM_ERROR.intValue();
+ }
+
+ // Try it out to make sure the format string and data sources
+ // match.
+ final Object[] data = DataSource.generateData(runner.getDataSources(), null);
+ try {
+ if (runner.baseDN != null && runner.filter != null) {
+ String.format(runner.filter, 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