-1

HC3CookieHandler  is deprecated , it does not support new RFC.

What you are doing here is reducing the scope of HC4CookieHandler which is
the up to date one and the correct one.

So you end up testing much more HC3 than HC4.

I spent a lot of time with Oleg fixing those Cookie Related test and
checking with him which one were ok to fail (and should be fixed) and which
one are OK.
I sent many mails on dev mailing list to mention those.

If you want to reintroduce HC3 , then I suggest you create an additional
TestUnit class for it.
But to fix this one, I would just in setup add:
            man.setImplementation(HC4CookieHandler.class.getName());
            man.setCookiePolicy(HC4CookieHandler.DEFAULT_POLICY_NAME);

Regards



On Sat, Feb 27, 2016 at 1:40 PM, <[email protected]> wrote:

> Author: sebb
> Date: Sat Feb 27 12:40:27 2016
> New Revision: 1732632
>
> URL: http://svn.apache.org/viewvc?rev=1732632&view=rev
> Log:
> Fix up broken tests that assumed the CookieManager defaults to HC4
>
> Modified:
>
> jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
>
> Modified:
> jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
> URL:
> http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java?rev=1732632&r1=1732631&r2=1732632&view=diff
>
> ==============================================================================
> ---
> jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
> (original)
> +++
> jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
> Sat Feb 27 12:40:27 2016
> @@ -41,16 +41,26 @@ import org.junit.Before;
>  import org.junit.Test;
>
>  public class TestCookieManager extends JMeterTestCase {
> +
> +        /** HC3/compatibility */
>          private CookieManager man = null;
>
> +        /** HC4/standard */
> +        private CookieManager man4 = null;
> +
>          private JMeterContext jmctx = null;
>
>          @Before
>          public void setUp() throws Exception {
>              jmctx = JMeterContextService.getContext();
> -            man = new CookieManager();
> +            man = new CookieManager(); // N.B. uses the JMX defaults,
> i.e. HC3 and "compatibility"
>              man.setThreadContext(jmctx);
>              man.testStarted();// This is needed in order to set up the
> cookie policy
> +            man4 = new CookieManager(); // N.B. uses the JMX defaults,
> i.e. HC3 and "compatibility"
> +            man4.setImplementation(HC4CookieHandler.class.getName()); //
> change to HC4
> +            man4.setCookiePolicy(HC4CookieHandler.DEFAULT_POLICY_NAME);
> // and HC4 default
> +            man4.setThreadContext(jmctx);
> +            man4.testStarted();// This is needed in order to set up the
> cookie policy
>          }
>
>          @Test
> @@ -114,11 +124,11 @@ public class TestCookieManager extends J
>          public void testAddCookieFromHeaderWithWildcard() throws
> Exception {
>              URL url = new URL("https://subdomain.bt.com/page";);
>              String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
> -            man.addCookieFromHeader(headerLine, url);
> -            Assert.assertEquals(1, man.getCookieCount());
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            man4.addCookieFromHeader(headerLine, url);
> +            Assert.assertEquals(1, man4.getCookieCount());
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              List<org.apache.http.cookie.Cookie> cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(), url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>
>              for (org.apache.http.cookie.Cookie cookie : cookies) {
> @@ -130,7 +140,7 @@ public class TestCookieManager extends J
>              // we check that CookieManager returns the cookies for the
> main domain
>              URL urlMainDomain = new URL("https://www.bt.com/page";);
>              cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(),
> urlMainDomain,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(),
> urlMainDomain,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              Assert.assertEquals(1, cookies.size());
>              for (org.apache.http.cookie.Cookie cookie : cookies) {
> @@ -147,11 +157,11 @@ public class TestCookieManager extends J
>          public void testAddCookieFromHeaderWithNoWildcard() throws
> Exception {
>              URL url = new URL("https://subdomain.bt.com/page";);
>              String headerLine = "SMTRYNO=1; path=/";
> -            man.addCookieFromHeader(headerLine, url);
> -            Assert.assertEquals(1, man.getCookieCount());
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            man4.addCookieFromHeader(headerLine, url);
> +            Assert.assertEquals(1, man4.getCookieCount());
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              List<org.apache.http.cookie.Cookie> cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(), url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              Assert.assertEquals(1, cookies.size());
>              for (org.apache.http.cookie.Cookie cookie : cookies) {
> @@ -163,7 +173,7 @@ public class TestCookieManager extends J
>              // we check that CookieManager returns the cookies for the
> main domain
>              URL urlMainDomain = new URL("https://www.bt.com/page";);
>              cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(),
> urlMainDomain,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(),
> urlMainDomain,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              Assert.assertEquals(0, cookies.size());
>          }
> @@ -175,14 +185,14 @@ public class TestCookieManager extends J
>          public void testAddCookieFromHeaderWithWildcard2() throws
> Exception {
>              URL url = new URL("https://www.bt.com/page";);
>              String headerLine = "SMTRYNO=1; path=/; domain=.bt.com";
> -            man.addCookieFromHeader(headerLine, url);
> +            man4.addCookieFromHeader(headerLine, url);
>
> -            Assert.assertEquals(1, man.getCookieCount());
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            Assert.assertEquals(1, man4.getCookieCount());
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              URL urlSubDomain = new URL("https://subdomain.bt.com/page";);
>
>              List<org.apache.http.cookie.Cookie> cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(),
> urlSubDomain,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(),
> urlSubDomain,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              Assert.assertEquals(1, cookies.size());
>              for (org.apache.http.cookie.Cookie cookie : cookies) {
> @@ -199,15 +209,14 @@ public class TestCookieManager extends J
>          public void testBug56358() throws Exception {
>              URL url = new URL("http://remote.com:10008/get/cookie";);
>              String headerLine = "test=value;Max-age=120;path=/;Version=1";
> -            man.setCookiePolicy(CookieSpecs.STANDARD);
> -            man.addCookieFromHeader(headerLine, url);
> +            man4.addCookieFromHeader(headerLine, url);
>
> -            Assert.assertEquals(1, man.getCookieCount());
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            Assert.assertEquals(1, man4.getCookieCount());
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              URL urlSameDomainDifferentPort = new URL("
> http://remote.com:10001/test/me";);
>
>              List<org.apache.http.cookie.Cookie> cookies =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(),
> urlSameDomainDifferentPort,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(),
> urlSameDomainDifferentPort,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              Assert.assertEquals(1, cookies.size());
>              for (org.apache.http.cookie.Cookie cookie : cookies) {
> @@ -287,8 +296,6 @@ public class TestCookieManager extends J
>          // Test multi-cookie header handling
>          @Test
>          public void testCookies1() throws Exception {
> -            man.setCookiePolicy(CookieSpecs.DEFAULT);
> -            man.testStarted(); // ensure policy is picked up
>              URL url = new URL("http://a.b.c.d/testCookies1";);
>              man.addCookieFromHeader("test1=1; comment=\"how,now\",
> test2=2; version=1", url);
>              assertEquals(2,man.getCookieCount());
> @@ -298,24 +305,32 @@ public class TestCookieManager extends J
>          }
>
>          @Test
> -        public void testCookies2() throws Exception {
> +        public void testCookies2HC4() throws Exception {
>              URL url = new URL("https://a.b.c.d/testCookies2";);
>              //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.
>
> +            man4.addCookieFromHeader("test1=1;secure, test2=2;secure",
> url);
> +            assertEquals(1,man4.getCookieCount());
> +            String s = man4.getCookieHeaderForURL(url);
> +            assertNotNull(s);
> +            assertEquals("test1=1", s);
> +        }
> +
> +        @Test
> +        public void testCookies2() throws Exception {
> +            URL url = new URL("https://a.b.c.d/testCookies2";);
>              man.addCookieFromHeader("test1=1;secure, test2=2;secure",
> url);
> -            assertEquals(1,man.getCookieCount());
> +            assertEquals(2,man.getCookieCount());
>              String s = man.getCookieHeaderForURL(url);
>              assertNotNull(s);
> -            assertEquals("test1=1", s);
> +            assertEquals("test1=1; test2=2", s);
>          }
> -
> +
>          @Test
>          public void testCookies3() throws Exception {
> -            man.setCookiePolicy(CookieSpecs.DEFAULT);
> -            man.testStarted(); // ensure policy is picked up
>              URL url = new URL("https://a.b.c.d/testCookies2";);
>              man.addCookieFromHeader("test1=1;secure, test2=2;secure;
> version=1", url);
>              assertEquals(2,man.getCookieCount());
> @@ -438,21 +453,16 @@ public class TestCookieManager extends J
>          public void testCookieOrdering1() throws Exception {
>              URL url = new URL("http://order.now/sub1/moo.html";);
>              man.addCookieFromHeader("test1=moo1;path=/", url);
> -            // Waiting for
> https://issues.apache.org/jira/browse/HTTPCLIENT-1705
>              man.addCookieFromHeader("test2=moo2;path=/sub1", url);
>              man.addCookieFromHeader("test2=moo3;path=/", url);
>              assertEquals(3,man.getCookieCount());
>              String s = man.getCookieHeaderForURL(url);
>              assertNotNull(s);
> -            //Cookies like "test1=moo1;path=/" are invalid from the
> standpoint of RFC 2109 and RFC 2965 as they lack mandatory version
> attribute.
> -            // The default policy treats such cookies as Netscape draft
> compatible.  And the Netscape draft does not define any particular order
> -            // for cookies in the cookie header.
> -            // see https://issues.apache.org/jira/browse/HTTPCLIENT-1705
> -            // assertEquals("test2=moo2; test1=moo1; test2=moo3", s);
> +            assertEquals("test2=moo2; test1=moo1; test2=moo3", s);
>          }
>
>          @Test
> -        public void testCookieOrdering2() throws Exception {
> +        public void testCookieOrdering2HC3() throws Exception {
>              URL url = new URL("http://order.now/sub1/moo.html";);
>              man.addCookieFromHeader("test1=moo1;", url);
>              man.addCookieFromHeader("test2=moo2;path=/sub1", url);
> @@ -463,9 +473,33 @@ public class TestCookieManager extends J
>              assertEquals("/",man.get(2).getPath());
>              String s = man.getCookieHeaderForURL(url);
>              assertNotNull(s);
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler)
> man.getCookieHandler();
> +            org.apache.commons.httpclient.Cookie[] c =
> +                    hc3CookieHandler.getCookiesForUrl(man.getCookies(),
> url,
> +                    CookieManager.ALLOW_VARIABLE_COOKIES);
> +            assertEquals("/sub1",c[0].getPath());
> +            assertFalse(c[0].isPathAttributeSpecified());
> +            assertEquals("/sub1",c[1].getPath());
> +            assertTrue(c[1].isPathAttributeSpecified());
> +            assertEquals("/",c[2].getPath());
> +            assertEquals("test1=moo1; test2=moo2; test2=moo3", s);
> +        }
> +
> +        @Test
> +        public void testCookieOrdering2HC4() throws Exception {
> +            URL url = new URL("http://order.now/sub1/moo.html";);
> +            man4.addCookieFromHeader("test1=moo1;", url);
> +            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
> +            man4.addCookieFromHeader("test2=moo3;path=/", url);
> +            assertEquals(3,man4.getCookieCount());
> +            assertEquals("/sub1",man4.get(0).getPath()); // Defaults to
> caller URL
> +            assertEquals("/sub1",man4.get(1).getPath());
> +            assertEquals("/",man4.get(2).getPath());
> +            String s = man4.getCookieHeaderForURL(url);
> +            assertNotNull(s);
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              List<org.apache.http.cookie.Cookie> c =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(), url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              assertEquals("/sub1",c.get(0).getPath());
>
>  
> assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
> @@ -476,7 +510,7 @@ public class TestCookieManager extends J
>          }
>
>          @Test
> -        public void testCookiePolicy2109() throws Exception {
> +        public void testCookiePolicy2109HC3() throws Exception {
>
>  man.setCookiePolicy(org.apache.http.client.params.CookiePolicy.RFC_2109);
>              man.testStarted(); // ensure policy is picked up
>              URL url = new URL("http://order.now/sub1/moo.html";);
> @@ -484,14 +518,41 @@ public class TestCookieManager extends J
>              man.addCookieFromHeader("test2=moo2;path=/sub1", url);
>              man.addCookieFromHeader("test2=moo3;path=/", url);
>              assertEquals(3,man.getCookieCount());
> -            assertEquals("/sub1",man.get(0).getPath());
> +            //assertEquals("/",man.get(0).getPath());
>              assertEquals("/sub1",man.get(1).getPath());
>              assertEquals("/",man.get(2).getPath());
>              String s = man.getCookieHeaderForURL(url);
>              assertNotNull(s);
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler)
> man.getCookieHandler();
> +            org.apache.commons.httpclient.Cookie[] c =
> +                    hc3CookieHandler.getCookiesForUrl(man.getCookies(),
> url,
> +                    CookieManager.ALLOW_VARIABLE_COOKIES);
> +            assertEquals("/sub1",c[0].getPath());
> +            assertFalse(c[0].isPathAttributeSpecified());
> +            assertEquals("/sub1",c[1].getPath());
> +            assertTrue(c[1].isPathAttributeSpecified());
> +            assertEquals("/",c[2].getPath());
> +            assertTrue(c[2].isPathAttributeSpecified());
> +            assertEquals("$Version=0; test1=moo1; test2=moo2;
> $Path=/sub1; test2=moo3; $Path=/", s);
> +        }
> +
> +        @Test
> +        public void testCookiePolicy2109HC4() throws Exception {
> +
> man4.setCookiePolicy(org.apache.http.client.params.CookiePolicy.RFC_2109);
> +            man4.testStarted(); // ensure policy is picked up
> +            URL url = new URL("http://order.now/sub1/moo.html";);
> +            man4.addCookieFromHeader("test1=moo1;", url);
> +            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
> +            man4.addCookieFromHeader("test2=moo3;path=/", url);
> +            assertEquals(3,man4.getCookieCount());
> +            assertEquals("/sub1",man4.get(0).getPath());
> +            assertEquals("/sub1",man4.get(1).getPath());
> +            assertEquals("/",man4.get(2).getPath());
> +            String s = man4.getCookieHeaderForURL(url);
> +            assertNotNull(s);
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              List<org.apache.http.cookie.Cookie> c =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(), url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              assertEquals("/sub1",c.get(0).getPath());
>
>  
> assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
> @@ -502,6 +563,7 @@ public class TestCookieManager extends J
>              assertEquals("$Version=0; test1=moo1; test2=moo2;
> $Path=/sub1; test2=moo3; $Path=/", s);
>          }
>
> +
>          @Test
>          public void testCookiePolicyNetscape() throws Exception {
>              man.setCookiePolicy(CookieSpecs.NETSCAPE);
> @@ -516,21 +578,21 @@ public class TestCookieManager extends J
>              assertEquals("/",man.get(2).getPath());
>              String s = man.getCookieHeaderForURL(url);
>              assertNotNull(s);
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            // Netscape only applies to HC3
> +            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler)
> man.getCookieHandler();
>
> -            List<org.apache.http.cookie.Cookie> c =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +            org.apache.commons.httpclient.Cookie[] c =
> +                    hc3CookieHandler.getCookiesForUrl(man.getCookies(),
> url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
> -            assertEquals("/sub1",c.get(0).getPath());
> -
> assertFalse(((BasicClientCookie)c.get(0)).containsAttribute(ClientCookie.PATH_ATTR));
> -            assertEquals("/sub1",c.get(1).getPath());
> -
> assertTrue(((BasicClientCookie)c.get(1)).containsAttribute(ClientCookie.PATH_ATTR));
> -            assertEquals("/",c.get(2).getPath());
> -
> assertTrue(((BasicClientCookie)c.get(2)).containsAttribute(ClientCookie.PATH_ATTR));
> +            assertEquals("/sub1",c[0].getPath());
> +            assertFalse(c[0].isPathAttributeSpecified());
> +            assertEquals("/sub1",c[1].getPath());
> +            assertTrue(c[1].isPathAttributeSpecified());
> +            assertEquals("/",c[2].getPath());
> +            assertTrue(c[2].isPathAttributeSpecified());
>              assertEquals("test1=moo1; test2=moo2; test2=moo3", s);
>          }
>
> -        @Test
>          public void testCookiePolicyIgnore() throws Exception {
>              man.setCookiePolicy(CookieSpecs.IGNORE_COOKIES);
>              man.testStarted(); // ensure policy is picked up
> @@ -551,14 +613,43 @@ public class TestCookieManager extends J
>              assertEquals("/sub1",man.get(1).getPath());
>              assertEquals("/",man.get(2).getPath());
>              String s = man.getCookieHeaderForURL(url);
> +            assertNull(s);
> +            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler)
> man.getCookieHandler();
> +            org.apache.commons.httpclient.Cookie[] c =
> +                    hc3CookieHandler.getCookiesForUrl(man.getCookies(),
> url,
> +                    CookieManager.ALLOW_VARIABLE_COOKIES);
> +            assertEquals(0,c.length); // Cookies again ignored
> +        }
> +
> +        @Test
> +        public void testCookiePolicyIgnoreHC4() throws Exception {
> +            man4.setCookiePolicy(CookieSpecs.IGNORE_COOKIES);
> +            man4.testStarted(); // ensure policy is picked up
> +            URL url = new URL("http://order.now/sub1/moo.html";);
> +            man4.addCookieFromHeader("test1=moo1;", url);
> +            man4.addCookieFromHeader("test2=moo2;path=/sub1", url);
> +            man4.addCookieFromHeader("test2=moo3;path=/", url);
> +            assertEquals(0,man4.getCookieCount());// Cookies are ignored
> +            Cookie cc;
> +            cc=new
> Cookie("test1","moo1",null,"/sub1",false,0,false,false);
> +            man4.add(cc);
> +            cc=new Cookie("test2","moo2",null,"/sub1",false,0,true,false);
> +            man4.add(cc);
> +            cc=new Cookie("test3","moo3",null,"/",false,0,false,false);
> +            man4.add(cc);
> +            assertEquals(3,man4.getCookieCount());
> +            assertEquals("/sub1",man4.get(0).getPath());
> +            assertEquals("/sub1",man4.get(1).getPath());
> +            assertEquals("/",man4.get(2).getPath());
> +            String s = man4.getCookieHeaderForURL(url);
>
>              // With ignore policy, s is null as no match will occur,
>              // getCookieHeaderForURL will return null
>              assertNull(s);
>
> -            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man.getCookieHandler();
> +            HC4CookieHandler cookieHandler = (HC4CookieHandler)
> man4.getCookieHandler();
>              List<org.apache.http.cookie.Cookie> c =
> -                    cookieHandler.getCookiesForUrl(man.getCookies(), url,
> +                    cookieHandler.getCookiesForUrl(man4.getCookies(), url,
>                      CookieManager.ALLOW_VARIABLE_COOKIES);
>              assertNotNull(c); // Make sure variable is used
>              // see https://issues.apache.org/jira/browse/HTTPCLIENT-1704
>
>
>


-- 
Cordialement.
Philippe Mouawad.

Reply via email to