Package org.apache.jmeter.protocol.http.proxy

# Class ProxyControl

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.control.GenericController
org.apache.jmeter.protocol.http.proxy.ProxyControl

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Controller`, `Searchable`, `NonTestElement`, `org.apache.jmeter.testelement.TestElement`, `TestCompilerHelper`

public class ProxyControl extends GenericController implements NonTestElement
Class handles storing of generated samples etc.

See Also:
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `ProxyControl.KeystoreMode`

  ## Nested classes/interfaces inherited from interface org.apache.jmeter.testelement.TestElement

  `org.apache.jmeter.testelement.TestElement.Companion`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `CERT_VALIDITY`
  `static final int`
  `DEFAULT_PORT`
  `static final String`
  `DEFAULT_PORT_S`

  ### Fields inherited from class org.apache.jmeter.control.GenericController

  `current, subControllersAndSamplers`

  ### Fields inherited from interface org.apache.jmeter.testelement.TestElement

  `COMMENTS, Companion, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ProxyControl()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addConfigElement(ConfigElement config)`
  `void`
  `addExcludedPattern(String pattern)`
  `void`
  `addIncludedPattern(String pattern)`
  `boolean`
  `canRemove()`
  `void`
  `clearExcludedPatterns()`
  `void`
  `clearIncludedPatterns()`
  `void`
  `deliverSampler(HTTPSamplerBase sampler, org.apache.jmeter.testelement.TestElement[] testElements, SampleResult result)`
  Receives the recorded sampler from the proxy server for placing in the test tree; this is skipped if the sampler is null (e.g.
  `JMeterTreeNode`
  `findTargetControllerNode()`
  Finds the controller where samplers have to be stored, that is: The controller specified by the `target` property.
  `boolean`
  `getAssertions()`
  `boolean`
  `getCaptureHttpHeaders()`
  `String[]`
  `getCertificateDetails()`
  `String`
  `getContentTypeExclude()`
  `String`
  `getContentTypeInclude()`
  `String`
  `getDefaultEncoding()`
  `int`
  `getDefaultPort()`
  `boolean`
  `getDetectGraphQLRequest()`
  `CollectionProperty`
  `getExcludePatterns()`
  `int`
  `getGroupingMode()`
  `String`
  `getHttpSampleNameFormat()`
  `int`
  `getHTTPSampleNamingMode()`
  `CollectionProperty`
  `getIncludePatterns()`
  `JMeterTreeModel`
  `getNonGuiTreeModel()`
  `boolean`
  `getNotifyChildSamplerListenerOfFilteredSamplers()`
  `int`
  `getPort()`
  `String`
  `getPortString()`
  `String`
  `getPrefixHTTPSampleName()`
  `String`
  `getProxyPauseHTTPSample()`
  `boolean`
  `getRegexMatch()`
  `boolean`
  `getSamplerDownloadImages()`
  `boolean`
  `getSamplerFollowRedirects()`
  `boolean`
  `getSamplerRedirectAutomatically()`
  `String`
  `getSamplerTypeName()`
  `String`
  `getSslDomains()`
  `JMeterTreeNode`
  `getTarget()`
  `boolean`
  `getUseKeepalive()`
  `static boolean`
  `isDynamicMode()`
  `void`
  `setAssertions(boolean b)`
  `void`
  `setCaptureHttpHeaders(boolean capture)`
  `void`
  `setContentTypeExclude(String contentTypeExclude)`
  `void`
  `setContentTypeInclude(String contentTypeInclude)`
  `void`
  `setDefaultEncoding(String defaultEncoding)`
  `void`
  `setDetectGraphQLRequest(boolean b)`
  `void`
  `setExcludeList(Collection<String> list)`
  `void`
  `setGroupingMode(int grouping)`
  `void`
  `setHttpSampleNameFormat(String text)`
  `void`
  `setHTTPSampleNamingMode(int httpNamingMode)`
  `void`
  `setIncludeList(Collection<String> list)`
  `void`
  `setNonGuiTreeModel(JMeterTreeModel treeModel)`
  Set a `JMeterTreeModel` to be used by the ProxyControl, when used in a non-GUI environment, where the `JMeterTreeModel` can't be acquired through `GuiPackage.getTreeModel()`
  `void`
  `setNotifyChildSamplerListenerOfFilteredSamplers(boolean b)`
  `void`
  `setPort(int port)`
  `void`
  `setPort(String port)`
  `void`
  `setPrefixHTTPSampleName(String prefixHTTPSampleName)`
  `void`
  `setProxyPauseHTTPSample(String proxyPauseHTTPSample)`
  `void`
  `setRegexMatch(boolean b)`
  `void`
  `setSamplerDownloadImages(boolean b)`
  `void`
  `setSamplerFollowRedirects(boolean b)`
  `void`
  `setSamplerRedirectAutomatically(boolean b)`
  `void`
  `setSamplerTypeName(String samplerTypeName)`
  `void`
  `setSslDomains(String domains)`
  `void`
  `setTarget(JMeterTreeNode target)`
  Sets the target node where samples generated by the proxy are to be stored.
  `void`
  `setUseKeepAlive(boolean b)`
  `void`
  `startProxy()`
  `void`
  `stopProxy()`

  ### Methods inherited from class org.apache.jmeter.control.GenericController

  `addIterationListener, addTestElement, addTestElementOnce, currentReturnedNull, fireIterationStart, fireIterEvents, getCurrentElement, getIterCount, getProps, getSchema, getSubControllers, incrementCurrent, incrementIterCount, initialize, initializeSubControllers, isDone, isFirst, next, nextIsAController, nextIsASampler, nextIsNull, readResolve, reInitialize, removeCurrentElement, removeIterationListener, resetCurrent, resetIterCount, setCurrentElement, setDone, setFirst, triggerEndOfLoop`

  ### Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement

  `addPropertiesValues, addProperty, addProperty, clear, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, 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.testelement.TestElement

  `clear, clearTestElementChildren, clone, get, get, get, get, get, get, get, get, get, getComment, getName, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, getPropertyOrNull, getString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removed, removeProperty, removeProperty, set, set, set, set, set, set, set, set, set, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

- ## Field Details

  - ### DEFAULT_PORT

    public static final int DEFAULT_PORT
    See Also:
      - Constant Field Values

  - ### DEFAULT_PORT_S

    public static final String DEFAULT_PORT_S

  - ### CERT_VALIDITY

    public static final int CERT_VALIDITY

- ## Constructor Details

  - ### ProxyControl

    public ProxyControl()

- ## Method Details

  - ### setNonGuiTreeModel

    public void setNonGuiTreeModel(JMeterTreeModel treeModel)
    Set a `JMeterTreeModel` to be used by the ProxyControl, when used in a non-GUI environment, where the `JMeterTreeModel` can't be acquired through `GuiPackage.getTreeModel()`
    Parameters:
      `treeModel` - the `JMeterTreeModel` to be used, or `null` when the GUI model should be used

  - ### setPort

    public void setPort(int port)

  - ### setPort

    public void setPort(String port)

  - ### setSslDomains

    public void setSslDomains(String domains)

  - ### getSslDomains

    public String getSslDomains()

  - ### setCaptureHttpHeaders

    public void setCaptureHttpHeaders(boolean capture)

  - ### setGroupingMode

    public void setGroupingMode(int grouping)

  - ### setAssertions

    public void setAssertions(boolean b)

  - ### setSamplerTypeName

    public void setSamplerTypeName(String samplerTypeName)

  - ### setSamplerRedirectAutomatically

    public void setSamplerRedirectAutomatically(boolean b)

  - ### setSamplerFollowRedirects

    public void setSamplerFollowRedirects(boolean b)

  - ### setUseKeepAlive

    public void setUseKeepAlive(boolean b)

  - ### setDetectGraphQLRequest

    public void setDetectGraphQLRequest(boolean b)

  - ### setSamplerDownloadImages

    public void setSamplerDownloadImages(boolean b)

  - ### setHTTPSampleNamingMode

    public void setHTTPSampleNamingMode(int httpNamingMode)

  - ### getDefaultEncoding

    public String getDefaultEncoding()

  - ### setDefaultEncoding

    public void setDefaultEncoding(String defaultEncoding)

  - ### setPrefixHTTPSampleName

    public void setPrefixHTTPSampleName(String prefixHTTPSampleName)

  - ### setProxyPauseHTTPSample

    public void setProxyPauseHTTPSample(String proxyPauseHTTPSample)

  - ### setNotifyChildSamplerListenerOfFilteredSamplers

    public void setNotifyChildSamplerListenerOfFilteredSamplers(boolean b)

  - ### setIncludeList

    public void setIncludeList(Collection<String> list)

  - ### setExcludeList

    public void setExcludeList(Collection<String> list)

  - ### setRegexMatch

    public void setRegexMatch(boolean b)

  - ### setContentTypeExclude

    public void setContentTypeExclude(String contentTypeExclude)

  - ### setContentTypeInclude

    public void setContentTypeInclude(String contentTypeInclude)

  - ### getAssertions

    public boolean getAssertions()

  - ### getGroupingMode

    public int getGroupingMode()

  - ### getPort

    public int getPort()

  - ### getPortString

    public String getPortString()

  - ### getDefaultPort

    public int getDefaultPort()

  - ### getCaptureHttpHeaders

    public boolean getCaptureHttpHeaders()

  - ### getSamplerTypeName

    public String getSamplerTypeName()

  - ### getSamplerRedirectAutomatically

    public boolean getSamplerRedirectAutomatically()

  - ### getSamplerFollowRedirects

    public boolean getSamplerFollowRedirects()

  - ### getUseKeepalive

    public boolean getUseKeepalive()

  - ### getDetectGraphQLRequest

    public boolean getDetectGraphQLRequest()

  - ### getSamplerDownloadImages

    public boolean getSamplerDownloadImages()

  - ### getHTTPSampleNamingMode

    public int getHTTPSampleNamingMode()

  - ### getPrefixHTTPSampleName

    public String getPrefixHTTPSampleName()

  - ### getProxyPauseHTTPSample

    public String getProxyPauseHTTPSample()

  - ### getNotifyChildSamplerListenerOfFilteredSamplers

    public boolean getNotifyChildSamplerListenerOfFilteredSamplers()

  - ### getRegexMatch

    public boolean getRegexMatch()

  - ### getContentTypeExclude

    public String getContentTypeExclude()

  - ### getContentTypeInclude

    public String getContentTypeInclude()

  - ### setHttpSampleNameFormat

    public void setHttpSampleNameFormat(String text)

  - ### getHttpSampleNameFormat

    public String getHttpSampleNameFormat()

  - ### getNonGuiTreeModel

    public JMeterTreeModel getNonGuiTreeModel()
    Returns:
      the `JMeterTreeModel` used when run in non-GUI mode, or `null` when run in GUI mode

  - ### addConfigElement

    public void addConfigElement(ConfigElement config)

  - ### startProxy

    public void startProxy() throws IOException
    Throws:
      `IOException`

  - ### addExcludedPattern

    public void addExcludedPattern(String pattern)

  - ### getExcludePatterns

    public CollectionProperty getExcludePatterns()

  - ### addIncludedPattern

    public void addIncludedPattern(String pattern)

  - ### getIncludePatterns

    public CollectionProperty getIncludePatterns()

  - ### clearExcludedPatterns

    public void clearExcludedPatterns()

  - ### clearIncludedPatterns

    public void clearIncludedPatterns()

  - ### getTarget

    public JMeterTreeNode getTarget()
    Returns:
      the target controller node

  - ### setTarget

    public void setTarget(JMeterTreeNode target)
    Sets the target node where samples generated by the proxy are to be stored.
    Parameters:
      `target` - target node to store generated samples

  - ### deliverSampler

    public void deliverSampler(HTTPSamplerBase sampler, org.apache.jmeter.testelement.TestElement[] testElements, SampleResult result)
    Receives the recorded sampler from the proxy server for placing in the test tree; this is skipped if the sampler is null (e.g. for recording SSL errors) Always sends the result to any registered sample listeners.
    Parameters:
      `sampler` - the sampler, may be null
      `testElements` - the test elements to be added (e.g. header manager) under the Sampler
      `result` - the sample result, not null TODO param serverResponse to be added to allow saving of the server's response while recording.

  - ### stopProxy

    public void stopProxy()

  - ### getCertificateDetails

    public String[] getCertificateDetails()

  - ### findTargetControllerNode

    public JMeterTreeNode findTargetControllerNode()
    Finds the controller where samplers have to be stored, that is:
    - The controller specified by the `target` property.
    - If none was specified, the first RecordingController in the tree.
    - If none is found, the first AbstractThreadGroup in the tree.
    Returns:
      the tree node for the controller where the proxy must store the generated samplers.

  - ### canRemove

    public boolean canRemove()
    Description copied from class: `AbstractTestElement`
    Specified by:
      `canRemove` in interface `org.apache.jmeter.testelement.TestElement`
    Overrides:
      `canRemove` in class `AbstractTestElement`

  - ### isDynamicMode

    public static boolean isDynamicMode()