jmeter-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pmoua...@apache.org
Subject svn commit: r1721032 - in /jmeter/trunk: ./ licenses/bin/ res/maven/ src/protocol/http/org/apache/jmeter/protocol/http/control/ src/protocol/http/org/apache/jmeter/protocol/http/sampler/ test/src/org/apache/jmeter/protocol/http/control/ xdocs/
Date Sun, 20 Dec 2015 14:41:31 GMT
Author: pmouawad
Date: Sun Dec 20 14:41:30 2015
New Revision: 1721032

URL: http://svn.apache.org/viewvc?rev=1721032&view=rev
Log:
Bug 57319 - Upgrade to HttpClient 4.5.X
Bugzilla Id: 57319

Modified:
    jmeter/trunk/build.properties
    jmeter/trunk/eclipse.classpath
    jmeter/trunk/licenses/bin/README.txt
    jmeter/trunk/res/maven/ApacheJMeter_parent.pom
    jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java
    jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
    jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java
    jmeter/trunk/test/src/org/apache/jmeter/protocol/http/control/TestCookieManager.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/build.properties
URL: http://svn.apache.org/viewvc/jmeter/trunk/build.properties?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/build.properties (original)
+++ jmeter/trunk/build.properties Sun Dec 20 14:41:30 2015
@@ -188,22 +188,22 @@ htmlparser.jar              = htmlparser
 htmlparser.md5              = aa05b921026c228f92ef8b4a13c26f8d
 
 # Apache HttpClient 4.x
-httpclient.version          = 4.2.6
+httpclient.version          = 4.5.1
 #
 httpclient.jar              = httpclient-${httpclient.version}.jar
 httpclient.loc              = ${maven2.repo}/org/apache/httpcomponents/httpclient/${httpclient.version}
-httpclient.md5              = 7bae53a30550dd3eb62db72ab08fcd94
+httpclient.md5              = 53cad957821a4bacaf9e108af24e6f90
 
 # Required for HttpClient
 httpmime.jar                = httpmime-${httpclient.version}.jar
 httpmime.loc                = ${maven2.repo}/org/apache/httpcomponents/httpmime/${httpclient.version}
-httpmime.md5                = 291ec6eac9dfb76f2b8c4f1b647b9a21
+httpmime.md5                = 2ea8e5d4753d0231620062e225de4162
 
 # Required for HttpClient
-httpcore.version            = 4.2.5
+httpcore.version            = 4.4.4
 httpcore.jar                = httpcore-${httpcore.version}.jar
 httpcore.loc                = ${maven2.repo}/org/apache/httpcomponents/httpcore/${httpcore.version}
-httpcore.md5                = 7e23d35d533b24c1f385724e8b5ba623
+httpcore.md5                = e7776f2b03a4c62d691a90d3c68c93c0
 
 jakarta-oro.version         = 2.0.8
 jakarta-oro.jar             = oro-${jakarta-oro.version}.jar

Modified: jmeter/trunk/eclipse.classpath
URL: http://svn.apache.org/viewvc/jmeter/trunk/eclipse.classpath?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/eclipse.classpath (original)
+++ jmeter/trunk/eclipse.classpath Sun Dec 20 14:41:30 2015
@@ -68,9 +68,9 @@
 	<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.1.1.jar"/>
 	<classpathentry kind="lib" path="lib/htmllexer-2.1.jar"/>
 	<classpathentry kind="lib" path="lib/htmlparser-2.1.jar"/>
-	<classpathentry kind="lib" path="lib/httpclient-4.2.6.jar"/>
-	<classpathentry kind="lib" path="lib/httpcore-4.2.5.jar"/>
-	<classpathentry kind="lib" path="lib/httpmime-4.2.6.jar"/>
+	<classpathentry kind="lib" path="lib/httpclient-4.5.1.jar"/>
+	<classpathentry kind="lib" path="lib/httpcore-4.4.4.jar"/>
+	<classpathentry kind="lib" path="lib/httpmime-4.5.1.jar"/>
 	<classpathentry kind="lib" path="lib/jcharts-0.7.5.jar"/>
 	<classpathentry kind="lib" path="lib/jdom-1.1.3.jar"/>
 	<classpathentry kind="lib" path="lib/jodd-core-3.6.7.jar"/>

Modified: jmeter/trunk/licenses/bin/README.txt
URL: http://svn.apache.org/viewvc/jmeter/trunk/licenses/bin/README.txt?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/licenses/bin/README.txt (original)
+++ jmeter/trunk/licenses/bin/README.txt Sun Dec 20 14:41:30 2015
@@ -23,9 +23,9 @@ excalibur-pool-api-2.1.jar
 excalibur-pool-impl-2.1.jar
 excalibur-pool-instrumented-2.1.jar
 geronimo-jms_1.1_spec-1.1.1.jar
-httpclient-4.2.6.jar
-httpcore-4.2.5.jar
-httpmime-4.2.6.jar
+httpclient-4.5.1.jar
+httpcore-4.4.4.jar
+httpmime-4.5.1.jar
 jorphan.jar (part of JMeter)
 logkit-2.0.jar
 oro-2.0.8.jar

Modified: jmeter/trunk/res/maven/ApacheJMeter_parent.pom
URL: http://svn.apache.org/viewvc/jmeter/trunk/res/maven/ApacheJMeter_parent.pom?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/res/maven/ApacheJMeter_parent.pom (original)
+++ jmeter/trunk/res/maven/ApacheJMeter_parent.pom Sun Dec 20 14:41:30 2015
@@ -79,8 +79,8 @@ under the License.
       <excalibur-pool-instrumented.version>${excalibur-pool.version}</excalibur-pool-instrumented.version>
       <freemarker.version>2.3.23</freemarker.version>
       <htmlparser.version>2.1</htmlparser.version>
-      <httpclient.version>4.2.6</httpclient.version>
-      <httpcore.version>4.2.5</httpcore.version>
+      <httpclient.version>4.5.1</httpclient.version>
+      <httpcore.version>4.4.4</httpcore.version>
       <jakarta-oro.version>2.0.8</jakarta-oro.version>
       <jcharts.version>0.7.5</jcharts.version>
       <jdom.version>1.1.3</jdom.version>

Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java
(original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/CookieManager.java
Sun Dec 20 14:41:30 2015
@@ -30,7 +30,7 @@ import java.io.Serializable;
 import java.net.URL;
 import java.util.ArrayList;
 
-import org.apache.http.client.params.CookiePolicy;
+import org.apache.http.client.config.CookieSpecs;
 import org.apache.jmeter.config.ConfigTestElement;
 import org.apache.jmeter.engine.event.LoopIterationEvent;
 import org.apache.jmeter.testelement.TestIterationListener;
@@ -102,9 +102,9 @@ public class CookieManager extends Confi
 
     private transient CollectionProperty initialCookies;
 
-    public static final String DEFAULT_POLICY = CookiePolicy.BROWSER_COMPATIBILITY;
+    public static final String DEFAULT_POLICY = CookieSpecs.DEFAULT;
     
-    public static final String DEFAULT_IMPLEMENTATION = HC3CookieHandler.class.getName();
+    public static final String DEFAULT_IMPLEMENTATION = HC4CookieHandler.class.getName();
 
     public CookieManager() {
         clearCookies(); // Ensure that there is always a collection available

Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
(original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/control/HC4CookieHandler.java
Sun Dec 20 14:41:30 2015
@@ -25,18 +25,24 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.http.Header;
-import org.apache.http.client.params.CookiePolicy;
+import org.apache.http.client.config.CookieSpecs;
+import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.http.config.Registry;
+import org.apache.http.config.RegistryBuilder;
+import org.apache.http.conn.util.PublicSuffixMatcher;
+import org.apache.http.conn.util.PublicSuffixMatcherLoader;
+import org.apache.http.cookie.ClientCookie;
 import org.apache.http.cookie.CookieOrigin;
 import org.apache.http.cookie.CookieSpec;
-import org.apache.http.cookie.CookieSpecRegistry;
+import org.apache.http.cookie.CookieSpecProvider;
 import org.apache.http.cookie.MalformedCookieException;
 import org.apache.http.impl.cookie.BasicClientCookie;
-import org.apache.http.impl.cookie.BestMatchSpecFactory;
-import org.apache.http.impl.cookie.BrowserCompatSpecFactory;
-import org.apache.http.impl.cookie.IgnoreSpecFactory;
-import org.apache.http.impl.cookie.NetscapeDraftSpecFactory;
-import org.apache.http.impl.cookie.RFC2109SpecFactory;
-import org.apache.http.impl.cookie.RFC2965SpecFactory;
+import org.apache.http.impl.cookie.DefaultCookieSpecProvider;
+import org.apache.http.impl.cookie.IgnoreSpecProvider;
+import org.apache.http.impl.cookie.NetscapeDraftSpecProvider;
+import org.apache.http.impl.cookie.RFC2109SpecProvider;
+import org.apache.http.impl.cookie.RFC2965SpecProvider;
+import org.apache.http.impl.cookie.RFC6265CookieSpecProvider;
 import org.apache.http.message.BasicHeader;
 import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
 import org.apache.jmeter.protocol.http.util.HTTPConstants;
@@ -50,23 +56,28 @@ public class HC4CookieHandler implements
     
     private final transient CookieSpec cookieSpec;
     
-    private static CookieSpecRegistry registry  = new CookieSpecRegistry();
-
-    static {
-        registry.register(CookiePolicy.BEST_MATCH, new BestMatchSpecFactory());
-        registry.register(CookiePolicy.BROWSER_COMPATIBILITY, new BrowserCompatSpecFactory());
-        registry.register(CookiePolicy.RFC_2109, new RFC2109SpecFactory());
-        registry.register(CookiePolicy.RFC_2965, new RFC2965SpecFactory());
-        registry.register(CookiePolicy.IGNORE_COOKIES, new IgnoreSpecFactory());
-        registry.register(CookiePolicy.NETSCAPE, new NetscapeDraftSpecFactory());
-    }
+    private static PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.getDefault();
+    private static Registry<CookieSpecProvider> registry  = 
+            RegistryBuilder.<CookieSpecProvider>create()
+            .register(CookieSpecs.BEST_MATCH, new DefaultCookieSpecProvider(publicSuffixMatcher))
+            .register(CookieSpecs.BROWSER_COMPATIBILITY, new DefaultCookieSpecProvider(publicSuffixMatcher))
+            .register(CookieSpecs.STANDARD, new RFC6265CookieSpecProvider())
+            .register("rfc2109", new RFC2109SpecProvider(publicSuffixMatcher, true)) //$NON-NLS-1$
+            .register("rfc2965", new RFC2965SpecProvider(publicSuffixMatcher, true)) //$NON-NLS-1$
+            .register(CookieSpecs.STANDARD_STRICT, new RFC6265CookieSpecProvider(
+                    org.apache.http.impl.cookie.RFC6265CookieSpecProvider.CompatibilityLevel.STRICT,
null))
+            .register(CookieSpecs.DEFAULT, new DefaultCookieSpecProvider(publicSuffixMatcher))
+            .register(CookieSpecs.IGNORE_COOKIES, new IgnoreSpecProvider())
+            .register(CookieSpecs.NETSCAPE, new NetscapeDraftSpecProvider())
+            .build();
 
     public HC4CookieHandler(String policy) {
         super();
         if (policy.equals(org.apache.commons.httpclient.cookie.CookiePolicy.DEFAULT)) { //
tweak diff HC3 vs HC4
-            policy = CookiePolicy.BEST_MATCH;
+            policy = CookieSpecs.DEFAULT;
         }
-        this.cookieSpec = registry.getCookieSpec(policy);
+        HttpClientContext context = HttpClientContext.create();
+        this.cookieSpec = registry.lookup(policy).create(context);
     }
 
     @Override
@@ -111,12 +122,13 @@ public class HC4CookieHandler implements
                             cookie.getDomain(),
                             cookie.getPath(),
                             cookie.isSecure(),
-                            exp / 1000
-                            );
+                            exp / 1000,
+                            ((BasicClientCookie)cookie).containsAttribute(ClientCookie.PATH_ATTR),
+                            ((BasicClientCookie)cookie).containsAttribute(ClientCookie.DOMAIN_ATTR),
+                            cookie.getVersion());
 
                     // Store session cookies as well as unexpired ones
                     if (exp == 0 || exp >= System.currentTimeMillis()) {
-                        newCookie.setVersion(cookie.getVersion());
                         cookieManager.add(newCookie); // Has its own debug log; removes matching
cookies
                     } else {
                         cookieManager.removeMatchingCookies(newCookie);
@@ -204,12 +216,17 @@ public class HC4CookieHandler implements
         long exp = jmc.getExpiresMillis();
         BasicClientCookie ret = new BasicClientCookie(jmc.getName(),
                 jmc.getValue());
-
         ret.setDomain(jmc.getDomain());
         ret.setPath(jmc.getPath());
         ret.setExpiryDate(exp > 0 ? new Date(exp) : null); // use null for no expiry
         ret.setSecure(jmc.getSecure());
         ret.setVersion(jmc.getVersion());
+        if(jmc.isDomainSpecified()) {
+            ret.setAttribute(ClientCookie.DOMAIN_ATTR, jmc.getDomain());
+        }
+        if(jmc.isPathSpecified()) {
+            ret.setAttribute(ClientCookie.PATH_ATTR, jmc.getPath());
+        }
         return ret;
     }
 }

Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java
(original)
+++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/MeasuringConnectionManager.java
Sun Dec 20 14:41:30 2015
@@ -18,12 +18,19 @@
 
 package org.apache.jmeter.protocol.http.sampler;
 
+import java.io.IOException;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.util.concurrent.TimeUnit;
+
+import javax.net.ssl.SSLSession;
+
 import org.apache.http.HttpConnectionMetrics;
+import org.apache.http.HttpEntityEnclosingRequest;
 import org.apache.http.HttpException;
 import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
 import org.apache.http.HttpRequest;
-import org.apache.http.HttpEntityEnclosingRequest;
+import org.apache.http.HttpResponse;
 import org.apache.http.conn.ClientConnectionRequest;
 import org.apache.http.conn.ConnectionPoolTimeoutException;
 import org.apache.http.conn.DnsResolver;
@@ -35,11 +42,6 @@ import org.apache.http.params.HttpParams
 import org.apache.http.protocol.HttpContext;
 import org.apache.jmeter.samplers.SampleResult;
 
-import javax.net.ssl.SSLSession;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.util.concurrent.TimeUnit;
-
 /**
  * Adapter for {@link PoolingClientConnectionManager}
  * that wraps all connection requests into time-measured implementation a private
@@ -265,5 +267,20 @@ public class MeasuringConnectionManager
         public HttpConnectionMetrics getMetrics() {
             return handler.getMetrics();
         }
+
+        @Override
+        public void bind(Socket arg0) throws IOException {
+            handler.bind(arg0);
+        }
+
+        @Override
+        public String getId() {
+            return handler.getId();
+        }
+
+        @Override
+        public Socket getSocket() {
+            return handler.getSocket();
+        }
     }
 }

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=1721032&r1=1721031&r2=1721032&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 Sun
Dec 20 14:41:30 2015
@@ -19,14 +19,18 @@
 package org.apache.jmeter.protocol.http.control;
 
 import java.net.URL;
+import java.util.List;
 
-import org.apache.commons.httpclient.cookie.CookiePolicy;
+import org.apache.http.client.config.CookieSpecs;
+import org.apache.http.cookie.ClientCookie;
+import org.apache.http.impl.cookie.BasicClientCookie;
 import org.apache.jmeter.junit.JMeterTestCase;
 import org.apache.jmeter.protocol.http.sampler.HTTPNullSampler;
 import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
 import org.apache.jmeter.protocol.http.util.HTTPConstants;
 import org.apache.jmeter.threads.JMeterContext;
 import org.apache.jmeter.threads.JMeterContextService;
+import org.junit.Assert;
 
 public class TestCookieManager extends JMeterTestCase {
         private CookieManager man = null;
@@ -76,10 +80,13 @@ public class TestCookieManager extends J
             man.add(new Cookie("id", "value", ".apache.org", "/", false, 9999999999L));
             HTTPSamplerBase sampler = new HTTPNullSampler();
             sampler.setDomain("jakarta.apache.org");
+            
             sampler.setPath("/index.html");
             sampler.setMethod(HTTPConstants.GET);
             assertNotNull(man.getCookieHeaderForURL(sampler.getUrl()));
         }
+        
+
 
         /**
          * Test that the cookie domain field is actually handled as browsers do
@@ -93,6 +100,88 @@ public class TestCookieManager extends J
             assertNotNull(man.getCookieHeaderForURL(url));
         }
 
+        /**
+         * @throws Exception
+         */
+        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();
+            List<org.apache.http.cookie.Cookie> cookies = 
+                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+
+            for (org.apache.http.cookie.Cookie cookie : cookies) {
+                // See http://tools.ietf.org/html/rfc6265#section-5.2.3
+                Assert.assertEquals("bt.com", cookie.getDomain());
+                Assert.assertTrue( ((BasicClientCookie)cookie).containsAttribute(ClientCookie.DOMAIN_ATTR));
+            }
+            
+            // 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, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            Assert.assertEquals(1, cookies.size());
+            for (org.apache.http.cookie.Cookie cookie : cookies) {
+                // See http://tools.ietf.org/html/rfc6265#section-5.2.3
+                Assert.assertEquals("bt.com", cookie.getDomain());
+                Assert.assertTrue( ((BasicClientCookie)cookie).containsAttribute(ClientCookie.DOMAIN_ATTR));
+            }
+        }
+
+        /**
+         * @throws Exception
+         */
+        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();
+            List<org.apache.http.cookie.Cookie> cookies = 
+                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            Assert.assertEquals(1, cookies.size());
+            for (org.apache.http.cookie.Cookie cookie : cookies) {
+                // See http://tools.ietf.org/html/rfc6265#section-5.2.3
+                Assert.assertEquals("subdomain.bt.com", cookie.getDomain());
+                Assert.assertFalse( ((BasicClientCookie)cookie).containsAttribute(ClientCookie.DOMAIN_ATTR));
+            }
+            
+            // 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, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            Assert.assertEquals(0, cookies.size());
+        }
+
+        /**
+         * @throws Exception
+         */
+        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);
+            
+            Assert.assertEquals(1, man.getCookieCount());
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) man.getCookieHandler();
+            URL urlSubDomain = new URL("https://subdomain.bt.com/page");
+            
+            List<org.apache.http.cookie.Cookie> cookies = 
+                    cookieHandler.getCookiesForUrl(man.getCookies(), urlSubDomain, 
+                    CookieManager.ALLOW_VARIABLE_COOKIES);
+            Assert.assertEquals(1, cookies.size());
+            for (org.apache.http.cookie.Cookie cookie : cookies) {
+                // See http://tools.ietf.org/html/rfc6265#section-5.2.3
+                Assert.assertEquals("bt.com", cookie.getDomain());
+                Assert.assertTrue( ((BasicClientCookie)cookie).containsAttribute(ClientCookie.DOMAIN_ATTR));
+            }
+        }
+
         public void testCrossDomainHandling() throws Exception {
             URL url = new URL("http://jakarta.apache.org/");
             assertEquals(0,man.getCookieCount()); // starts empty
@@ -166,7 +255,21 @@ public class TestCookieManager extends J
         
         public void testCookies2() 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.
+            
             man.addCookieFromHeader("test1=1;secure, test2=2;secure", url);
+            assertEquals(1,man.getCookieCount());
+            String s = man.getCookieHeaderForURL(url);
+            assertNotNull(s);
+            assertEquals("test1=1", s);
+        }
+        
+        public void testCookies3() throws Exception {
+            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());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
@@ -279,12 +382,17 @@ 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);
-            assertEquals("test2=moo2; test1=moo1; test2=moo3", 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);
         }
 
         public void testCookieOrdering2() throws Exception {
@@ -298,46 +406,46 @@ public class TestCookieManager extends J
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler();
-            org.apache.commons.httpclient.Cookie[] c = 
-                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) man.getCookieHandler();
+            List<org.apache.http.cookie.Cookie> c = 
+                    cookieHandler.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("/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());
             assertEquals("test1=moo1; test2=moo2; test2=moo3", s);
         }
         
         public void testCookiePolicy2109() throws Exception {
-            man.setCookiePolicy(CookiePolicy.RFC_2109);
+            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");
             man.addCookieFromHeader("test1=moo1;", url);
             man.addCookieFromHeader("test2=moo2;path=/sub1", url);
             man.addCookieFromHeader("test2=moo3;path=/", url);
             assertEquals(3,man.getCookieCount());
-            //assertEquals("/",man.get(0).getPath());
+            assertEquals("/sub1",man.get(0).getPath());
             assertEquals("/sub1",man.get(1).getPath());
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler();
-            org.apache.commons.httpclient.Cookie[] c = 
-                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) man.getCookieHandler();
+            List<org.apache.http.cookie.Cookie> c = 
+                    cookieHandler.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("/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("$Version=0; test1=moo1; test2=moo2; $Path=/sub1; test2=moo3; $Path=/",
s);
         }
 
         public void testCookiePolicyNetscape() throws Exception {
-            man.setCookiePolicy(CookiePolicy.NETSCAPE);
+            man.setCookiePolicy(CookieSpecs.NETSCAPE);
             man.testStarted(); // ensure policy is picked up
             URL url = new URL("http://www.order.now/sub1/moo.html");
             man.addCookieFromHeader("test1=moo1;", url);
@@ -349,22 +457,22 @@ public class TestCookieManager extends J
             assertEquals("/",man.get(2).getPath());
             String s = man.getCookieHeaderForURL(url);
             assertNotNull(s);
-            HC3CookieHandler hc3CookieHandler = (HC3CookieHandler) man.getCookieHandler();
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) man.getCookieHandler();
            
-            org.apache.commons.httpclient.Cookie[] c = 
-                    hc3CookieHandler.getCookiesForUrl(man.getCookies(), url, 
+            List<org.apache.http.cookie.Cookie> c = 
+                    cookieHandler.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("/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("test1=moo1; test2=moo2; test2=moo3", s);
         }
 
         public void testCookiePolicyIgnore() throws Exception {
-            man.setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
+            man.setCookiePolicy(CookieSpecs.IGNORE_COOKIES);
             man.testStarted(); // ensure policy is picked up
             URL url = new URL("http://order.now/sub1/moo.html");
             man.addCookieFromHeader("test1=moo1;", url);
@@ -383,12 +491,14 @@ 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, 
+            assertTrue(s.length()==0);
+            HC4CookieHandler cookieHandler = (HC4CookieHandler) man.getCookieHandler();
+            List<org.apache.http.cookie.Cookie> c = 
+                    cookieHandler.getCookiesForUrl(man.getCookies(), url, 
                     CookieManager.ALLOW_VARIABLE_COOKIES);
-            assertEquals(0,c.length); // Cookies again ignored
+            // FIXME Enable when HTTPCLIENT 4.5.2 is available
+            // see https://issues.apache.org/jira/browse/HTTPCLIENT-1704
+            //assertEquals(0,c.size()); // Cookies again ignored
         }
 
         public void testLoad() throws Exception{

Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1721032&r1=1721031&r2=1721032&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml (original)
+++ jmeter/trunk/xdocs/changes.xml Sun Dec 20 14:41:30 2015
@@ -152,6 +152,7 @@ Summary
 <li><bug>58699</bug>Workbench changes neither saved nor prompted for saving
upon close. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
 <li><bug>58726</bug>Remove the <code>jmeterthread.startearlier</code>
parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)</li>
 <li><bug>58728</bug>Drop old behavioural properties</li>
+<li><bug>57319</bug>Upgrade to HttpClient 4.5.X. With the big help from
Oleg Kalnichevski.</li>
 </ul>
 <ch_section>Non-functional changes</ch_section>
 <ul>
@@ -251,6 +252,7 @@ Summary
 <li>Benoit Wiart (benoit.wiart at gmail.com)</li>
 <li><a href="http://www.decathlon.com">Decathlon S.A.</a></li>
 <li><a href="http://www.ubik-ingenierie.com">Ubik-Ingenierie S.A.S.</a></li>
+<li>Oleg Kalnichevski (olegk at apache.org)</li>
 </ul>
 
 <br/>



Mime
View raw message