jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrey Pokhilko <a...@ya.ru>
Subject Re: Issues when upgrading from 3 to 4.2.6 or 4.5.1
Date Tue, 15 Dec 2015 21:48:28 GMT
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.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>
>


Mime
View raw message