Class AuthManager
- java.lang.Object
-
- org.apache.jmeter.testelement.AbstractTestElement
-
- org.apache.jmeter.config.ConfigTestElement
-
- org.apache.jmeter.protocol.http.control.AuthManager
-
- All Implemented Interfaces:
Serializable
,Cloneable
,ConfigElement
,Searchable
,TestElement
,TestIterationListener
,TestStateListener
public class AuthManager extends ConfigTestElement implements TestStateListener, TestIterationListener, Serializable
This class provides a way to provide Authorization in jmeter requests. The format of the authorization file is: URL user pass where URL is an HTTP URL, user a username to use and pass the appropriate password.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AuthManager.Mechanism
-
Field Summary
Fields Modifier and Type Field Description static int
COL_DOMAIN
static int
COL_MECHANISM
static int
COL_PASSWORD
static int
COL_REALM
static int
COL_URL
static int
COL_USERNAME
-
Fields inherited from class org.apache.jmeter.config.ConfigTestElement
PASSWORD, USERNAME
-
Fields inherited from interface org.apache.jmeter.testelement.TestElement
COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS
-
-
Constructor Summary
Constructors Constructor Description AuthManager()
Default Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAuth()
void
addAuth(Authorization newAuthorization)
Add newAuthorization if it does not already existvoid
addConfigElement(ConfigElement config)
Add a configuration element to this one.void
addFile(String authFile)
Add authentication data from a file.void
clear()
Clear the TestElement of all data.boolean
expectsModification()
If your config element expects to be modified in the process of a test run, and you want those modifications to carry over from sample to sample (as in a cookie manager - you want to save all cookies that get set throughout the test), then return true for this method.Authorization
get(int i)
Return the record at index iint
getAuthCount()
Return the number of records.Authorization
getAuthForURL(URL url)
String
getAuthHeaderForURL(URL url)
Authorization
getAuthObjectAt(int row)
CollectionProperty
getAuthObjects()
boolean
getClearEachIteration()
Class<?>
getColumnClass(int column)
int
getColumnCount()
String
getColumnName(int column)
Subject
getSubjectForUrl(URL url)
Get aSubject
for a given URL, if availableboolean
hasAuthForURL(URL url)
Tests whether an authorization record is available for a given URLboolean
isEditable()
void
remove(int index)
Remove an authentication record.void
save(String authFile)
Save the authentication data to a file.void
set(int index, String url, String user, String pass, String domain, String realm, AuthManager.Mechanism mechanism)
Update an authentication record.void
setClearEachIteration(boolean clear)
void
setupCredentials(HttpClient client, URL url, CredentialsProvider credentialsProvider, String localHost)
Configure credentials and auth scheme on client if an authorization is available for urlvoid
testEnded()
Called once for all threads after the end of a test.void
testEnded(String host)
Called once for all threads after the end of a test.void
testIterationStart(LoopIterationEvent event)
Each time through a Thread Group's test script, an iteration event is fired for each thread.void
testStarted()
Called just before the start of the test from the main engine thread.void
testStarted(String host)
Called just before the start of the test from the main engine thread.-
Methods inherited from class org.apache.jmeter.config.ConfigTestElement
addTestElement
-
Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement
addPropertiesValues, addProperty, addProperty, canRemove, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.jmeter.config.ConfigElement
clone
-
-
-
-
Field Detail
-
COL_URL
public static final int COL_URL
- See Also:
- Constant Field Values
-
COL_USERNAME
public static final int COL_USERNAME
- See Also:
- Constant Field Values
-
COL_PASSWORD
public static final int COL_PASSWORD
- See Also:
- Constant Field Values
-
COL_DOMAIN
public static final int COL_DOMAIN
- See Also:
- Constant Field Values
-
COL_REALM
public static final int COL_REALM
- See Also:
- Constant Field Values
-
COL_MECHANISM
public static final int COL_MECHANISM
- See Also:
- Constant Field Values
-
-
Method Detail
-
clear
public void clear()
Clear the TestElement of all data.- Specified by:
clear
in interfaceTestElement
- Overrides:
clear
in classAbstractTestElement
-
set
public void set(int index, String url, String user, String pass, String domain, String realm, AuthManager.Mechanism mechanism)
Update an authentication record.- Parameters:
index
- index at which position the record should be seturl
- url for which the authentication record should be useduser
- name of the userpass
- password of the userdomain
- domain of the userrealm
- realm of the sitemechanism
- authenticationAuthManager.Mechanism
to use
-
getAuthObjects
public CollectionProperty getAuthObjects()
-
getColumnCount
public int getColumnCount()
-
getColumnName
public String getColumnName(int column)
-
getColumnClass
public Class<?> getColumnClass(int column)
-
getAuthObjectAt
public Authorization getAuthObjectAt(int row)
-
isEditable
public boolean isEditable()
-
get
public Authorization get(int i)
Return the record at index i- Parameters:
i
- index of the record to get- Returns:
- authorization record at index
i
-
getAuthForURL
public Authorization getAuthForURL(URL url)
-
hasAuthForURL
public boolean hasAuthForURL(URL url)
Tests whether an authorization record is available for a given URL- Parameters:
url
-URL
for which an authorization record should be available- Returns:
true
if an authorization is setup for url,false
otherwise
-
getSubjectForUrl
public Subject getSubjectForUrl(URL url)
Get aSubject
for a given URL, if available- Parameters:
url
-URL
for which the subject was asked- Returns:
- Subject if Auth Scheme uses Subject and an authorization is setup
for
url
,null
otherwise
-
addConfigElement
public void addConfigElement(ConfigElement config)
Add a configuration element to this one. This allows config elements to combine and give a "layered" effect. For example, HTTPConfigElements have properties for domain, path, method, and parameters. If element A has everything filled in, but null for domain, and element B is added, which has only domain filled in, then after adding B to A, A will have the domain from B. If A already had a domain, then the correct behavior is for A to ignore the addition of element B.- Specified by:
addConfigElement
in interfaceConfigElement
- Overrides:
addConfigElement
in classConfigTestElement
- Parameters:
config
- the element to be added to this ConfigElement
-
addAuth
public void addAuth(Authorization newAuthorization)
Add newAuthorization if it does not already exist- Parameters:
newAuthorization
- authorization to be added
-
addAuth
public void addAuth()
-
expectsModification
public boolean expectsModification()
If your config element expects to be modified in the process of a test run, and you want those modifications to carry over from sample to sample (as in a cookie manager - you want to save all cookies that get set throughout the test), then return true for this method. Your config element will not be cloned for each sample. If your config elements are more static in nature, return false. If in doubt, return false.- Specified by:
expectsModification
in interfaceConfigElement
- Overrides:
expectsModification
in classConfigTestElement
- Returns:
- true if the element expects to be modified over the course of a test run
-
save
public void save(String authFile) throws IOException
Save the authentication data to a file.- Parameters:
authFile
- path of the file to save the authentication data to- Throws:
IOException
- when writing to the file fails
-
addFile
public void addFile(String authFile) throws IOException
Add authentication data from a file.- Parameters:
authFile
- path to the file to read the authentication data from- Throws:
IOException
- when reading the data fails
-
remove
public void remove(int index)
Remove an authentication record.- Parameters:
index
- index of the authentication record to remove
-
getClearEachIteration
public boolean getClearEachIteration()
- Returns:
- true if kerberos auth must be cleared on each mail loop iteration
-
setClearEachIteration
public void setClearEachIteration(boolean clear)
-
getAuthCount
public int getAuthCount()
Return the number of records.- Returns:
- the number of records
-
setupCredentials
public void setupCredentials(HttpClient client, URL url, CredentialsProvider credentialsProvider, String localHost)
Configure credentials and auth scheme on client if an authorization is available for url- Parameters:
client
-HttpClient
url
- URL to testcredentialsProvider
-CredentialsProvider
localHost
- host running JMeter
-
testStarted
public void testStarted()
Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.
N.B. testStarted() and testEnded() are called from different threads.
- Specified by:
testStarted
in interfaceTestStateListener
- See Also:
StandardJMeterEngine.run()
-
testEnded
public void testEnded()
Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.
N.B. testStarted() and testEnded() are called from different threads.
- Specified by:
testEnded
in interfaceTestStateListener
- See Also:
StandardJMeterEngine.stopTest()
-
testStarted
public void testStarted(String host)
Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.
N.B. testStarted() and testEnded() are called from different threads.
- Specified by:
testStarted
in interfaceTestStateListener
- Parameters:
host
- name of host- See Also:
StandardJMeterEngine.run()
-
testEnded
public void testEnded(String host)
Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.
N.B. testStarted() and testEnded() are called from different threads.
- Specified by:
testEnded
in interfaceTestStateListener
- Parameters:
host
- name of host- See Also:
StandardJMeterEngine.stopTest()
-
testIterationStart
public void testIterationStart(LoopIterationEvent event)
Each time through a Thread Group's test script, an iteration event is fired for each thread. This will be after the test elements have been cloned, so in general the instance will not be the same as the ones the start/end methods call.- Specified by:
testIterationStart
in interfaceTestIterationListener
- Parameters:
event
- the iteration event
-
-