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, 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 and Description
    --- | ---
    `static class` | `ProxyControl.KeystoreMode`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `CERT_VALIDITY`
    `static int` | `DEFAULT_PORT`
    `static 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, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProxyControl()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addConfigElement(ConfigElement config)`
    `void` | `addExcludedPattern(String pattern)`
    `void` | `addIncludedPattern(String pattern)`
    `boolean` | `canRemove()` Called by Remove to determine if it is safe to remove the element.
    `void` | `clearExcludedPatterns()`
    `void` | `clearIncludedPatterns()`
    `void` | `deliverSampler(HTTPSamplerBase sampler, 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, 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, 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, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removed, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

- - ### Field Detail

    - #### 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 Detail

    - #### ProxyControl

          public ProxyControl()

  - ### Method Detail

    - #### 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,
                                     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`
      Called by Remove to determine if it is safe to remove the element. The element can either clean itself up, and return true, or the element can return false.
      Specified by:
        `canRemove` in interface `TestElement`
      Overrides:
        `canRemove` in class `AbstractTestElement`
      Returns:
        true if safe to remove the element

    - #### isDynamicMode

          public static boolean isDynamicMode()

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