Hi Philippe I have very simple use case I configure squid proxy with authentication and I have jmx Test Plan that makes 3 HTTP Request.
I attached jmx file and access log from squid. Is there any ways for create a JUnit test with the same scenario? Also I want to remove !isDynamicProxy(getProxyHost(), getProxyPortInt())) from this condition <https://github.com/apache/jmeter/blob/387271deb6f5b310fa4f8672f65948ab6049ed90/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java#L694>, because it always false, when proxy config was specified. Thanks, Artem On Sun, Sep 16, 2018 at 9:53 PM, Philippe Mouawad < [email protected]> wrote: > Thanks for last PR update. > We'll merge it once 5.0 is released; > > But before, could you describe the use case met that made you see this > issue ? > Is the a possibility to provide a JMX Test plan that could be used as > integration test ? and if possible a JUnit test ? > > Thanks > > On Sat, Sep 1, 2018 at 4:02 PM Philippe Mouawad < > [email protected]> > wrote: > > > Hello, > > Thanks for latest updates of PR. > > 1/ I would not use Object but AuthState instead. > > > > 2/ Shouldn't we use HTTPCLIENTS_CACHE_PER_THREAD_AND_HTTPCLIENTKEY and > > store AuthState there (transforming Pair to Triple)? > > > > This would be the case for a Thread representing a Virtual User. > > But it would not be correct if a thread is not a Virtual User > > > > > > Regards > > > > On Wed, Aug 29, 2018 at 11:14 AM Artem Fedorov < > > [email protected]> wrote: > > > >> Fixed. > >> > >> Regarding (HttpClientContext.PROXY_AUTH_STATE + this) I also have > doubts: > >> > >> - minimal number of authstate, that we should store = Number of Requests > >> in > >> Test Plan. (each request can use own proxy). Does the AuthState is > Thread > >> Safe and we can share it between threads? I think no and it'll better to > >> store Number of Requests in Plan * Number of Threads AuthStates. > >> > >> - Also in case if we use dynamic proxy we can not reuse saved AuthState: > >> > >> > if (!isDynamicProxy(getProxyHost(), getProxyPortInt())) { > >> > localContext.setAttribute(HttpClientContext.PROXY_AUTH_STATE, > proxy); > >> > } > >> > >> Artem > >> > >> On Tue, Aug 28, 2018 at 11:46 PM, Philippe Mouawad < > >> [email protected]> wrote: > >> > >> > Thank you Artem, > >> > > >> > I made a little comment on PR. > >> > > >> > Just to be sure I understand the PR: > >> > > >> > - You set HttpClientContext.PROXY_AUTH_STATE so that it is used if > >> > updated > >> > > >> > But is it correct to store it as: > >> > > >> > - "http.auth.proxy-scope" + this > >> > > >> > Because we'll end per Thread with : > >> > > >> > - Number of Requests in Plan * Number of Threads AuthStates > >> > > >> > Regards > >> > > >> > > >> > On Mon, Aug 27, 2018 at 3:43 PM Artem Fedorov < > >> > [email protected]> > >> > wrote: > >> > > >> > > Hi Philippe > >> > > > >> > > https://github.com/apache/jmeter/pull/397 > >> > > > >> > > Let's discuss the details in the PR > >> > > > >> > > Thanks, > >> > > Artem > >> > > > >> > > On Sun, Aug 26, 2018 at 12:04 AM, Philippe Mouawad < > >> > > [email protected]> wrote: > >> > > > >> > > > Hello Artem, > >> > > > Go ahead and propose a patch or PR. > >> > > > It will be a clearer base to discuss. > >> > > > > >> > > > Thank you > >> > > > > >> > > > On Wed, Aug 22, 2018 at 10:56 AM Artem Fedorov < > >> > > > [email protected]> > >> > > > wrote: > >> > > > > >> > > > > I work with the latest JMeter version from github > >> > > > > (revision f27c31590cf07bc8427663b62fc22d6d650b95af) > >> > > > > > >> > > > > I create a Thread Group with 1 loop and 1 user. This Thread > Group > >> > > > contains > >> > > > > View Results Tree (Listener) and HTTP Resuest (Sampler) > >> > > > > > >> > > > > Configuration of HTTP Sampler: > >> > > > > > >> > > > > <HTTPSamplerProxy guiclass="HttpTestSampleGui" > >> > > > > > testclass="HTTPSamplerProxy" testname="HTTP Request" > >> > enabled="true"> > >> > > > > > <elementProp name="HTTPsampler.Arguments" > >> > > > > > elementType="Arguments" guiclass="HTTPArgumentsPanel" > >> > > > > testclass="Arguments" > >> > > > > > testname="User Defined Variables" enabled="true"> > >> > > > > > <collectionProp name="Arguments.arguments"/> > >> > > > > > </elementProp> > >> > > > > > <stringProp name="HTTPSampler.domain"></stringProp> > >> > > > > > <stringProp name="HTTPSampler.port"></stringProp> > >> > > > > > <stringProp name="HTTPSampler.protocol"></ > stringProp> > >> > > > > > <stringProp > >> > > name="HTTPSampler.contentEncoding"></stringProp> > >> > > > > > <stringProp name="HTTPSampler.path"> > >> http://blazedemo.com > >> > > > > > </stringProp> > >> > > > > > <stringProp name="HTTPSampler.method">GET< > /stringProp> > >> > > > > > <boolProp name="HTTPSampler.follow_ > >> > > > redirects">true</boolProp> > >> > > > > > <boolProp > >> > > name="HTTPSampler.auto_redirects">false</boolProp> > >> > > > > > <boolProp name="HTTPSampler.use_ > >> > keepalive">true</boolProp> > >> > > > > > <boolProp name="HTTPSampler.DO_ > MULTIPART_POST">false</ > >> > > > boolProp> > >> > > > > > <stringProp > >> > > name="HTTPSampler.embedded_url_re"></stringProp> > >> > > > > > <stringProp name="HTTPSampler.proxyHost"> > >> > > > localhost</stringProp> > >> > > > > > <stringProp name="HTTPSampler.proxyPort"> > >> > 3321</stringProp> > >> > > > > > <stringProp name="HTTPSampler.proxyUser"> > >> > artem</stringProp> > >> > > > > > <stringProp name="HTTPSampler.proxyPass"> > >> > artem</stringProp> > >> > > > > > <stringProp > >> > > name="HTTPSampler.connect_timeout"></stringProp> > >> > > > > > <stringProp name="HTTPSampler.response_ > >> > > > timeout"></stringProp> > >> > > > > > </HTTPSamplerProxy> > >> > > > > > >> > > > > > >> > > > > When I run this Test Plan I see 1 sample in the View Results > Tree, > >> > but > >> > > in > >> > > > > the access.log of squid I see 2 request from JMeter. > >> > > > > > >> > > > > 1534844834.248 0 127.0.0.1 TCP_DENIED/407 4056 GET > >> > > > > > http://blazedemo.com/ - HIER_NONE/- text/html > >> > > > > > 1534844834.320 52 127.0.0.1 TCP_MISS/200 8077 GET > >> > > > > > http://blazedemo.com/ artem HIER_DIRECT/54.93.131.97 > text/html > >> > > > > > >> > > > > > >> > > > > So, in real test each Sampler will send 2 requests: > >> > > > > - 1st without authentication data (and will receive 407 http > >> response > >> > > > code) > >> > > > > - TCP_DENIED/407 > >> > > > > - 2nd with authentication data(username/password/type) - will > be a > >> > > > success > >> > > > > - TCP_MISS/200 > >> > > > > > >> > > > > JMeter (httpclient) send 1st request for detect authentication > >> type > >> > > > > (Basic/Digest/NTLM/SPNEGO/Kerberos) which use proxy server. > >> > > > > If we will have 2 loops the JMeter will send 4 requests, 3 loops > >> = 6 > >> > > > > requests etc. I would like to reduce number of request to the > >> proxy > >> > > > server > >> > > > > and make request for detect authentication type once at the > start > >> of > >> > > the > >> > > > > loop > >> > > > > > >> > > > > Artem > >> > > > > > >> > > > > On Wed, Aug 22, 2018 at 12:26 AM, Philippe Mouawad < > >> > > > > [email protected]> wrote: > >> > > > > > >> > > > > > Hello Artem, > >> > > > > > I am not sure to understand. > >> > > > > > > >> > > > > > Can you clarify with an example or reformulating what you mean > >> by > >> > > HTTP > >> > > > > > Request that use proxy with authentication. > >> > > > > > > >> > > > > > and also clarify what’s after that, it’s really not clear for > >> me. > >> > > > > > > >> > > > > > Thank you > >> > > > > > > >> > > > > > On Tuesday, August 21, 2018, Artem Fedorov < > >> > > > [email protected] > >> > > > > > > >> > > > > > wrote: > >> > > > > > > >> > > > > > > HI All > >> > > > > > > > >> > > > > > > I configure HTTP Request that use proxy with authentication > >> > > > > > > > >> > > > > > > In proxy log I can see, that JMeter *always send 2 > >> requests*: (I > >> > > > used > >> > > > > > > `squid` in tests) > >> > > > > > > > >> > > > > > > 1534844834.248 0 127.0.0.1 TCP_DENIED/407 4056 GET > >> > > > > > > > http://blazedemo.com/ - HIER_NONE/- text/html > >> > > > > > > > 1534844834.320 52 127.0.0.1 TCP_MISS/200 8077 GET > >> > > > > > > > http://blazedemo.com/ artem HIER_DIRECT/54.93.131.97 > >> text/html > >> > > > > > > > >> > > > > > > > >> > > > > > > The first request JMeter send without authentication > options, > >> > > because > >> > > > > > this > >> > > > > > > options are create after server got a response with 401/407 > >> code. > >> > > > > > > > >> > > > > > > In performance test I'll see the following log: (50 % of all > >> > > requests > >> > > > > are > >> > > > > > > send without authentication options) - IMO this is incorrect > >> load > >> > > of > >> > > > > > proxy > >> > > > > > > server or we lose a lot of time for create authentication > >> scheme > >> > > for > >> > > > > each > >> > > > > > > request > >> > > > > > > > >> > > > > > > - TCP_DENIED/407 (without proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > - TCP_DENIED/407 (without proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > - TCP_DENIED/407 (without proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > .... > >> > > > > > > > >> > > > > > > The first request (the response for this request) use by > >> > httpclient > >> > > > for > >> > > > > > > detect Standard authentication type > >> > > > > (Basic/Digest/NTLM/SPNEGO/Kerberos). > >> > > > > > I > >> > > > > > > think If we have not dynamic proxy we can *reuse* knowledges > >> > about > >> > > > > > > authentication type in the second and subsequent requests. > >> > > > > > > After such changes we will see the following log: > >> > > > > > > > >> > > > > > > - TCP_DENIED/407 (without proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > - TCP_MISS/200 (with proxy authentication) > >> > > > > > > .... > >> > > > > > > > >> > > > > > > What do you think about such changes? If all is OK I can > >> > contribute > >> > > > the > >> > > > > > fix > >> > > > > > > > >> > > > > > > > >> > > > > > > Thanks, > >> > > > > > > Artem > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > -- > >> > > > > > Cordialement. > >> > > > > > Philippe Mouawad. > >> > > > > > Ubik-Ingénierie > >> > > > > > > >> > > > > > UBIK LOAD PACK Web Site <http://www.ubikloadpack.com/> > >> > > > > > > >> > > > > > UBIK LOAD PACK on TWITTER <https://twitter.com/ubikloadpack> > >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > -- > >> > > > Cordialement. > >> > > > Philippe Mouawad. > >> > > > > >> > > > >> > > >> > > >> > -- > >> > Cordialement. > >> > Philippe Mouawad. > >> > > >> > > > > > > -- > > Cordialement. > > Philippe Mouawad. > > > > > > > > -- > Cordialement. > Philippe Mouawad. >
