I reviewed the code for test case in the PR, looks fine. Andrey Pokhilko
On 12/16/2015 01:06 AM, Philippe Mouawad wrote: > 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 <[email protected]> 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 <[email protected]> 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 <[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. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >> >
