blob: c6931ad5b9ae0eb65d60619759781a72ea19d084 [file] [log] [blame]
/*
* Copyright (C) 2020, Thomas Wolf <thomas.wolf@paranor.ch> 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<TestParameters> 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<TestParameters> 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);
}
}