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 <[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. >>>>>> >>>>>> >>>>>> >> >
