Files
java-tutorials/libraries-http/src/test/java/com/baeldung/okhttp/OkHttpMiscLiveTest.java
T

103 lines
3.7 KiB
Java
Raw Normal View History

2019-10-26 15:37:05 -06:00
package com.baeldung.okhttp;
import static com.baeldung.client.Consts.APPLICATION_PORT;
import java.io.File;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Execute <code>spring-rest</code> module before running this live test
*/
public class OkHttpMiscLiveTest {
private static final String BASE_URL = "http://localhost:" + APPLICATION_PORT + "/spring-rest";
private static Logger logger = LoggerFactory.getLogger(OkHttpMiscLiveTest.class);
OkHttpClient client;
@Before
public void init() {
client = new OkHttpClient();
}
@Test(expected = SocketTimeoutException.class)
public void whenSetRequestTimeout_thenFail() throws IOException {
final OkHttpClient clientWithTimeout = new OkHttpClient.Builder().readTimeout(1, TimeUnit.SECONDS).build();
final Request request = new Request.Builder().url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
final Call call = clientWithTimeout.newCall(request);
final Response response = call.execute();
response.close();
}
@Test(expected = IOException.class)
public void whenCancelRequest_thenCorrect() throws IOException {
final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
final Request request = new Request.Builder().url(BASE_URL + "/delay/2") // This URL is served with a 2 second delay.
.build();
final int seconds = 1;
final long startNanos = System.nanoTime();
final Call call = client.newCall(request);
// Schedule a job to cancel the call in 1 second.
executor.schedule(() -> {
logger.debug("Canceling call: " + ((System.nanoTime() - startNanos) / 1e9f));
call.cancel();
logger.debug("Canceled call: " + ((System.nanoTime() - startNanos) / 1e9f));
}, seconds, TimeUnit.SECONDS);
logger.debug("Executing call: " + ((System.nanoTime() - startNanos) / 1e9f));
final Response response = call.execute();
logger.debug("Call completed: " + ((System.nanoTime() - startNanos) / 1e9f), response);
}
@Test
public void whenSetResponseCache_thenCorrect() throws IOException {
final int cacheSize = 10 * 1024 * 1024; // 10 MiB
final File cacheDirectory = new File("src/test/resources/cache");
final Cache cache = new Cache(cacheDirectory, cacheSize);
final OkHttpClient clientCached = new OkHttpClient.Builder().cache(cache).build();
final Request request = new Request.Builder().url("http://publicobject.com/helloworld.txt").build();
final Response response1 = clientCached.newCall(request).execute();
logResponse(response1);
final Response response2 = clientCached.newCall(request).execute();
logResponse(response2);
}
private void logResponse(Response response) throws IOException {
logger.debug("Response response: " + response);
logger.debug("Response cache response: " + response.cacheResponse());
logger.debug("Response network response: " + response.networkResponse());
logger.debug("Response responseBody: " + response.body().string());
}
}