Hello,
While working on Migration to last HC4.5 APIs and testing Client
Certificate (see another question on how to include tests for it), I
confirmed that the bug reported by Rainer was still here.

This bug has the following impact:

   - Whenever you set "https.use.cached.ssl.context=false " which is
   required for Client Certificate Testing, you end up :
      - Replaying SSL Handshake on every sample while we shouldn't
      - Losing KeepAlive
   - Another thing he tackles is that fact that within Thread Group
   iteration we reuse objects we shouldn't

IMO, we need to tackle it,  looking at Rainer patch I agree with almost all
his proposals except for what I describe below.


Let's see use most  common cases :

   - 0/ We are testing HTTP, Rainer is correct saying that when we switch
   to next iteration and are using KeepAlive we use the same connection while
   we shouldn't , this would be PROBLEM A below
   - 1/ We are testing HTTPS only without client certificate, then
   https.use.cached.ssl.context=true is ok within 1 thread group iteration.
   What would be unrealistic is the fact that SSL Handshake will not occur for
   next iteration. Let's call this case PROBLEM A.
   - 2/ We are testing HTTPS only WITH client certificate, then since
   https.use.cached.ssl.context=false is needed we have a problem PROBLEM B.

*ASSUMPTION:*

First, I think that we should consider that Each Thread Group Iteration is
a new user, indeed, If one  wants to make the same user loop, he can easily
add a Loop Controller as child of Thread Group and it's ok.

*So let's zoom to PROBLEM B first:*

   - If we make the assumption above, part of the patch of Rainer can be
   reused:
      - Have a thread local hold the fact that reset occured, but Maybe
      using JMeterVariables would be better particularly if one day we
decide to
      switch to different model 1 VU == 1 Thread.
      - What should be changed in Rainer patch is the SSL reset, indeed for
      HC4.5 we need to close idle and expired connections to really reset SSL
      State
      - What I don't get about Rainer patch is wether we should do the
      close on all HTTPCLIENT Instances of VUs or not. I think we should but It
      would be great if another brain or more would confirm

*Let's zoom to PROBLEM A:*

In summary, whenever we make a new Thread Group iteration, we must start
with new connections and not reuse existing ones.

So Rainer patch looks ok to me.

But:

1/ I would personally set default to

   -

   reuse.http.connections=false


2/ I would not introduce reuse.http.client

3/ I would not as a consequence reset HttpClient as it is not needed
to reset state if I am not wrong and it would

introduce "initialization cost" in requests timing

What's your thoughts ?


-- 
Regards
Philippe M.

Reply via email to