You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Philippe Mouawad <p....@ubik-ingenierie.com> on 2020/06/10 17:11:24 UTC

Migration from HC4 to HC5 : few questions

Hello,
I am looking into migrating Apache JMeter project from HC4 to HC5 to
benefit from the new features for Classic  HttpClient like the new lax
connection pool and performance improvements.
In the future we would hopefully switch to Async.

First thanks for this documentation, very useful ! :
https://ok2c.github.io/httpclient-migration-guide/migration-to-classic.html

Few questions:

   1. I don't see an equivalent of RequestConfig.Builder#setLocalAddress ?
   How do we get this feature ?
   2. Is there an equivalent of LaxRedirectStrategy?  or
   DefaultRedirectStrategy is now the equivalent which seems to be the case ?
   3.

   PoolingHttpClientConnectionManager does not expose anymore the
   HttpClientConnectionOperator, it's a protected constructor. In JMeter we
   use this to compute connect time. It looks like we would need to extend
   PoolingHttpClientConnectionManager, is there another better way to keep
   this ?
   4.

   Regarding bandwidth measurement per request, we used this approach based
   on your SO answer (
   https://stackoverflow.com/questions/26166469/measure-bandwidth-usage-with-apache-httpcomponents-httpclient
   ):


   -
      https://github.com/apache/jmeter/blob/master/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java#L448
      - Is it still ok using

      preProcess/postProcess by redefining them in an extension of
      HttpRequestExecutor and access endpointdetails through:
      -

      HttpCoreContext.*adapt*(context).getEndpointDetails();

      But I don't see any more reset(), so how should we proceed ?



Thanks for your help.

-- 
Cordialement
Philippe M.
Ubik-Ingenierie

Re: Migration from HC4 to HC5 : few questions

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Wed, 2020-07-01 at 19:03 +0200, Philippe Mouawad wrote:
> Hello Oleg,
> Sorry for late reply, this mail was in my drafts, while I thought I
> had
> sent it.
> 
> *Thank you for your detailed answers and rapid feedback.*
> All this helps a lot !
> 
> Regarding HttpConnectionMetrics, since we need metrics per request
> and not
> per connection, my understanding is that we would need a reset
> method, do I
> understand well ?
> Regards
> Philippe

Hi Philippe

I think what you need to do is to copy values from
HttpConnectionMetrics and do a simple calculation to determine the
number of bytes sent and received by the current message exchange.

Oleg

> 
> 
> On Thu, Jun 11, 2020 at 12:35 PM Oleg Kalnichevski <ol...@apache.org>
> wrote:
> 
> > On Wed, 2020-06-10 at 19:11 +0200, Philippe Mouawad wrote:
> > > Hello,
> > > I am looking into migrating Apache JMeter project from HC4 to HC5
> > > to
> > > benefit from the new features for Classic  HttpClient like the
> > > new
> > > lax
> > > connection pool and performance improvements.
> > > In the future we would hopefully switch to Async.
> > > 
> > > First thanks for this documentation, very useful ! :
> > > 
> > 
> > 
https://ok2c.github.io/httpclient-migration-guide/migration-to-classic.html
> > > 
> > > Few questions:
> > > 
> > >    1. I don't see an equivalent of
> > > RequestConfig.Builder#setLocalAddress ?
> > >    How do we get this feature ?
> > 
> >  RequestConfig.Builder#setLocalAddress was a mistake. This
> > parameter
> > has nothing to do with request execution.
> > 
> > Please use custom HttpRoutePlanner instead.
> > 
> > 
> > >    2. Is there an equivalent of LaxRedirectStrategy?  or
> > >    DefaultRedirectStrategy is now the equivalent which seems to
> > > be
> > > the case ?
> > 
> > DefaultRedirectStrategy should now cover all common cases. Lax
> > strategy
> > implementation is now superfluous.
> > 
> > 
> > >    3.
> > > 
> > >    PoolingHttpClientConnectionManager does not expose anymore the
> > >    HttpClientConnectionOperator, it's a protected constructor. In
> > > JMeter we
> > >    use this to compute connect time. It looks like we would need
> > > to
> > > extend
> > >    PoolingHttpClientConnectionManager, is there another better
> > > way to
> > > keep
> > >    this ?
> > 
> > 
> > No, this is the intended way.
> > 
> > 
> > >    4.
> > > 
> > >    Regarding bandwidth measurement per request, we used this
> > > approach
> > > based
> > >    on your SO answer (
> > > 
> > > 
> > 
> > 
https://stackoverflow.com/questions/26166469/measure-bandwidth-usage-with-apache-httpcomponents-httpclient
> > >    ):
> > > 
> > > 
> > >    -
> > > 
> > > 
> > 
> > 
https://github.com/apache/jmeter/blob/master/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java#L448
> > >       - Is it still ok using
> > > 
> > >       preProcess/postProcess by redefining them in an extension
> > > of
> > >       HttpRequestExecutor and access endpointdetails through:
> > >       -
> > > 
> > >       HttpCoreContext.*adapt*(context).getEndpointDetails();
> > > 
> > >       But I don't see any more reset(), so how should we proceed
> > > ?
> > > 
> > > 
> > 
> > There is no #reset method. We could add but I am not sure if you
> > really
> > need it at all. If you need the total bytes sent / received and the
> > total number of requests / responses those details are provided by
> > HttpConnectionMetrics interface.
> > 
> > Hope this helps
> > 
> > Oleg
> > 
> > 
> > 
> > -----------------------------------------------------------------
> > ----
> > To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> > For additional commands, e-mail: 
> > httpclient-users-help@hc.apache.org
> > 
> > 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org


Re: Migration from HC4 to HC5 : few questions

Posted by Philippe Mouawad <p....@ubik-ingenierie.com>.
Hello Oleg,
Sorry for late reply, this mail was in my drafts, while I thought I had
sent it.

*Thank you for your detailed answers and rapid feedback.*
All this helps a lot !

Regarding HttpConnectionMetrics, since we need metrics per request and not
per connection, my understanding is that we would need a reset method, do I
understand well ?
Regards
Philippe


On Thu, Jun 11, 2020 at 12:35 PM Oleg Kalnichevski <ol...@apache.org> wrote:

> On Wed, 2020-06-10 at 19:11 +0200, Philippe Mouawad wrote:
> > Hello,
> > I am looking into migrating Apache JMeter project from HC4 to HC5 to
> > benefit from the new features for Classic  HttpClient like the new
> > lax
> > connection pool and performance improvements.
> > In the future we would hopefully switch to Async.
> >
> > First thanks for this documentation, very useful ! :
> >
> https://ok2c.github.io/httpclient-migration-guide/migration-to-classic.html
> >
> > Few questions:
> >
> >    1. I don't see an equivalent of
> > RequestConfig.Builder#setLocalAddress ?
> >    How do we get this feature ?
>
>  RequestConfig.Builder#setLocalAddress was a mistake. This parameter
> has nothing to do with request execution.
>
> Please use custom HttpRoutePlanner instead.
>
>
> >    2. Is there an equivalent of LaxRedirectStrategy?  or
> >    DefaultRedirectStrategy is now the equivalent which seems to be
> > the case ?
>
> DefaultRedirectStrategy should now cover all common cases. Lax strategy
> implementation is now superfluous.
>
>
> >    3.
> >
> >    PoolingHttpClientConnectionManager does not expose anymore the
> >    HttpClientConnectionOperator, it's a protected constructor. In
> > JMeter we
> >    use this to compute connect time. It looks like we would need to
> > extend
> >    PoolingHttpClientConnectionManager, is there another better way to
> > keep
> >    this ?
>
>
> No, this is the intended way.
>
>
> >    4.
> >
> >    Regarding bandwidth measurement per request, we used this approach
> > based
> >    on your SO answer (
> >
> >
> https://stackoverflow.com/questions/26166469/measure-bandwidth-usage-with-apache-httpcomponents-httpclient
> >    ):
> >
> >
> >    -
> >
> >
> https://github.com/apache/jmeter/blob/master/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java#L448
> >       - Is it still ok using
> >
> >       preProcess/postProcess by redefining them in an extension of
> >       HttpRequestExecutor and access endpointdetails through:
> >       -
> >
> >       HttpCoreContext.*adapt*(context).getEndpointDetails();
> >
> >       But I don't see any more reset(), so how should we proceed ?
> >
> >
>
> There is no #reset method. We could add but I am not sure if you really
> need it at all. If you need the total bytes sent / received and the
> total number of requests / responses those details are provided by
> HttpConnectionMetrics interface.
>
> Hope this helps
>
> Oleg
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>
>

-- 
Cordialement
Philippe M.
Ubik-Ingenierie

Re: Migration from HC4 to HC5 : few questions

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Wed, 2020-06-10 at 19:11 +0200, Philippe Mouawad wrote:
> Hello,
> I am looking into migrating Apache JMeter project from HC4 to HC5 to
> benefit from the new features for Classic  HttpClient like the new
> lax
> connection pool and performance improvements.
> In the future we would hopefully switch to Async.
> 
> First thanks for this documentation, very useful ! :
> 
https://ok2c.github.io/httpclient-migration-guide/migration-to-classic.html
> 
> Few questions:
> 
>    1. I don't see an equivalent of
> RequestConfig.Builder#setLocalAddress ?
>    How do we get this feature ?

 RequestConfig.Builder#setLocalAddress was a mistake. This parameter
has nothing to do with request execution.

Please use custom HttpRoutePlanner instead.


>    2. Is there an equivalent of LaxRedirectStrategy?  or
>    DefaultRedirectStrategy is now the equivalent which seems to be
> the case ?

DefaultRedirectStrategy should now cover all common cases. Lax strategy
implementation is now superfluous. 


>    3.
> 
>    PoolingHttpClientConnectionManager does not expose anymore the
>    HttpClientConnectionOperator, it's a protected constructor. In
> JMeter we
>    use this to compute connect time. It looks like we would need to
> extend
>    PoolingHttpClientConnectionManager, is there another better way to
> keep
>    this ?


No, this is the intended way. 


>    4.
> 
>    Regarding bandwidth measurement per request, we used this approach
> based
>    on your SO answer (
>    
> https://stackoverflow.com/questions/26166469/measure-bandwidth-usage-with-apache-httpcomponents-httpclient
>    ):
> 
> 
>    -
>       
> https://github.com/apache/jmeter/blob/master/src/protocol/http/src/main/java/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java#L448
>       - Is it still ok using
> 
>       preProcess/postProcess by redefining them in an extension of
>       HttpRequestExecutor and access endpointdetails through:
>       -
> 
>       HttpCoreContext.*adapt*(context).getEndpointDetails();
> 
>       But I don't see any more reset(), so how should we proceed ?
> 
> 

There is no #reset method. We could add but I am not sure if you really
need it at all. If you need the total bytes sent / received and the
total number of requests / responses those details are provided by
HttpConnectionMetrics interface. 

Hope this helps

Oleg



---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
For additional commands, e-mail: httpclient-users-help@hc.apache.org