Async refactor (#3570)
This commit is contained in:
parent
55660e7702
commit
2169be4301
@ -1,15 +1,6 @@
|
|||||||
package com.baeldung.asynchttpclient;
|
package com.baeldung.asynchttpclient;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import io.netty.handler.codec.http.HttpHeaders;
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
import java.util.concurrent.ExecutionException;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
|
|
||||||
import org.asynchttpclient.AsyncCompletionHandler;
|
import org.asynchttpclient.AsyncCompletionHandler;
|
||||||
import org.asynchttpclient.AsyncHandler;
|
import org.asynchttpclient.AsyncHandler;
|
||||||
import org.asynchttpclient.AsyncHttpClient;
|
import org.asynchttpclient.AsyncHttpClient;
|
||||||
@ -27,193 +18,192 @@ import org.asynchttpclient.ws.WebSocketUpgradeHandler;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import io.netty.handler.codec.http.HttpHeaders;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class AsyncHttpClientTestCase {
|
public class AsyncHttpClientTestCase {
|
||||||
|
|
||||||
private static AsyncHttpClient HTTP_CLIENT;
|
private static AsyncHttpClient HTTP_CLIENT;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
|
AsyncHttpClientConfig clientConfig = Dsl.config().setConnectTimeout(15000).setRequestTimeout(15000).build();
|
||||||
|
HTTP_CLIENT = Dsl.asyncHttpClient(clientConfig);
|
||||||
|
}
|
||||||
|
|
||||||
AsyncHttpClientConfig clientConfig = Dsl.config().setConnectTimeout(15000).setRequestTimeout(15000).build();
|
@Test
|
||||||
HTTP_CLIENT = Dsl.asyncHttpClient(clientConfig);
|
public void givenHttpClient_executeSyncGetRequest() {
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void givenHttpClient_executeSyncGetRequest() {
|
|
||||||
|
|
||||||
BoundRequestBuilder boundGetRequest = HTTP_CLIENT.prepareGet("http://www.baeldung.com");
|
BoundRequestBuilder boundGetRequest = HTTP_CLIENT.prepareGet("http://www.baeldung.com");
|
||||||
|
|
||||||
Future<Response> responseFuture = boundGetRequest.execute();
|
Future<Response> responseFuture = boundGetRequest.execute();
|
||||||
try {
|
try {
|
||||||
Response response = responseFuture.get(5000, TimeUnit.MILLISECONDS);
|
Response response = responseFuture.get(5000, TimeUnit.MILLISECONDS);
|
||||||
assertNotNull(response);
|
assertNotNull(response);
|
||||||
assertEquals(200, response.getStatusCode());
|
assertEquals(200, response.getStatusCode());
|
||||||
|
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
} catch (InterruptedException e) {
|
try {
|
||||||
e.printStackTrace();
|
Thread.sleep(5000);
|
||||||
} catch (ExecutionException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (TimeoutException e) {
|
}
|
||||||
e.printStackTrace();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
Thread.sleep(5000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenHttpClient_executeAsyncGetRequest() {
|
public void givenHttpClient_executeAsyncGetRequest() {
|
||||||
|
|
||||||
// execute an unbound GET request
|
// execute an unbound GET request
|
||||||
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
||||||
|
|
||||||
HTTP_CLIENT.executeRequest(unboundGetRequest, new AsyncCompletionHandler<Integer>() {
|
HTTP_CLIENT.executeRequest(unboundGetRequest, new AsyncCompletionHandler<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public Integer onCompleted(Response response) throws Exception {
|
public Integer onCompleted(Response response) {
|
||||||
|
|
||||||
int resposeStatusCode = response.getStatusCode();
|
int resposeStatusCode = response.getStatusCode();
|
||||||
assertEquals(200, resposeStatusCode);
|
assertEquals(200, resposeStatusCode);
|
||||||
return resposeStatusCode;
|
return resposeStatusCode;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// execute a bound GET request
|
// execute a bound GET request
|
||||||
BoundRequestBuilder boundGetRequest = HTTP_CLIENT.prepareGet("http://www.baeldung.com");
|
BoundRequestBuilder boundGetRequest = HTTP_CLIENT.prepareGet("http://www.baeldung.com");
|
||||||
|
|
||||||
boundGetRequest.execute(new AsyncCompletionHandler<Integer>() {
|
boundGetRequest.execute(new AsyncCompletionHandler<Integer>() {
|
||||||
@Override
|
@Override
|
||||||
public Integer onCompleted(Response response) throws Exception {
|
public Integer onCompleted(Response response) {
|
||||||
|
int resposeStatusCode = response.getStatusCode();
|
||||||
|
assertEquals(200, resposeStatusCode);
|
||||||
|
return resposeStatusCode;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
int resposeStatusCode = response.getStatusCode();
|
try {
|
||||||
assertEquals(200, resposeStatusCode);
|
Thread.sleep(5000);
|
||||||
return resposeStatusCode;
|
} catch (InterruptedException e) {
|
||||||
}
|
e.printStackTrace();
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
@Test
|
||||||
Thread.sleep(5000);
|
public void givenHttpClient_executeAsyncGetRequestWithAsyncHandler() {
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
// execute an unbound GET request
|
||||||
public void givenHttpClient_executeAsyncGetRequestWithAsyncHandler() {
|
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
||||||
|
|
||||||
// execute an unbound GET request
|
HTTP_CLIENT.executeRequest(unboundGetRequest, new AsyncHandler<Integer>() {
|
||||||
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
|
||||||
|
|
||||||
HTTP_CLIENT.executeRequest(unboundGetRequest, new AsyncHandler<Integer>() {
|
int responseStatusCode = -1;
|
||||||
|
|
||||||
int responseStatusCode = -1;
|
@Override
|
||||||
|
public State onStatusReceived(HttpResponseStatus responseStatus) {
|
||||||
|
responseStatusCode = responseStatus.getStatusCode();
|
||||||
|
return State.CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public State onStatusReceived(HttpResponseStatus responseStatus) throws Exception {
|
public State onHeadersReceived(HttpHeaders headers) {
|
||||||
responseStatusCode = responseStatus.getStatusCode();
|
return State.CONTINUE;
|
||||||
return State.CONTINUE;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public State onHeadersReceived(HttpHeaders headers) throws Exception {
|
public State onBodyPartReceived(HttpResponseBodyPart bodyPart) {
|
||||||
return State.CONTINUE;
|
return State.CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public State onBodyPartReceived(HttpResponseBodyPart bodyPart) throws Exception {
|
public void onThrowable(Throwable t) {
|
||||||
return State.CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
}
|
||||||
public void onThrowable(Throwable t) {
|
|
||||||
|
|
||||||
}
|
@Override
|
||||||
|
public Integer onCompleted() {
|
||||||
|
assertEquals(200, responseStatusCode);
|
||||||
|
return responseStatusCode;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@Override
|
try {
|
||||||
public Integer onCompleted() throws Exception {
|
Thread.sleep(5000);
|
||||||
assertEquals(200, responseStatusCode);
|
} catch (InterruptedException e) {
|
||||||
return responseStatusCode;
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
try {
|
@Test
|
||||||
Thread.sleep(5000);
|
public void givenHttpClient_executeAsyncGetRequestWithListanableFuture() {
|
||||||
} catch (InterruptedException e) {
|
// execute an unbound GET request
|
||||||
e.printStackTrace();
|
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
ListenableFuture<Response> listenableFuture = HTTP_CLIENT.executeRequest(unboundGetRequest);
|
||||||
public void givenHttpClient_executeAsyncGetRequestWithListanableFuture() {
|
listenableFuture.addListener(() -> {
|
||||||
// execute an unbound GET request
|
Response response;
|
||||||
Request unboundGetRequest = Dsl.get("http://www.baeldung.com").build();
|
try {
|
||||||
|
response = listenableFuture.get(5000, TimeUnit.MILLISECONDS);
|
||||||
|
assertEquals(200, response.getStatusCode());
|
||||||
|
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}, Executors.newCachedThreadPool());
|
||||||
|
|
||||||
ListenableFuture<Response> listenableFuture = HTTP_CLIENT.executeRequest(unboundGetRequest);
|
try {
|
||||||
listenableFuture.addListener(() -> {
|
Thread.sleep(5000);
|
||||||
Response response;
|
} catch (InterruptedException e) {
|
||||||
try {
|
e.printStackTrace();
|
||||||
response = listenableFuture.get(5000, TimeUnit.MILLISECONDS);
|
}
|
||||||
assertEquals(200, response.getStatusCode());
|
}
|
||||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}, Executors.newCachedThreadPool());
|
@Test
|
||||||
|
public void givenWebSocketClient_tryToConnect() {
|
||||||
|
|
||||||
try {
|
WebSocketUpgradeHandler.Builder upgradeHandlerBuilder = new WebSocketUpgradeHandler.Builder();
|
||||||
Thread.sleep(5000);
|
WebSocketUpgradeHandler wsHandler = upgradeHandlerBuilder.addWebSocketListener(new WebSocketListener() {
|
||||||
} catch (InterruptedException e) {
|
@Override
|
||||||
e.printStackTrace();
|
public void onOpen(WebSocket websocket) {
|
||||||
}
|
// WebSocket connection opened
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Override
|
||||||
public void givenWebSocketClient_tryToConnect() {
|
public void onClose(WebSocket websocket, int code, String reason) {
|
||||||
|
// WebSocket connection closed
|
||||||
|
}
|
||||||
|
|
||||||
WebSocketUpgradeHandler.Builder upgradeHandlerBuilder = new WebSocketUpgradeHandler.Builder();
|
@Override
|
||||||
WebSocketUpgradeHandler wsHandler = upgradeHandlerBuilder.addWebSocketListener(new WebSocketListener() {
|
public void onError(Throwable t) {
|
||||||
@Override
|
// WebSocket connection error
|
||||||
public void onOpen(WebSocket websocket) {
|
assertTrue(t.getMessage().contains("Request timeout"));
|
||||||
// WebSocket connection opened
|
}
|
||||||
}
|
}).build();
|
||||||
|
|
||||||
@Override
|
WebSocket WEBSOCKET_CLIENT = null;
|
||||||
public void onClose(WebSocket websocket, int code, String reason) {
|
try {
|
||||||
// WebSocket connection closed
|
WEBSOCKET_CLIENT = Dsl.asyncHttpClient()
|
||||||
}
|
.prepareGet("ws://localhost:5590/websocket")
|
||||||
|
.addHeader("header_name", "header_value")
|
||||||
|
.addQueryParam("key", "value")
|
||||||
|
.setRequestTimeout(5000)
|
||||||
|
.execute(wsHandler).get();
|
||||||
|
|
||||||
@Override
|
if (WEBSOCKET_CLIENT.isOpen()) {
|
||||||
public void onError(Throwable t) {
|
WEBSOCKET_CLIENT.sendPingFrame();
|
||||||
// WebSocket connection error
|
WEBSOCKET_CLIENT.sendTextFrame("test message");
|
||||||
assertTrue(t.getMessage().contains("Request timeout"));
|
WEBSOCKET_CLIENT.sendBinaryFrame(new byte[]{'t', 'e', 's', 't'});
|
||||||
}
|
}
|
||||||
}).build();
|
} catch (InterruptedException | ExecutionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
WebSocket WEBSOCKET_CLIENT = null;
|
} finally {
|
||||||
try {
|
if (WEBSOCKET_CLIENT != null && WEBSOCKET_CLIENT.isOpen()) {
|
||||||
WEBSOCKET_CLIENT = Dsl.asyncHttpClient()
|
WEBSOCKET_CLIENT.sendCloseFrame(200, "OK");
|
||||||
.prepareGet("ws://localhost:5590/websocket")
|
}
|
||||||
.addHeader("header_name", "header_value")
|
}
|
||||||
.addQueryParam("key", "value")
|
}
|
||||||
.setRequestTimeout(5000)
|
|
||||||
.execute(wsHandler).get();
|
|
||||||
|
|
||||||
if (WEBSOCKET_CLIENT.isOpen()) {
|
|
||||||
WEBSOCKET_CLIENT.sendPingFrame();
|
|
||||||
WEBSOCKET_CLIENT.sendTextFrame("test message");
|
|
||||||
WEBSOCKET_CLIENT.sendBinaryFrame(new byte[] { 't', 'e', 's', 't' });
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
if (WEBSOCKET_CLIENT != null && WEBSOCKET_CLIENT.isOpen()) {
|
|
||||||
WEBSOCKET_CLIENT.sendCloseFrame(200, "OK");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user