jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Philippe Mouawad <philippe.moua...@gmail.com>
Subject Re: Issues when upgrading from 3 to 4.2.6 or 4.5.1
Date Tue, 15 Dec 2015 22:06:05 GMT
Hi ,
I think that's what I wrote no ?
It's failing because at step 2 , as the domain is "bt.com" not ".bt.com",
we don't send the cookie , so I suppose we break the test.

I think in HC4.5 (as per answer of Oleg on ) , domain matching occurs based
on (((ClientCookie) cookie).containsAttribute(ClientCookie.DOMAIN_ATTR)) as
per BasicDomainHandler#match method used by NetscapeDraftSpec policy.
So I think we need to modify the Cookie JMeter class to preserve this
information which is used to match cookies to URL.

Regards


On Tue, Dec 15, 2015 at 10:48 PM, Andrey Pokhilko <apc4@ya.ru> wrote:

> No.
>
> Right test case is:
> 1. we get cookie for domain .bt.com
> 2. We do request to sub.bt.com and expect to send the cookie
>
> That's the case that was broken with upgrading to 0.4.5 in our field tries.
>
> Andrey Pokhilko
>
> On 12/16/2015 12:44 AM, Philippe Mouawad wrote:
> > Hi Andrei,
> > I  am not sure to understand.
> >
> > If you look at my test case sent to HTTPCLIENT, the cookie is transmitted
> > for subdomain.bt.com except that domain has value bt.com not ".bt.com".
> >
> > Do you mean that as on jmeter side , we get "bt.com" as domain, we don't
> > transmit in next request the cookie for subdomain.bt.com ?
> >
> > Thanks
> >
> > On Tue, Dec 15, 2015 at 10:40 PM, Andrey Pokhilko <apc4@ya.ru> wrote:
> >
> >> The impact of it is broken test plans. When cookie is set for .bt.com,
> >> it means that subdomain.bt.com must receive that cookie. That's by RFC
> >> AFAIK.
> >>
> >> Andrey Pokhilko
> >>
> >> On 12/15/2015 11:41 PM, Philippe Mouawad wrote:
> >>> Hi Andrey,
> >>> Test case is failing, but it seems to be a regular HC4.5 behaviour.
> >>>
> >>> What was the impact of this failing test case on JMeter side ?
> >>> It's not clear for me from your mail, if you can give a full example
> with
> >>> each step it wil help me understand.
> >>>
> >>> Thanks
> >>>
> >>> On Tue, Dec 15, 2015 at 5:56 PM, Andrey Pokhilko <apc4@ya.ru> wrote:
> >>>
> >>>> It's one from 10/27/2015 06:32 PM:
> >>>>
> >>>> Hi,
> >>>>
> >>>> Today we've found an issue in using HTTPClient 4.5 in JMeter. If we
> just
> >>>> replace the libraries with no change to JMeter code, it stops
> processing
> >>>> wildcard domains for cookies. I've failed to understand if it is
> >>>> regression in HTTPClient or something else.
> >>>>
> >>>> I've managed to write a unit test for it, I can commit it into trunk
> if
> >>>> needed. Unit test works fine on old libraries, but fails with 4.5:
> >>>>
> >>>> package org.apache.jmeter.protocol.http.control;
> >>>>
> >>>> import org.apache.http.cookie.Cookie;
> >>>> import org.apache.jmeter.testelement.property.CollectionProperty;
> >>>> import org.junit.Assert;
> >>>> import org.junit.Test;
> >>>>
> >>>> import java.net.URL;
> >>>> import java.util.List;
> >>>>
> >>>> public class HC4CookieHandlerTest {
> >>>>
> >>>>     @Test public void testAddCookieFromHeader_wildcard() throws
> >> Exception {
> >>>>         HC4CookieHandler obj = new HC4CookieHandler("compatibility");
> >>>>         URL url = new URL("https://subdomain.bt.com/page");
> >>>>         CookieManager mgr = new CookieManager();
> >>>>         String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
> >>>>         obj.addCookieFromHeader(mgr, true, headerLine, url);
> >>>>         CollectionProperty cp = mgr.getCookies();
> >>>>         List<Cookie> res = obj.getCookiesForUrl(cp, url, false);
> >>>>         Assert.assertEquals(1, res.size());
> >>>>         for (Cookie cookie : res) {
> >>>>             Assert.assertEquals(".bt.com", cookie.getDomain());
> >>>>         }
> >>>>     }
> >>>> }
> >>>>
> >>>>
> >>>>
> >>>> Andrey Pokhilko
> >>>>
> >>>> On 12/15/2015 07:44 PM, Philippe Mouawad wrote:
> >>>>> I was searching in my mails for it :-) Andrei
> >>>>>
> >>>>> On Tue, Dec 15, 2015 at 5:40 PM, Andrey Pokhilko <apc4@ya.ru> wrote:
> >>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> First of all - you've made awesome job on coordinating all this
> >> tedious
> >>>>>> communications with Oleg. Thanks, your contribution is invaluable in
> >> my
> >>>>>> eyes.
> >>>>>>
> >>>>>> Just a note - don't you want to include the test case I provided
> some
> >>>>>> time ago into this PR? To make sure the initial  case that revealed
> >>>>>> issues finally works...
> >>>>>>
> >>>>>> Andrey Pokhilko
> >>>>>>
> >>>>>> On 12/15/2015 07:31 PM, Philippe Mouawad wrote:
> >>>>>>> Hi,
> >>>>>>> I submitted a PR https://github.com/apache/jmeter/pull/62  after
> >>>> fixing
> >>>>>> the
> >>>>>>> remaining issues I think.
> >>>>>>> I still have one failing test , related to
> >>>>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1705 that I
> >> reopened.
> >>>>>>> I commented the IgnorePolicy (testCookiePolicyIgnore) test  as we
> >> need
> >>>>>> 4.5.2
> >>>>>>> I changed testCookies2 as per Oleg note and added testCookies3.
> >>>>>>>
> >>>>>>> Please review as this is very sensitive and I would really like a
> >>>> second
> >>>>>>> eye on it.
> >>>>>>>
> >>>>>>> Thanks
> >>>>>>> Regards
> >>>>>>>
> >>>>>>> On Tue, Dec 15, 2015 at 2:16 PM, Philippe Mouawad <
> >>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>
> >>>>>>>> Hi ,
> >>>>>>>> One last question, when is release of 4.5.2 expected as it fixes 2
> >>>> bugs
> >>>>>> we
> >>>>>>>> are facing in JMeter.
> >>>>>>>>
> >>>>>>>> Thanks
> >>>>>>>> Regards
> >>>>>>>>
> >>>>>>>> On Tue, Dec 15, 2015 at 2:05 PM, Philippe Mouawad <
> >>>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>>
> >>>>>>>>> On Tue, Dec 15, 2015 at 9:36 AM, Oleg Kalnichevski <
> >> olegk@apache.org
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> On Mon, 2015-12-14 at 21:41 +0100, Philippe Mouawad wrote:
> >>>>>>>>>>> Hello Oleg,
> >>>>>>>>>>> Thanks .
> >>>>>>>>>>>
> >>>>>>>>>> Test case #testParseCookies
> >>>>>>>>>>
> >>>>>>>>>> The rest case does not look right to me. I am not sure I
> >> understand
> >>>>>> what
> >>>>>>>>>> you are trying to test here.
> >>>>>>>>>>
> >>>>>>>>> Indeed, bad copy paste.
> >>>>>>>>>
> >>>>>>>>> The test fixed below works fine with HTTPCLIENT 4.5.1 so issue is
> >> on
> >>>>>>>>> JMeter side.
> >>>>>>>>>
> >>>>>>>>>> Test case #testParseCookies
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> The cookie in question does not have a version attribute
> mandatory
> >>>> for
> >>>>>>>>>> standard (RFC 2109 and RFC 2965) cookies. Therefore it is parsed
> >> as
> >>>>>>>>>> Netscape style cookie in which case comma is not considered a
> >> valid
> >>>>>>>>>> header element delimiter and is treated as normal character.
> >>>>>>>>>>
> >>>>>>>>> Thanks for explanation.
> >>>>>>>>> Note that test case worked fine in HC3. Was it a bug in HC3 ?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> Oleg
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Here it is:
> >>>>>>>>>>>
> >>>>>>>>>>> /*
> >>>>>>>>>>>  *
> >>>>>> ====================================================================
> >>>>>>>>>>>  * Licensed to the Apache Software Foundation (ASF) under one
> >>>>>>>>>>>  * or more contributor license agreements.  See the NOTICE file
> >>>>>>>>>>>  * distributed with this work for additional information
> >>>>>>>>>>>  * regarding copyright ownership.  The ASF licenses this file
> >>>>>>>>>>>  * to you under the Apache License, Version 2.0 (the
> >>>>>>>>>>>  * "License"); you may not use this file except in compliance
> >>>>>>>>>>>  * with the License.  You may obtain a copy of the License at
> >>>>>>>>>>>  *
> >>>>>>>>>>>  *   http://www.apache.org/licenses/LICENSE-2.0
> >>>>>>>>>>>  *
> >>>>>>>>>>>  * Unless required by applicable law or agreed to in writing,
> >>>>>>>>>>>  * software distributed under the License is distributed on an
> >>>>>>>>>>>  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> >>>>>>>>>>>  * KIND, either express or implied.  See the License for the
> >>>>>>>>>>>  * specific language governing permissions and limitations
> >>>>>>>>>>>  * under the License.
> >>>>>>>>>>>  *
> >>>>>> ====================================================================
> >>>>>>>>>>>  *
> >>>>>>>>>>>  * This software consists of voluntary contributions made by
> many
> >>>>>>>>>>>  * individuals on behalf of the Apache Software Foundation.
> For
> >>>> more
> >>>>>>>>>>>  * information on the Apache Software Foundation, please see
> >>>>>>>>>>>  * <http://www.apache.org/>.
> >>>>>>>>>>>  *
> >>>>>>>>>>>  */
> >>>>>>>>>>> package org.apache.http.client.protocol;
> >>>>>>>>>>>
> >>>>>>>>>>> import java.util.List;
> >>>>>>>>>>>
> >>>>>>>>>>> import org.apache.http.Header;
> >>>>>>>>>>> import org.apache.http.HttpResponse;
> >>>>>>>>>>> import org.apache.http.HttpResponseInterceptor;
> >>>>>>>>>>> import org.apache.http.HttpVersion;
> >>>>>>>>>>> import org.apache.http.client.CookieStore;
> >>>>>>>>>>> import org.apache.http.cookie.Cookie;
> >>>>>>>>>>> import org.apache.http.cookie.CookieOrigin;
> >>>>>>>>>>> import org.apache.http.cookie.CookieSpec;
> >>>>>>>>>>> import org.apache.http.cookie.SM;
> >>>>>>>>>>> import org.apache.http.impl.client.BasicCookieStore;
> >>>>>>>>>>> import org.apache.http.impl.cookie.DefaultCookieSpec;
> >>>>>>>>>>> import org.apache.http.message.BasicHttpResponse;
> >>>>>>>>>>> import org.apache.http.util.Asserts;
> >>>>>>>>>>> import org.junit.Assert;
> >>>>>>>>>>> import org.junit.Before;
> >>>>>>>>>>> import org.junit.Test;
> >>>>>>>>>>>
> >>>>>>>>>>> public class TestResponseProcessCookies {
> >>>>>>>>>>>
> >>>>>>>>>>>     private CookieOrigin cookieOrigin;
> >>>>>>>>>>>     private CookieSpec cookieSpec;
> >>>>>>>>>>>     private CookieStore cookieStore;
> >>>>>>>>>>>
> >>>>>>>>>>>     @Before
> >>>>>>>>>>>     public void setUp() throws Exception {
> >>>>>>>>>>>         this.cookieOrigin = new CookieOrigin("localhost", 80,
> >> "/",
> >>>>>>>>>> false);
> >>>>>>>>>>>         this.cookieSpec = new DefaultCookieSpec();
> >>>>>>>>>>>         this.cookieStore = new BasicCookieStore();
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test(expected=IllegalArgumentException.class)
> >>>>>>>>>>>     public void testResponseParameterCheck() throws Exception {
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(null, context);
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test(expected=IllegalArgumentException.class)
> >>>>>>>>>>>     public void testContextParameterCheck() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, null);
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testParseMultipleCookies() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;
> >>>>>>>>>> comment=\"how,now\",
> >>>>>>>>>>> test2=2; version=1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertEquals(1, cookies.size());
> >>>>>>>>>>>         final Cookie cookie = cookies.get(0);
> >>>>>>>>>>>         Assert.assertEquals(0, cookie.getVersion());
> >>>>>>>>>>>         Assert.assertEquals("name1", cookie.getName());
> >>>>>>>>>>>         Assert.assertEquals("value1", cookie.getValue());
> >>>>>>>>>>>         Assert.assertEquals("localhost", cookie.getDomain());
> >>>>>>>>>>>         Assert.assertEquals("/", cookie.getPath());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testParseCookies() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         List<Header> lstHdr =
> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>         }
> >>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>     }
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testParseCookies2() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;secure,
> >>>>>>>>>> test2=2;secure");
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         List<Header> lstHdr =
> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>         }
> >>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testNoCookieOrigin() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>> null);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testNoCookieSpec() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >> null);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testNoCookieStore() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >> null);
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertEquals(0, cookies.size());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testSetCookie2OverrideSetCookie() throws
> >> Exception
> >>>> {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name1=value2;
> >>>>>> Version=1");
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertEquals(1, cookies.size());
> >>>>>>>>>>>         final Cookie cookie = cookies.get(0);
> >>>>>>>>>>>         Assert.assertEquals(1, cookie.getVersion());
> >>>>>>>>>>>         Assert.assertEquals("name1", cookie.getName());
> >>>>>>>>>>>         Assert.assertEquals("value2", cookie.getValue());
> >>>>>>>>>>>         Assert.assertEquals("localhost.local",
> >> cookie.getDomain());
> >>>>>>>>>>>         Assert.assertEquals("/", cookie.getPath());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testInvalidHeader() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name=value;
> >>>>>> Version=crap");
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertTrue(cookies.isEmpty());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>>     @Test
> >>>>>>>>>>>     public void testCookieRejected() throws Exception {
> >>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>         response.addHeader(SM.SET_COOKIE2, "name=value; Domain=
> >>>>>>>>>>> www.somedomain.com; Version=1");
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpClientContext context =
> >>>> HttpClientContext.create();
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>
> >>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>
> >>>>>>>>>>>         final List<Cookie> cookies =
> >> this.cookieStore.getCookies();
> >>>>>>>>>>>         Assert.assertNotNull(cookies);
> >>>>>>>>>>>         Assert.assertTrue(cookies.isEmpty());
> >>>>>>>>>>>     }
> >>>>>>>>>>>
> >>>>>>>>>>> }
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> On Mon, Dec 14, 2015 at 9:34 PM, Oleg Kalnichevski <
> >>>> olegk@apache.org
> >>>>>>>>>> wrote:
> >>>>>>>>>>>> On Sun, 2015-12-13 at 22:28 +0100, Philippe Mouawad wrote:
> >>>>>>>>>>>>> Finally, for those  2 I am not sure  as per RFC6265, to use
> >> them
> >>>> ,
> >>>>>>>>>> put
> >>>>>>>>>>>> code
> >>>>>>>>>>>>> in
> org.apache.http.client.protocol.TestResponseProcessCookies.
> >>>>>>>>>>>>> They worked with HC3 but it does not mean they should work
> with
> >>>>>>>>>> HC4, but
> >>>>>>>>>>>> I
> >>>>>>>>>>>>> would like a confirmation:
> >>>>>>>>>>>>>
> >>>>>>>>>>>> I cannot get the tests to compile due to missing instance
> >>>> variables
> >>>>>>>>>>>> cookieOrigin, cookieSpec and cookieStore. I'll take another
> look
> >>>> if
> >>>>>>>>>> you
> >>>>>>>>>>>> post the complete class.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Oleg
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testParseCookies() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "name1=value1");
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         List<Header> lstHdr =
> >> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>         }
> >>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>     @Test
> >>>>>>>>>>>>>     public void testParseCookies2() throws Exception {
> >>>>>>>>>>>>>         final HttpResponse response = new
> >>>>>>>>>>>>> BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
> >>>>>>>>>>>>>         response.addHeader(SM.SET_COOKIE, "test1=1;secure,
> >>>>>>>>>>>> test2=2;secure");
> >>>>>>>>>>>>>         final HttpClientContext context =
> >>>>>>>>>> HttpClientContext.create();
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
> >>>>>>>>>>>>> this.cookieOrigin);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_SPEC,
> >>>>>>>>>>>>> this.cookieSpec);
> >>>>>>>>>>>>>         context.setAttribute(HttpClientContext.COOKIE_STORE,
> >>>>>>>>>>>>> this.cookieStore);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final HttpResponseInterceptor interceptor = new
> >>>>>>>>>>>>> ResponseProcessCookies();
> >>>>>>>>>>>>>         interceptor.process(response, context);
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>         final List<Cookie> cookies =
> >>>> this.cookieStore.getCookies();
> >>>>>>>>>>>>>         List<Header> lstHdr =
> >> cookieSpec.formatCookies(cookies);
> >>>>>>>>>>>>>         StringBuilder sbHdr = new StringBuilder();
> >>>>>>>>>>>>>         for (Header header : lstHdr) {
> >>>>>>>>>>>>>             sbHdr.append(header.getValue());
> >>>>>>>>>>>>>         }
> >>>>>>>>>>>>>         org.junit.Assert.assertEquals("test1=1; test2=2",
> >>>>>>>>>>>> sbHdr.toString());
> >>>>>>>>>>>>>     }
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Sun, Dec 13, 2015 at 10:09 PM, Philippe Mouawad <
> >>>>>>>>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>> Created
> https://issues.apache.org/jira/browse/HTTPCLIENT-1705
> >>>>>>>>>> with a
> >>>>>>>>>>>> Test
> >>>>>>>>>>>>>> case in it to show issue with Domain starting with ".".
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Sun, Dec 13, 2015 at 9:50 PM, Philippe Mouawad <
> >>>>>>>>>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi Oleg,
> >>>>>>>>>>>>>>> Created
> >> https://issues.apache.org/jira/browse/HTTPCLIENT-1705
> >>>>>>>>>> to show
> >>>>>>>>>>>>>>> issue with Cookie Header ordering.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Sun, Dec 13, 2015 at 9:30 PM, Philippe Mouawad <
> >>>>>>>>>>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Hi,
> >>>>>>>>>>>>>>>>  I created
> >>>>>>>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1704
> >>>>>>>>>>>> with
> >>>>>>>>>>>>>>>> JUnit test case so that you understand the difference we
> >> have.
> >>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Sat, Dec 5, 2015 at 1:26 PM, Oleg Kalnichevski <
> >>>>>>>>>> olegk@apache.org>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> On Fri, 2015-12-04 at 21:43 +0100, Philippe Mouawad
> wrote:
> >>>>>>>>>>>>>>>>>> Thanks Oleg.
> >>>>>>>>>>>>>>>>>> But look at
> >>>>>>>>>>>>>>>>>>
> >>
> https://github.com/ubikloadpack/jmeter/blob/HC4_5/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java#L368
> >>>>>>>>>>>>>>>>> ,
> >>>>>>>>>>>>>>>>>> it concerns IGNORE_POLICY
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> I really think there is at least one bug.
> >>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Sure thing. All these issues may well be due to bugs in
> HC.
> >>>>>>>>>> Could
> >>>>>>>>>>>> you
> >>>>>>>>>>>>>>>>> please though reproduce them with unit tests that do not
> >>>>>>>>>> involve
> >>>>>>>>>>>> JMeter
> >>>>>>>>>>>>>>>>> specific code?
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Oleg
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>> On Wed, Dec 2, 2015 at 4:00 PM, Oleg Kalnichevski <
> >>>>>>>>>>>> olegk@apache.org>
> >>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>> On Wed, 2015-12-02 at 15:51 +0100, Philippe Mouawad
> >> wrote:
> >>>>>>>>>>>>>>>>>>>> Hi Oleg,
> >>>>>>>>>>>>>>>>>>>> Thanks for answer.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> Find my answers inline.
> >>>>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> On Wed, Dec 2, 2015 at 3:36 PM, Oleg Kalnichevski <
> >>>>>>>>>>>>>>>>> olegk@apache.org>
> >>>>>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>> On Tue, 2015-12-01 at 22:09 +0100, Philippe Mouawad
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>>>>>>>>>> Any answer on this question ?
> >>>>>>>>>>>>>>>>>>>>>> Thanks
> >>>>>>>>>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>> On Sun, Nov 15, 2015 at 8:39 PM, Philippe Mouawad <
> >>>>>>>>>>>>>>>>>>>>>> philippe.mouawad@gmail.com> wrote:
> >>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>> Hello,
> >>>>>>>>>>>>>>>>>>>>>>> We're in the process of migrating JMeter to last
> >>>>>>>>>>>> HttpClient
> >>>>>>>>>>>>>>>>> 4.5.1.
> >>>>>>>>>>>>>>>>>>>>>>> We are now migrating the CookieManager to remove
> >>>>>>>>>> all
> >>>>>>>>>>>>>>>>> deprecated
> >>>>>>>>>>>>>>>>>>> code.
> >>>>>>>>>>>>>>>>>>>>>>> To test this class, we had a JUNIT class :
> >>>>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>>>>
> >>
> https://github.com/ubikloadpack/jmeter/blob/HC4_5/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
> >>>>>>>>>>>>>>>>>>>>>>> Before migration, it was still testing HC3
> >>>>>>>>>> version.
> >>>>>>>>>>>>>>>>>>>>>>> So we first switched to HC4.23 and noticed some
> >>>>>>>>>>>> failures:
> >>>>>>>>>>>>>>>>>>>>> I am confused. Are you using HC 4.2.3 or HC 4.5.1?
> >>>>>>>>>>>>>>>>>>>> As I wrote, first we switched our JUnit tests to use
> HC4
> >>>>>>>>>>>>>>>>> Implementation
> >>>>>>>>>>>>>>>>>>> of
> >>>>>>>>>>>>>>>>>>>> CookieHandler and used 4.2.3, we got some failures
> >>>>>>>>>> compared to
> >>>>>>>>>>>>>>>>> HC3.
> >>>>>>>>>>>>>>>>>>>> Then we switched from HC 4.2.3 to HC 4.5.1 and got
> other
> >>>>>>>>>>>> failures
> >>>>>>>>>>>>>>>>> all
> >>>>>>>>>>>>>>>>>>>> detailed in initial mail.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> What policy does
> >>>>>>>>>>>>>>>>>>>>> CookeManager use internally?
> >>>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>>> It depends on tests, you can see in the code that
> >>>>>>>>>> depending on
> >>>>>>>>>>>>>>>>> test
> >>>>>>>>>>>>>>>>>>> method
> >>>>>>>>>>>>>>>>>>>> we set different Policy to test them.
> >>>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> You ought to be using RFC6265 policy either in strict
> or
> >>>>>>>>>> relaxed
> >>>>>>>>>>>>>>>>> mode
> >>>>>>>>>>>>>>>>>>> and nothing else. All other policies have been marked
> as
> >>>>>>>>>>>> obsolete
> >>>>>>>>>>>>>>>>> and
> >>>>>>>>>>>>>>>>>>> have already been removed in 5.0 (trunk).
> >>>>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>>> 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
> >>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>> --
> >>>>>>>>>>>>>> Cordialement.
> >>>>>>>>>>>>>> Philippe Mouawad.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Cordialement.
> >>>>>>>>> Philippe Mouawad.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>> --
> >>>>>>>> Cordialement.
> >>>>>>>> Philippe Mouawad.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>
> >
>
>


-- 
Cordialement.
Philippe Mouawad.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message