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 <[email protected]> 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 <[email protected]> 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 < > >>> [email protected]> 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 < > >>>> [email protected]> wrote: > >>>> > >>>>> On Tue, Dec 15, 2015 at 9:36 AM, Oleg Kalnichevski <[email protected] > > > >>>>> 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 < > [email protected] > >>>>>> 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 < > >>>>>>>>> [email protected]> 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 < > >>>>>>>>>> [email protected]> 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 < > >>>>>>>>>>> [email protected]> 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 < > >>>>>> [email protected]> > >>>>>>>>>>>> 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 < > >>>>>>>> [email protected]> > >>>>>>>>>>>>> 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 < > >>>>>>>>>>>>> [email protected]> > >>>>>>>>>>>>>>> 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 < > >>>>>>>>>>>>>>>>>> [email protected]> 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: > >>>>>>>> [email protected] > >>>>>>>>>>>>>>> For additional commands, e-mail: > >>>>>>>>>>>>> [email protected] > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >> --------------------------------------------------------------------- > >>>>>>>>>>>>> To unsubscribe, e-mail: > >>>>>> [email protected] > >>>>>>>>>>>>> For additional commands, e-mail: > >>>>>>>> [email protected] > >>>>>>>>>>>> -- > >>>>>>>>>>>> Cordialement. > >>>>>>>>>>>> Philippe Mouawad. > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> -- > >>>>>>>>>>> Cordialement. > >>>>>>>>>>> Philippe Mouawad. > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> -- > >>>>>>>>>> Cordialement. > >>>>>>>>>> Philippe Mouawad. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>> > >>>>> -- > >>>>> Cordialement. > >>>>> Philippe Mouawad. > >>>>> > >>>>> > >>>>> > >>>> -- > >>>> Cordialement. > >>>> Philippe Mouawad. > >>>> > >>>> > >>>> > >> > > > > -- Cordialement. Philippe Mouawad.
