Apache JMeter

org.apache.jmeter.protocol.http.control
Class AuthManager

java.lang.Object
  extended by org.apache.jmeter.testelement.AbstractTestElement
      extended by org.apache.jmeter.config.ConfigTestElement
          extended by 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
static class AuthManager.Mechanism
           
 
Field Summary
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
AuthManager()
          Default Constructor.
 
Method Summary
 void addAuth()
           
 void addAuth(Authorization auth)
           
 void 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 i
 int 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)
           
 boolean hasAuthForURL(URL url)
           
 boolean 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(org.apache.http.client.HttpClient client, URL url, org.apache.http.client.CredentialsProvider credentialsProvider, String localHost)
          Configure credentials and auth scheme on client if an authorization is available for url
 void 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
Constructor Detail

AuthManager

public AuthManager()
Default Constructor.

Method Detail

clear

public void clear()
Clear the TestElement of all data.

Specified by:
clear in interface TestElement
Overrides:
clear in class AbstractTestElement

set

public void set(int index,
                String url,
                String user,
                String pass,
                String domain,
                String realm,
                AuthManager.Mechanism mechanism)
Update an authentication record.


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


getAuthHeaderForURL

public String getAuthHeaderForURL(URL url)

getAuthForURL

public Authorization getAuthForURL(URL url)

hasAuthForURL

public boolean hasAuthForURL(URL url)
Returns:
boolean true if an authorization is setup for url

getSubjectForUrl

public Subject getSubjectForUrl(URL url)
Returns:
Subject if Auth Scheme uses Subject and an authorization is setup for url

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 interface ConfigElement
Overrides:
addConfigElement in class ConfigTestElement
Parameters:
config - the element to be added to this ConfigElement

addAuth

public void addAuth(Authorization auth)

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 interface ConfigElement
Overrides:
expectsModification in class ConfigTestElement
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.

Throws:
IOException

addFile

public void addFile(String authFile)
             throws IOException
Add authentication data from a file.

Throws:
IOException

remove

public void remove(int index)
Remove an authentication record.


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.


setupCredentials

public void setupCredentials(org.apache.http.client.HttpClient client,
                             URL url,
                             org.apache.http.client.CredentialsProvider credentialsProvider,
                             String localHost)
Configure credentials and auth scheme on client if an authorization is available for url

Parameters:
client - HttpClient
url - URL to test
credentialsProvider - 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 interface TestStateListener
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 interface TestStateListener
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 interface TestStateListener
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 interface TestStateListener
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 interface TestIterationListener

Apache JMeter

Copyright © 1998-2013 Apache Software Foundation. All Rights Reserved.