com.sun.slamd.isw
Class DSToNTTemplateBasedAddRateWithLatencyJobClass

java.lang.Object
  extended by java.lang.Thread
      extended by com.sun.slamd.job.JobClass
          extended by com.sun.slamd.isw.ISWLatencyCheckJobClass
              extended by com.sun.slamd.isw.DSToNTTemplateBasedAddRateWithLatencyJobClass
All Implemented Interfaces:
java.lang.Runnable

public class DSToNTTemplateBasedAddRateWithLatencyJobClass
extends ISWLatencyCheckJobClass

This class implements a SLAMD job that is intended for use in performing adds against a Sun ONE Directory and then monitoring the length of time required for them to appear in a Windows NT domain after being processed through Identity Synchronization for Windows. The entries created will be based on a template provided by the end user.

Author:
Neil A. Wilson

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
static char[] ALPHA_CHARS
          The set of characters that should be included in alphabetic values.
static char[] ALPHANUMERIC_CHARS
          The set of characters that should be included in alphanumeric values.
static char[] BASE64_CHARS
          The set of characters that should be included in base64 values.
static java.lang.String[] DEFAULT_TEMPLATE_LINES
          The text of the template that will be used by default.
static char[] HEX_CHARS
          The set of characters that should be included in hexadecimal values.
static java.lang.String[] MONTH_NAMES
          The set of months that will be used if the name of a month is required.
static char[] NUMERIC_CHARS
          The set of characters that should be included in numeric values.
static java.lang.String STAT_TRACKER_ADD_COUNT
          The display name for the stat tracker that will be used to track the number of adds performed.
static java.lang.String STAT_TRACKER_ADD_TIME
          The display name for the stat tracker that will be used to track the time required to perform each add.
static java.lang.String STAT_TRACKER_RESULT_CODES
          The display name for the stat tracker that will be used to track the result codes from the LDAP operations.
 
Fields inherited from class com.sun.slamd.isw.ISWLatencyCheckJobClass
adBindDN, adBindDNParameter, adBindPassword, adBindPasswordParameter, adHost, adHostParameter, adMonitorDN, adMonitorDNParameter, adPollDelay, adPollDelayParameter, adPort, adPortParameter, ALPHABET, categorizedLatency, dsBindDN, dsBindDNParameter, dsBindPassword, dsBindPasswordParameter, dsHost, dsHostParameter, dsMonitorDN, dsMonitorDNParameter, dsPort, dsPortParameter, dsUseSSL, dsUseSSLParameter, latencyDelay, latencyDelayParameter, latencyModAttr, latencyModAttrNT, latencyModAttrNTParameter, latencyModAttrParameter, latencyMutex, latencyTimer, ntMonitorUser, ntMonitorUserParameter, ntPollDelay, ntPollDelayParameter, placeholder, STAT_TRACKER_CATEGORIZED_LATENCY, STAT_TRACKER_PROPAGATION_LATENCY, SYNC_DIRECTION_AD_TO_DS, SYNC_DIRECTION_DS_TO_AD, SYNC_DIRECTION_DS_TO_NT, SYNC_DIRECTION_NT_TO_DS
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
DSToNTTemplateBasedAddRateWithLatencyJobClass()
          The default constructor used to create a new instance of the add thread.
 
Method Summary
 netscape.ldap.LDAPEntry createEntry()
          Creates a randomly-generated LDAP entry to be added to the directory.
 void destroy()
          Attempts to force this thread to exit by closing the connection to the directory server and setting it to null.
 java.lang.String generateGUID()
          Generates a globally-unique identifier.
 java.lang.String generateRandomValue(char[] charSet, int length)
          Retrieves a string containing the specified number of randomly-chosen characters.
 java.lang.String getJobCategoryName()
          Retrieves the name of the category in which this job class exists.
 java.lang.String getJobDescription()
          Retrieves a description of the job performed by this job thread.
 java.lang.String getJobName()
          Retrieves the name of the job performed by this job thread.
 ParameterList getParameterStubs()
          Retrieve a parameter list that can be used to determine all of the customizable options that are available for this job.
 StatTracker[] getStatTrackers()
          Retrieves the stat trackers that are maintained for this job thread.
 StatTracker[] getStatTrackerStubs(java.lang.String clientID, java.lang.String threadID, int collectionInterval)
          Retrieves the set of stat trackers that will be maintained by this job class.
 void initializeClient(java.lang.String clientID, ParameterList parameters)
          Initializes all of the instance variables that correspond to job parameters.
 void initializeThread(java.lang.String clientID, java.lang.String threadID, int collectionInterval, ParameterList parameters)
          Initializes this job thread to be used to actually run the job on the client.
 java.lang.String processValue(java.lang.String value, netscape.ldap.LDAPAttributeSet attributeSet, int entryNumber, int entryInSequence)
          Generates the appropriate value from the given line in the template.
 boolean providesParameterTest()
          Indicates whether this job class implements logic that makes it possible to test the validity of job parameters before scheduling the job for execution (e.g., to see if the server is reachable using the information provided).
 void runJob()
          Perform the work of this job thread by establishing the connection(s) to the Sun ONE Directory and issuing all the appropriate adds.
 boolean testJobParameters(ParameterList parameters, java.util.ArrayList outputMessages)
          Provides a means of testing the provided job parameters to determine whether they are valid (e.g., to see if the server is reachable) before scheduling the job for execution.
 void validateJobInfo(int numClients, int threadsPerClient, int threadStartupDelay, java.util.Date startTime, java.util.Date stopTime, int duration, int collectionInterval, ParameterList parameters)
          Provides a means of validating the information used to schedule the job, including the scheduling information and list of parameters.
 void validateTemplate()
          Parses the provided template and ensures that it is acceptable for use in creating entries.
 
Methods inherited from class com.sun.slamd.isw.ISWLatencyCheckJobClass
getADConnection, getDSConnection
 
Methods inherited from class com.sun.slamd.job.JobClass
enableRealTimeStats, finalizeClient, finalizeJob, finalizeThread, getActiveThreadCount, getClientID, getClientNumber, getClientSideJob, getClientSideParameterStubs, getCollectionInterval, getJobID, getScheduledDuration, getShouldStopTime, getStatReporter, getThreadID, getThreadNumber, indicateCompletedWithErrors, indicateStoppedDueToError, initializeJob, initializeJobThread, isDeprecated, isRunning, logMessage, overrideCollectionInterval, overrideNumClients, overrideThreadsPerClient, run, setClientNumber, setClientSideJob, setThreadNumber, shouldStop, stackTraceToString, startJob, stopAndWait, stopJob, stopRequested, writeVerbose
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

STAT_TRACKER_ADD_TIME

public static final java.lang.String STAT_TRACKER_ADD_TIME
The display name for the stat tracker that will be used to track the time required to perform each add.

See Also:
Constant Field Values

STAT_TRACKER_ADD_COUNT

public static final java.lang.String STAT_TRACKER_ADD_COUNT
The display name for the stat tracker that will be used to track the number of adds performed.

See Also:
Constant Field Values

STAT_TRACKER_RESULT_CODES

public static final java.lang.String STAT_TRACKER_RESULT_CODES
The display name for the stat tracker that will be used to track the result codes from the LDAP operations.

See Also:
Constant Field Values

NUMERIC_CHARS

public static final char[] NUMERIC_CHARS
The set of characters that should be included in numeric values.


ALPHA_CHARS

public static final char[] ALPHA_CHARS
The set of characters that should be included in alphabetic values.


ALPHANUMERIC_CHARS

public static final char[] ALPHANUMERIC_CHARS
The set of characters that should be included in alphanumeric values.


HEX_CHARS

public static final char[] HEX_CHARS
The set of characters that should be included in hexadecimal values.


BASE64_CHARS

public static final char[] BASE64_CHARS
The set of characters that should be included in base64 values.


MONTH_NAMES

public static final java.lang.String[] MONTH_NAMES
The set of months that will be used if the name of a month is required.


DEFAULT_TEMPLATE_LINES

public static final java.lang.String[] DEFAULT_TEMPLATE_LINES
The text of the template that will be used by default.

Constructor Detail

DSToNTTemplateBasedAddRateWithLatencyJobClass

public DSToNTTemplateBasedAddRateWithLatencyJobClass()
The default constructor used to create a new instance of the add thread. The only thing it should do is to invoke the superclass constructor. All other initialization should be performed in the initialize method.

Method Detail

getJobName

public java.lang.String getJobName()
Retrieves the name of the job performed by this job thread.

Specified by:
getJobName in class JobClass
Returns:
The name of the job performed by this job thread.

getJobDescription

public java.lang.String getJobDescription()
Retrieves a description of the job performed by this job thread.

Specified by:
getJobDescription in class JobClass
Returns:
A description of the job performed by this job thread.

getJobCategoryName

public java.lang.String getJobCategoryName()
Retrieves the name of the category in which this job class exists. This is used to help arrange the job classes in the administrative interface.

Overrides:
getJobCategoryName in class JobClass
Returns:
The name of the category in which this job class exists.

getParameterStubs

public ParameterList getParameterStubs()
Retrieve a parameter list that can be used to determine all of the customizable options that are available for this job.

Overrides:
getParameterStubs in class ISWLatencyCheckJobClass
Returns:
A parameter list that can be used to determine all of the customizable options that are available for this job.

getStatTrackerStubs

public StatTracker[] getStatTrackerStubs(java.lang.String clientID,
                                         java.lang.String threadID,
                                         int collectionInterval)
Retrieves the set of stat trackers that will be maintained by this job class. The stat trackers returned by this method do not have to actually contain any statistics -- the display name and stat tracker class should be the only information that callers of this method should rely upon. Note that this list can be different from the list of statistics actually collected by the job in some cases (e.g., if the job may not return all the stat trackers it advertises in all cases, or if the job may return stat trackers that it did not advertise), but it is a possibility that only the stat trackers returned by this method will be accessible for some features in the SLAMD server.

Overrides:
getStatTrackerStubs in class ISWLatencyCheckJobClass
Parameters:
clientID - The client ID that should be used for the returned stat trackers.
threadID - The thread ID that should be used for the returned stat trackers.
collectionInterval - The collection interval that should be used for the returned stat trackers.
Returns:
The set of stat trackers that will be maintained by this job class.

getStatTrackers

public StatTracker[] getStatTrackers()
Retrieves the stat trackers that are maintained for this job thread.

Overrides:
getStatTrackers in class ISWLatencyCheckJobClass
Returns:
The stat trackers that are maintained for this job thread.

validateJobInfo

public void validateJobInfo(int numClients,
                            int threadsPerClient,
                            int threadStartupDelay,
                            java.util.Date startTime,
                            java.util.Date stopTime,
                            int duration,
                            int collectionInterval,
                            ParameterList parameters)
                     throws InvalidValueException
Provides a means of validating the information used to schedule the job, including the scheduling information and list of parameters.

Overrides:
validateJobInfo in class JobClass
Parameters:
numClients - The number of clients that should be used to run the job.
threadsPerClient - The number of threads that should be created on each client to run the job.
threadStartupDelay - The delay in milliseconds that should be used when starting the client threads.
startTime - The time that the job should start running.
stopTime - The time that the job should stop running.
duration - The maximum length of time in seconds that the job should be allowed to run.
collectionInterval - The collection interval that should be used when gathering statistics for the job.
parameters - The set of parameters provided to this job that can be used to customize its behavior.
Throws:
InvalidValueException - If the provided information is not appropriate for running this job.

providesParameterTest

public boolean providesParameterTest()
Indicates whether this job class implements logic that makes it possible to test the validity of job parameters before scheduling the job for execution (e.g., to see if the server is reachable using the information provided).

Overrides:
providesParameterTest in class JobClass
Returns:
true if this job provides a means of testing the job parameters, or false if not.

testJobParameters

public boolean testJobParameters(ParameterList parameters,
                                 java.util.ArrayList outputMessages)
Provides a means of testing the provided job parameters to determine whether they are valid (e.g., to see if the server is reachable) before scheduling the job for execution. This method will be executed by the SLAMD server system itself and not by any of the clients.

Overrides:
testJobParameters in class JobClass
Parameters:
parameters - The job parameters to be tested.
outputMessages - The lines of output that were generated as part of the testing process. Each line of output should be added to this list as a separate string, and empty strings (but not null values) are allowed to provide separation between different messages. No formatting should be provided for these messages, however, since they may be displayed in either an HTML or plain text interface.
Returns:
true if the test completed successfully, or false if not. Note that even if the test did not complete successfully, the user will be presented with a warning but will still be allowed to schedule the job using the provided parameters. This is necessary because the parameters may still be valid even if the server couldn't validate them at the time the job was scheduled (e.g., if the server wasn't running or could not be reached by the SLAMD server even though it could be by the clients).

initializeClient

public void initializeClient(java.lang.String clientID,
                             ParameterList parameters)
                      throws UnableToRunException
Initializes all of the instance variables that correspond to job parameters.

Overrides:
initializeClient in class ISWLatencyCheckJobClass
Parameters:
clientID - The client ID for the current client.
parameters - The set of parameters that have been defined for this job.
Throws:
UnableToRunException - If any part of the initialization fails.

initializeThread

public void initializeThread(java.lang.String clientID,
                             java.lang.String threadID,
                             int collectionInterval,
                             ParameterList parameters)
                      throws UnableToRunException
Initializes this job thread to be used to actually run the job on the client. The provided parameter list should be processed to customize the behavior of this job thread, and any other initialization that needs to be done in order for the job to run should be performed here as well.

Overrides:
initializeThread in class ISWLatencyCheckJobClass
Parameters:
clientID - The client ID for this job thread.
threadID - The thread ID for this job thread.
collectionInterval - The length of time in seconds to use as the statistics collection interval.
parameters - The set of parameters provided to this job that can be used to customize its behavior.
Throws:
UnableToRunException - If a problem occurs that prevents the thread from being able to run properly.

runJob

public void runJob()
Perform the work of this job thread by establishing the connection(s) to the Sun ONE Directory and issuing all the appropriate adds. The job will continue until the specified number of iterations have been performed, the stop time has been reached, the maximum duration has been reached, or the SLAMD server indicates that a stop has been requested.

Specified by:
runJob in class JobClass

destroy

public void destroy()
Attempts to force this thread to exit by closing the connection to the directory server and setting it to null.

Overrides:
destroy in class JobClass

validateTemplate

public void validateTemplate()
                      throws UnableToRunException
Parses the provided template and ensures that it is acceptable for use in creating entries.

Throws:
UnableToRunException - If the provided template is not acceptable for some reason.

createEntry

public netscape.ldap.LDAPEntry createEntry()
Creates a randomly-generated LDAP entry to be added to the directory.

Returns:
The randomly-generated entry.

processValue

public java.lang.String processValue(java.lang.String value,
                                     netscape.ldap.LDAPAttributeSet attributeSet,
                                     int entryNumber,
                                     int entryInSequence)
Generates the appropriate value from the given line in the template.

Parameters:
value - The value to be processed.
attributeSet - The attribute set containing the values of the attributes previously defined.
entryNumber - The unique number assigned to the entry being created.
entryInSequence - A counter used to determine how many entries have been created so far.
Returns:
The processed value.

generateRandomValue

public java.lang.String generateRandomValue(char[] charSet,
                                            int length)
Retrieves a string containing the specified number of randomly-chosen characters.

Parameters:
charSet - The character set from which to take the characters to use in the generated value.
length - The number of characters to include in the string.
Returns:
A string containing the specified number of randomly-chosen characters.

generateGUID

public java.lang.String generateGUID()
Generates a globally-unique identifier. Technically speaking, it's not guaranteed to be globally unique, but this should be good enough for most purposes.

Returns:
The GUID that was generated.