From 308bdb5d1b3a675f134dd5c038b29bfa1a671d19 Mon Sep 17 00:00:00 2001 From: Thomas Wolf Date: Sun, 11 Aug 2019 22:37:48 +0200 Subject: [PATCH] Apache HTTP: run more tests Factor out the test parameterization to use both connection factories into a common super class and use it in more tests. This made HttpClientTests.testV2HttpSubsequentResponse() fail for Apache HTTP. The test used the pattern - create POST connection - setDoOutput(true) - connect() - write output stream - get & read input stream This pattern is never used in JGit, which actually calls connect() only in one case in LFS, and that's on a HEAD request. The above pattern works on JDK, but fails on Apache HTTP because with Apache HTTP a connect() actually executes the full request including writing the entity. To work with Apache HTTP, the pattern would need to be - create POST connection - setDoOutput(true) - write output stream - connect() - get & read input stream which is fine for both. JDK connects implicitly in getOutputStream() and treats the later explicit connect() as a no-op, and Apache works because the entity is written when connect() is called. Because JDK connects implicitly on getOutputStream(), the following pattern also works with JDK: - create POST connection - setDoOutput(true) - write output stream - get & read input stream Support this with Apache HTTP too: let getInputStream() execute the request if it wasn't executed already. Remove explicit connect() calls from test code, since JGit doesn't do those either. Change-Id: Ica038c00a7b8edcc01d5660d18e961146305b87f Signed-off-by: Thomas Wolf --- .../http/apache/HttpClientConnection.java | 1 + .../jgit/http/test/AdvertiseErrorTest.java | 9 +- .../http/test/AllFactoriesHttpTestCase.java | 91 +++++++++++++++++++ .../http/test/DumbClientDumbServerTest.java | 21 +---- .../http/test/DumbClientSmartServerTest.java | 21 +---- .../jgit/http/test/HookMessageTest.java | 9 +- .../jgit/http/test/HttpClientTests.java | 26 +++--- .../jgit/http/test/MeasurePackSizeTest.java | 9 +- .../http/test/SetAdditionalHeadersTest.java | 7 +- .../test/SmartClientSmartServerSslTest.java | 19 +--- .../http/test/SmartClientSmartServerTest.java | 21 +---- 11 files changed, 140 insertions(+), 94 deletions(-) create mode 100644 org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AllFactoriesHttpTestCase.java diff --git a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java index 4ac81a54d..f92c5df79 100644 --- a/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java +++ b/org.eclipse.jgit.http.apache/src/org/eclipse/jgit/transport/http/apache/HttpClientConnection.java @@ -345,6 +345,7 @@ public class HttpClientConnection implements HttpConnection { /** {@inheritDoc} */ @Override public InputStream getInputStream() throws IOException { + execute(); return resp.getEntity().getContent(); } diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java index ec9ced0f7..3f2b0e7f0 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AdvertiseErrorTest.java @@ -57,7 +57,6 @@ import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory; import org.eclipse.jgit.junit.TestRepository; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; @@ -69,16 +68,22 @@ import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.RemoteRefUpdate; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.junit.Before; import org.junit.Test; -public class AdvertiseErrorTest extends HttpTestCase { +public class AdvertiseErrorTest extends AllFactoriesHttpTestCase { + private Repository remoteRepository; private URIish remoteURI; + public AdvertiseErrorTest(HttpConnectionFactory cf) { + super(cf); + } + @Override @Before public void setUp() throws Exception { diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AllFactoriesHttpTestCase.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AllFactoriesHttpTestCase.java new file mode 100644 index 000000000..266194f65 --- /dev/null +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/AllFactoriesHttpTestCase.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2019, Thomas Wolf + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.eclipse.jgit.http.test; + +import java.util.Arrays; +import java.util.Collection; + +import org.eclipse.jgit.junit.http.HttpTestCase; +import org.eclipse.jgit.transport.HttpTransport; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; +import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; +import org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +/** + * Abstract test base class for running HTTP-related tests with all connection + * factories provided in JGit: the JDK {@link JDKHttpConnectionFactory} and the + * Apache HTTP {@link HttpClientConnectionFactory}. + */ +@RunWith(Parameterized.class) +public abstract class AllFactoriesHttpTestCase extends HttpTestCase { + + @Parameters + public static Collection data() { + // run all tests with both connection factories we have + return Arrays + .asList(new Object[][] { { new JDKHttpConnectionFactory() }, + { new HttpClientConnectionFactory() } }); + } + + protected AllFactoriesHttpTestCase(HttpConnectionFactory cf) { + HttpTransport.setConnectionFactory(cf); + } + + private static HttpConnectionFactory originalFactory; + + @BeforeClass + public static void saveConnectionFactory() { + originalFactory = HttpTransport.getConnectionFactory(); + } + + @AfterClass + public static void restoreConnectionFactory() { + HttpTransport.setConnectionFactory(originalFactory); + } + +} diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java index c1e55cb6f..e8f84ae9c 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java @@ -55,8 +55,6 @@ import static org.junit.Assert.fail; import java.io.File; import java.io.IOException; import java.net.URI; -import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -66,7 +64,6 @@ import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jgit.errors.NotSupportedException; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.Ref; @@ -79,16 +76,10 @@ import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.TransportHttp; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.http.HttpConnectionFactory; -import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; -import org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -@RunWith(Parameterized.class) -public class DumbClientDumbServerTest extends HttpTestCase { +public class DumbClientDumbServerTest extends AllFactoriesHttpTestCase { private Repository remoteRepository; private URIish remoteURI; @@ -97,16 +88,8 @@ public class DumbClientDumbServerTest extends HttpTestCase { private RevCommit A, B; - @Parameters - public static Collection data() { - // run all tests with both connection factories we have - return Arrays.asList(new Object[][] { - { new JDKHttpConnectionFactory() }, - { new HttpClientConnectionFactory() } }); - } - public DumbClientDumbServerTest(HttpConnectionFactory cf) { - HttpTransport.setConnectionFactory(cf); + super(cf); } @Override diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java index 2d22bafd8..5efc5a2ae 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java @@ -55,8 +55,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; -import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -66,7 +64,6 @@ import org.eclipse.jgit.errors.NotSupportedException; import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.Ref; @@ -79,16 +76,10 @@ import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.TransportHttp; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.http.HttpConnectionFactory; -import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; -import org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -@RunWith(Parameterized.class) -public class DumbClientSmartServerTest extends HttpTestCase { +public class DumbClientSmartServerTest extends AllFactoriesHttpTestCase { private Repository remoteRepository; private URIish remoteURI; @@ -97,16 +88,8 @@ public class DumbClientSmartServerTest extends HttpTestCase { private RevCommit A, B; - @Parameters - public static Collection data() { - // run all tests with both connection factories we have - return Arrays.asList(new Object[][] { - { new JDKHttpConnectionFactory() }, - { new HttpClientConnectionFactory() } }); - } - public DumbClientSmartServerTest(HttpConnectionFactory cf) { - HttpTransport.setConnectionFactory(cf); + super(cf); } @Override diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java index 49ff51a5b..5559c8cdf 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java @@ -62,7 +62,6 @@ import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; @@ -76,16 +75,22 @@ import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.RemoteRefUpdate; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.junit.Before; import org.junit.Test; -public class HookMessageTest extends HttpTestCase { +public class HookMessageTest extends AllFactoriesHttpTestCase { + private Repository remoteRepository; private URIish remoteURI; + public HookMessageTest(HttpConnectionFactory cf) { + super(cf); + } + @Override @Before public void setUp() throws Exception { diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java index 8ec2f51cf..7588a9509 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HttpClientTests.java @@ -71,7 +71,6 @@ import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; import org.eclipse.jgit.junit.http.AppServer; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.RefUpdate; @@ -79,17 +78,19 @@ import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.StoredConfig; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.FetchConnection; +import org.eclipse.jgit.transport.HttpTransport; import org.eclipse.jgit.transport.PacketLineIn; import org.eclipse.jgit.transport.PacketLineOut; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.transport.http.HttpConnection; -import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; import org.junit.Before; import org.junit.Test; -public class HttpClientTests extends HttpTestCase { +public class HttpClientTests extends AllFactoriesHttpTestCase { + private TestRepository remoteRepository; private URIish dumbAuthNoneURI; @@ -100,6 +101,10 @@ public class HttpClientTests extends HttpTestCase { private URIish smartAuthBasicURI; + public HttpClientTests(HttpConnectionFactory cf) { + super(cf); + } + @Override @Before public void setUp() throws Exception { @@ -353,12 +358,11 @@ public class HttpClientTests extends HttpTestCase { @Test public void testHttpClientWantsV2ButServerNotConfigured() throws Exception { - JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack"; - HttpConnection c = f.create(new URL(url)); + HttpConnection c = HttpTransport.getConnectionFactory() + .create(new URL(url)); c.setRequestMethod("GET"); c.setRequestProperty("Git-Protocol", "version=2"); - c.connect(); assertEquals(200, c.getResponseCode()); PacketLineIn pckIn = new PacketLineIn(c.getInputStream()); @@ -374,12 +378,11 @@ public class HttpClientTests extends HttpTestCase { remoteRepository.getRepository().getConfig().setInt( "protocol", null, "version", 2); - JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); String url = smartAuthNoneURI.toString() + "/info/refs?service=git-upload-pack"; - HttpConnection c = f.create(new URL(url)); + HttpConnection c = HttpTransport.getConnectionFactory() + .create(new URL(url)); c.setRequestMethod("GET"); c.setRequestProperty("Git-Protocol", "version=2"); - c.connect(); assertEquals(200, c.getResponseCode()); PacketLineIn pckIn = new PacketLineIn(c.getInputStream()); @@ -397,14 +400,13 @@ public class HttpClientTests extends HttpTestCase { remoteRepository.getRepository().getConfig().setInt( "protocol", null, "version", 2); - JDKHttpConnectionFactory f = new JDKHttpConnectionFactory(); String url = smartAuthNoneURI.toString() + "/git-upload-pack"; - HttpConnection c = f.create(new URL(url)); + HttpConnection c = HttpTransport.getConnectionFactory() + .create(new URL(url)); c.setRequestMethod("POST"); c.setRequestProperty("Content-Type", "application/x-git-upload-pack-request"); c.setRequestProperty("Git-Protocol", "version=2"); c.setDoOutput(true); - c.connect(); // Test ls-refs to verify that everything is connected // properly. Tests for other commands go in diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/MeasurePackSizeTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/MeasurePackSizeTest.java index 79df5a2ab..dd49e565b 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/MeasurePackSizeTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/MeasurePackSizeTest.java @@ -55,7 +55,6 @@ import org.eclipse.jgit.errors.RepositoryNotFoundException; import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.http.server.resolver.DefaultReceivePackFactory; import org.eclipse.jgit.junit.TestRepository; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.ObjectId; @@ -69,18 +68,24 @@ import org.eclipse.jgit.transport.ReceivePack; import org.eclipse.jgit.transport.RemoteRefUpdate; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; import org.eclipse.jgit.transport.resolver.ServiceNotAuthorizedException; import org.eclipse.jgit.transport.resolver.ServiceNotEnabledException; import org.junit.Before; import org.junit.Test; -public class MeasurePackSizeTest extends HttpTestCase { +public class MeasurePackSizeTest extends AllFactoriesHttpTestCase { + private Repository remoteRepository; private URIish remoteURI; long packSize = -1; + public MeasurePackSizeTest(HttpConnectionFactory cf) { + super(cf); + } + @Override @Before public void setUp() throws Exception { diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java index fbc54f387..f24768b6c 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SetAdditionalHeadersTest.java @@ -57,7 +57,6 @@ import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; @@ -65,10 +64,11 @@ import org.eclipse.jgit.transport.HttpTransport; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.TransportHttp; import org.eclipse.jgit.transport.URIish; +import org.eclipse.jgit.transport.http.HttpConnectionFactory; import org.junit.Before; import org.junit.Test; -public class SetAdditionalHeadersTest extends HttpTestCase { +public class SetAdditionalHeadersTest extends AllFactoriesHttpTestCase { private URIish remoteURI; @@ -76,6 +76,9 @@ public class SetAdditionalHeadersTest extends HttpTestCase { private RevCommit A, B; + public SetAdditionalHeadersTest(HttpConnectionFactory cf) { + super(cf); + } @Override @Before diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java index 30501dfd5..d6e9dbe92 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java @@ -49,8 +49,6 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.IOException; -import java.util.Arrays; -import java.util.Collection; import java.util.EnumSet; import java.util.List; @@ -73,7 +71,6 @@ import org.eclipse.jgit.http.server.GitServlet; import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.http.AccessEvent; import org.eclipse.jgit.junit.http.AppServer; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.NullProgressMonitor; import org.eclipse.jgit.lib.Repository; @@ -81,22 +78,18 @@ import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.transport.CredentialItem; import org.eclipse.jgit.transport.CredentialsProvider; -import org.eclipse.jgit.transport.HttpTransport; import org.eclipse.jgit.transport.Transport; import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.transport.http.HttpConnectionFactory; -import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; -import org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory; import org.eclipse.jgit.util.HttpSupport; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; @RunWith(Parameterized.class) -public class SmartClientSmartServerSslTest extends HttpTestCase { +public class SmartClientSmartServerSslTest extends AllFactoriesHttpTestCase { // We run these tests with a server on localhost with a self-signed // certificate. We don't do authentication tests here, so there's no need @@ -152,16 +145,8 @@ public class SmartClientSmartServerSslTest extends HttpTestCase { private RevCommit A, B; - @Parameters - public static Collection data() { - // run all tests with both connection factories we have - return Arrays.asList(new Object[][] { - { new JDKHttpConnectionFactory() }, - { new HttpClientConnectionFactory() } }); - } - public SmartClientSmartServerSslTest(HttpConnectionFactory cf) { - HttpTransport.setConnectionFactory(cf); + super(cf); } @Override diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java index 3aac85233..3401e264c 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java @@ -59,8 +59,6 @@ import java.io.PrintWriter; import java.net.URI; import java.net.URISyntaxException; import java.text.MessageFormat; -import java.util.Arrays; -import java.util.Collection; import java.util.Collections; import java.util.EnumSet; import java.util.List; @@ -93,7 +91,6 @@ import org.eclipse.jgit.junit.TestRepository; import org.eclipse.jgit.junit.TestRng; import org.eclipse.jgit.junit.http.AccessEvent; import org.eclipse.jgit.junit.http.AppServer; -import org.eclipse.jgit.junit.http.HttpTestCase; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.NullProgressMonitor; @@ -122,8 +119,6 @@ import org.eclipse.jgit.transport.URIish; import org.eclipse.jgit.transport.UploadPack; import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider; import org.eclipse.jgit.transport.http.HttpConnectionFactory; -import org.eclipse.jgit.transport.http.JDKHttpConnectionFactory; -import org.eclipse.jgit.transport.http.apache.HttpClientConnectionFactory; import org.eclipse.jgit.util.HttpSupport; import org.eclipse.jgit.util.SystemReader; import org.hamcrest.Matchers; @@ -131,12 +126,8 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -@RunWith(Parameterized.class) -public class SmartClientSmartServerTest extends HttpTestCase { +public class SmartClientSmartServerTest extends AllFactoriesHttpTestCase { private static final String HDR_TRANSFER_ENCODING = "Transfer-Encoding"; @Rule @@ -163,16 +154,8 @@ public class SmartClientSmartServerTest extends HttpTestCase { private RevCommit A, B, unreachableCommit; - @Parameters - public static Collection data() { - // run all tests with both connection factories we have - return Arrays.asList(new Object[][] { - { new JDKHttpConnectionFactory() }, - { new HttpClientConnectionFactory() } }); - } - public SmartClientSmartServerTest(HttpConnectionFactory cf) { - HttpTransport.setConnectionFactory(cf); + super(cf); } @Override