Skip to content

Commit f516724

Browse files
committed
Implemented tests for HTTP/2.
1 parent 7cd2b97 commit f516724

File tree

5 files changed

+73
-7
lines changed

5 files changed

+73
-7
lines changed

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,18 @@
274274
<version>${jetty-version}</version>
275275
<scope>test</scope>
276276
</dependency>
277+
<dependency>
278+
<groupId>org.eclipse.jetty.http2</groupId>
279+
<artifactId>http2-server</artifactId>
280+
<version>${jetty-version}</version>
281+
<scope>test</scope>
282+
</dependency>
283+
<dependency>
284+
<groupId>org.eclipse.jetty.http2</groupId>
285+
<artifactId>http2-http-client-transport</artifactId>
286+
<version>${jetty-version}</version>
287+
<scope>test</scope>
288+
</dependency>
277289
<dependency>
278290
<groupId>org.apache.logging.log4j</groupId>
279291
<artifactId>log4j-slf4j-impl</artifactId>

src/test/java/org/eclipse/jetty/reactive/client/AbstractTest.java

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,37 +18,80 @@
1818
import java.lang.reflect.Method;
1919

2020
import org.eclipse.jetty.client.HttpClient;
21+
import org.eclipse.jetty.client.HttpClientTransport;
22+
import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP;
23+
import org.eclipse.jetty.http2.client.HTTP2Client;
24+
import org.eclipse.jetty.http2.client.http.HttpClientTransportOverHTTP2;
25+
import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory;
26+
import org.eclipse.jetty.server.ConnectionFactory;
2127
import org.eclipse.jetty.server.Handler;
28+
import org.eclipse.jetty.server.HttpConfiguration;
29+
import org.eclipse.jetty.server.HttpConnectionFactory;
2230
import org.eclipse.jetty.server.Server;
2331
import org.eclipse.jetty.server.ServerConnector;
2432
import org.eclipse.jetty.util.thread.QueuedThreadPool;
2533
import org.testng.annotations.AfterMethod;
2634
import org.testng.annotations.BeforeMethod;
35+
import org.testng.annotations.DataProvider;
2736

2837
public class AbstractTest {
38+
@DataProvider(name = "protocols")
39+
public static Object[][] protocols() {
40+
return new Object[][]{
41+
new Object[]{"http"},
42+
new Object[]{"h2c"}
43+
};
44+
}
45+
46+
private final HttpConfiguration httpConfiguration = new HttpConfiguration();
47+
private final String protocol;
2948
private HttpClient httpClient;
3049
private Server server;
3150
private ServerConnector connector;
3251

52+
public AbstractTest(String protocol) {
53+
this.protocol = protocol;
54+
}
55+
56+
@BeforeMethod
57+
public void printTestName(Method method) {
58+
System.err.printf("Running %s.%s() [%s]%n", getClass().getName(), method.getName(), protocol);
59+
}
60+
3361
public void prepare(Handler handler) throws Exception {
3462
QueuedThreadPool serverThreads = new QueuedThreadPool();
3563
serverThreads.setName("server");
3664
server = new Server(serverThreads);
37-
connector = new ServerConnector(server);
65+
connector = new ServerConnector(server, createServerConnectionFactory(protocol));
3866
server.addConnector(connector);
3967
server.setHandler(handler);
4068
server.start();
4169

4270
QueuedThreadPool clientThreads = new QueuedThreadPool();
4371
clientThreads.setName("client");
44-
httpClient = new HttpClient();
72+
httpClient = new HttpClient(createClientTransport(protocol), null);
4573
httpClient.setExecutor(clientThreads);
4674
httpClient.start();
4775
}
4876

49-
@BeforeMethod
50-
public void printTestName(Method method) {
51-
System.err.printf("Running %s.%s()%n", getClass().getName(), method.getName());
77+
private ConnectionFactory createServerConnectionFactory(String protocol) {
78+
switch (protocol) {
79+
case "h2c":
80+
return new HTTP2CServerConnectionFactory(httpConfiguration);
81+
default:
82+
return new HttpConnectionFactory(httpConfiguration);
83+
}
84+
}
85+
86+
private HttpClientTransport createClientTransport(String protocol) {
87+
switch (protocol) {
88+
case "h2c":
89+
HTTP2Client http2Client = new HTTP2Client();
90+
http2Client.setSelectors(1);
91+
return new HttpClientTransportOverHTTP2(http2Client);
92+
default:
93+
return new HttpClientTransportOverHTTP(1);
94+
}
5295
}
5396

5497
@AfterMethod

src/test/java/org/eclipse/jetty/reactive/client/ReactiveTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@
2424
import org.reactivestreams.Subscriber;
2525
import org.reactivestreams.Subscription;
2626
import org.testng.Assert;
27+
import org.testng.annotations.Factory;
2728
import org.testng.annotations.Test;
2829

2930
public class ReactiveTest extends AbstractTest {
31+
@Factory(dataProvider = "protocols", dataProviderClass = AbstractTest.class)
32+
public ReactiveTest(String protocol) {
33+
super(protocol);
34+
}
35+
3036
@Test
3137
public void simpleReactiveUsage() throws Exception {
3238
prepare(new EmptyHandler());

src/test/java/org/eclipse/jetty/reactive/client/RxJava2Test.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,15 @@
4646
import org.reactivestreams.Subscriber;
4747
import org.reactivestreams.Subscription;
4848
import org.testng.Assert;
49+
import org.testng.annotations.Factory;
4950
import org.testng.annotations.Test;
5051

5152
public class RxJava2Test extends AbstractTest {
53+
@Factory(dataProvider = "protocols", dataProviderClass = AbstractTest.class)
54+
public RxJava2Test(String protocol) {
55+
super(protocol);
56+
}
57+
5258
@Test
5359
public void simpleUsage() throws Exception {
5460
prepare(new EmptyHandler());

src/test/java/org/eclipse/jetty/reactive/client/internal/SingleProcessorTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,12 @@
2323
import java.util.stream.IntStream;
2424

2525
import io.reactivex.Flowable;
26-
import org.eclipse.jetty.reactive.client.AbstractTest;
2726
import org.reactivestreams.Subscriber;
2827
import org.reactivestreams.Subscription;
2928
import org.testng.Assert;
3029
import org.testng.annotations.Test;
3130

32-
public class SingleProcessorTest extends AbstractTest {
31+
public class SingleProcessorTest {
3332
@Test
3433
public void testDemandWithoutUpStreamIsRemembered() throws Exception {
3534
AbstractSingleProcessor<String, String> processor = new AbstractSingleProcessor<String, String>() {

0 commit comments

Comments
 (0)