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. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >> > > > > -- Cordialement. Philippe Mouawad.
