fix unstable tests in libraries-http-2

This commit is contained in:
Loredana Crusoveanu 2020-11-24 17:13:44 +02:00
parent bd5891852c
commit d3ee95024f
7 changed files with 131 additions and 53 deletions

View File

@ -84,7 +84,6 @@
<okhttp.version>3.14.2</okhttp.version>
<gson.version>2.8.5</gson.version>
<mockwebserver.version>3.14.2</mockwebserver.version>
<!-- <jackson.version>2.9.8</jackson.version>-->
<jetty.httpclient.version>1.0.3</jetty.httpclient.version>
<jetty.server.version>9.4.19.v20190610</jetty.server.version>
<rxjava2.version>2.2.11</rxjava2.version>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>

View File

@ -3,23 +3,16 @@ package com.baeldung.jetty.httpclient;
import org.eclipse.jetty.client.HttpClient;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
public abstract class AbstractUnitTest {
protected HttpClient httpClient;
protected Server server;
protected static HttpClient httpClient;
protected static Server server;
protected static final String CONTENT = "Hello World!";
protected final int port = 9080;
@Before
public void init() {
startServer(new RequestHandler());
startClient();
}
private void startClient() {
protected static void startClient() {
httpClient = new HttpClient();
try {
httpClient.start();
@ -28,7 +21,7 @@ public abstract class AbstractUnitTest {
}
}
private void startServer(Handler handler) {
protected static void startServer(Handler handler, int port) {
server = new Server(port);
server.setHandler(handler);
try {
@ -37,18 +30,9 @@ public abstract class AbstractUnitTest {
e.printStackTrace();
}
}
@After
public void dispose() throws Exception {
if (httpClient != null) {
httpClient.stop();
}
if (server != null) {
server.stop();
}
}
protected String uri() {
protected String uri(int port) {
return "http://localhost:" + port;
}
}

View File

@ -4,18 +4,29 @@ import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.reactive.client.ReactiveRequest;
import org.eclipse.jetty.reactive.client.ReactiveResponse;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Mono;
public class ProjectReactorUnitTest extends AbstractUnitTest {
protected static int port = 9080;
@BeforeAll
public static void init() {
startServer(new RequestHandler(), port);
startClient();
}
@Test
public void givenReactiveClient_whenRequested_shouldReturn200() throws Exception {
Request request = httpClient.newRequest(uri());
Request request = httpClient.newRequest(uri(port));
ReactiveRequest reactiveRequest = ReactiveRequest.newBuilder(request)
.build();
Publisher<ReactiveResponse> publisher = reactiveRequest.response();
@ -23,8 +34,19 @@ public class ProjectReactorUnitTest extends AbstractUnitTest {
ReactiveResponse response = Mono.from(publisher)
.block();
Assert.assertNotNull(response);
Assert.assertEquals(response.getStatus(), HttpStatus.OK_200);
assertNotNull(response);
assertEquals(response.getStatus(), HttpStatus.OK_200);
}
@AfterAll
public static void dispose() throws Exception {
if (httpClient != null) {
httpClient.stop();
}
if (server != null) {
server.stop();
}
}
}

View File

@ -4,16 +4,27 @@ import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.reactive.client.ReactiveRequest;
import org.eclipse.jetty.reactive.client.ReactiveResponse;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.reactivestreams.Publisher;
public class ReactiveStreamsUnitTest extends AbstractUnitTest {
protected static int port = 9081;
@BeforeAll
public static void init() {
startServer(new RequestHandler(), port);
startClient();
}
@Test
public void givenReactiveClient_whenRequested_shouldReturn200() throws Exception {
Request request = httpClient.newRequest(uri());
Request request = httpClient.newRequest(uri(port));
ReactiveRequest reactiveRequest = ReactiveRequest.newBuilder(request)
.build();
Publisher<ReactiveResponse> publisher = reactiveRequest.response();
@ -21,8 +32,18 @@ public class ReactiveStreamsUnitTest extends AbstractUnitTest {
BlockingSubscriber subscriber = new BlockingSubscriber();
publisher.subscribe(subscriber);
ReactiveResponse response = subscriber.block();
Assert.assertNotNull(response);
Assert.assertEquals(response.getStatus(), HttpStatus.OK_200);
assertNotNull(response);
assertEquals(response.getStatus(), HttpStatus.OK_200);
}
@AfterAll
public static void dispose() throws Exception {
if (httpClient != null) {
httpClient.stop();
}
if (server != null) {
server.stop();
}
}
}

View File

@ -10,8 +10,11 @@ import org.eclipse.jetty.http.HttpStatus;
import org.eclipse.jetty.reactive.client.ReactiveRequest;
import org.eclipse.jetty.reactive.client.ReactiveRequest.Event.Type;
import org.eclipse.jetty.reactive.client.ReactiveResponse;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.reactivestreams.Publisher;
import org.springframework.http.MediaType;
@ -19,11 +22,19 @@ import io.reactivex.Flowable;
import io.reactivex.Single;
public class RxJava2UnitTest extends AbstractUnitTest {
protected static int port = 9082;
@BeforeAll
public static void init() {
startServer(new RequestHandler(), port);
startClient();
}
@Test
public void givenReactiveClient_whenRequestedWithBody_ShouldReturnBody() throws Exception {
Request request = httpClient.newRequest(uri());
Request request = httpClient.newRequest(uri(port));
ReactiveRequest reactiveRequest = ReactiveRequest.newBuilder(request)
.content(ReactiveRequest.Content.fromString(CONTENT, MediaType.TEXT_PLAIN_VALUE, UTF_8))
.build();
@ -32,12 +43,12 @@ public class RxJava2UnitTest extends AbstractUnitTest {
String responseContent = Single.fromPublisher(publisher)
.blockingGet();
Assert.assertEquals(CONTENT, responseContent);
assertEquals(CONTENT, responseContent);
}
@Test
public void givenReactiveClient_whenRequested_ShouldPrintEvents() throws Exception {
ReactiveRequest request = ReactiveRequest.newBuilder(httpClient, uri())
ReactiveRequest request = ReactiveRequest.newBuilder(httpClient, uri(port))
.content(ReactiveRequest.Content.fromString(CONTENT, MediaType.TEXT_PLAIN_VALUE, UTF_8))
.build();
Publisher<ReactiveRequest.Event> requestEvents = request.requestEvents();
@ -58,10 +69,20 @@ public class RxJava2UnitTest extends AbstractUnitTest {
int actualStatus = response.blockingGet()
.getStatus();
Assert.assertEquals(6, requestEventTypes.size());
Assert.assertEquals(5, responseEventTypes.size());
assertEquals(6, requestEventTypes.size());
assertEquals(5, responseEventTypes.size());
Assert.assertEquals(actualStatus, HttpStatus.OK_200);
assertEquals(actualStatus, HttpStatus.OK_200);
}
@AfterAll
public static void dispose() throws Exception {
if (httpClient != null) {
httpClient.stop();
}
if (server != null) {
server.stop();
}
}
}

View File

@ -1,8 +1,11 @@
package com.baeldung.jetty.httpclient;
import org.eclipse.jetty.client.HttpClient;
import org.junit.Assert;
import org.junit.Test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType;
import org.springframework.http.client.reactive.ClientHttpConnector;
import org.springframework.http.client.reactive.JettyClientHttpConnector;
@ -12,25 +15,40 @@ import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class SpringWebFluxUnitTest extends AbstractUnitTest {
protected static int port = 9083;
@BeforeAll
public static void init() {
startServer(new RequestHandler(), port);
startClient();
}
@Test
public void givenReactiveClient_whenRequested_shouldReturnResponse() throws Exception {
HttpClient httpClient = new HttpClient();
httpClient.start();
ClientHttpConnector clientConnector = new JettyClientHttpConnector(httpClient);
WebClient client = WebClient.builder()
.clientConnector(clientConnector)
.build();
String responseContent = client.post()
.uri(uri())
.uri(uri(port))
.contentType(MediaType.TEXT_PLAIN)
.body(BodyInserters.fromPublisher(Mono.just(CONTENT), String.class))
.retrieve()
.bodyToMono(String.class)
.block();
Assert.assertNotNull(responseContent);
Assert.assertEquals(CONTENT, responseContent);
assertNotNull(responseContent);
assertEquals(CONTENT, responseContent);
}
@AfterAll
public static void dispose() throws Exception {
if (httpClient != null) {
httpClient.stop();
}
if (server != null) {
server.stop();
}
}
}