/* * Copyright (C) 2020, Thomas Wolf and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.http.test; import java.util.ArrayList; import java.util.Collection; import java.util.List; 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.Ignore; 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 and with both protocol V0 and V2. */ @Ignore @RunWith(Parameterized.class) public abstract class AllProtocolsHttpTestCase extends HttpTestCase { protected static class TestParameters { public final HttpConnectionFactory factory; public final boolean enableProtocolV2; public TestParameters(HttpConnectionFactory factory, boolean enableProtocolV2) { this.factory = factory; this.enableProtocolV2 = enableProtocolV2; } @Override public String toString() { return factory.toString() + " protocol " + (enableProtocolV2 ? "V2" : "V0"); } } @Parameters(name = "{0}") public static Collection data() { // run all tests with both connection factories we have HttpConnectionFactory[] factories = new HttpConnectionFactory[] { new JDKHttpConnectionFactory() { @Override public String toString() { return this.getClass().getSuperclass().getName(); } }, new HttpClientConnectionFactory() { @Override public String toString() { return this.getClass().getSuperclass().getName(); } } }; List result = new ArrayList<>(); for (HttpConnectionFactory factory : factories) { result.add(new TestParameters(factory, false)); result.add(new TestParameters(factory, true)); } return result; } protected final boolean enableProtocolV2; protected AllProtocolsHttpTestCase(TestParameters params) { HttpTransport.setConnectionFactory(params.factory); enableProtocolV2 = params.enableProtocolV2; } private static HttpConnectionFactory originalFactory; @BeforeClass public static void saveConnectionFactory() { originalFactory = HttpTransport.getConnectionFactory(); } @AfterClass public static void restoreConnectionFactory() { HttpTransport.setConnectionFactory(originalFactory); } }