[task 82428] added a test to verify whether a timeout is being set

This commit is contained in:
Joost
2021-12-03 14:06:01 +01:00
parent 8e62c0496c
commit 0f162d803c
2 changed files with 33 additions and 8 deletions

View File

@@ -71,15 +71,14 @@ public class OpenUrlServiceImpl implements OpenUrlService {
*/
protected int getResponseCodeFromUrl(final String urlStr) throws IOException {
HttpGet httpGet = new HttpGet(urlStr);
HttpClient httpClient = getHttpClient();
RequestConfig requestConfig = getRequestConfigBuilder().setConnectTimeout(10*1000).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
HttpResponse httpResponse = httpClient.execute(httpGet);
return httpResponse.getStatusLine().getStatusCode();
}
HttpClient getHttpClient(){
//setting a timeout of 10 seconds so the connection pool doesn't exhaust when waiting a long time for a reply.
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(10*1000).build();
return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();
RequestConfig.Builder getRequestConfigBuilder(){
return RequestConfig.custom();
}
/**

View File

@@ -11,6 +11,7 @@ import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
@@ -25,13 +26,26 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.amazonaws.http.client.HttpClientFactory;
import org.apache.http.HttpVersion;
import org.apache.http.ProtocolVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicHttpResponse;
import org.apache.solr.client.solrj.impl.HttpClientBuilderFactory;
import org.dspace.core.Context;
import org.dspace.statistics.export.OpenURLTracker;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.mockito.internal.stubbing.answers.AnswersWithDelay;
import org.mockito.internal.stubbing.answers.Returns;
import org.mockito.junit.MockitoJUnitRunner;
/**
@@ -61,8 +75,6 @@ public class OpenUrlServiceImplTest {
openUrlService.processUrl(context, "test-url");
verify(openUrlService, times(0)).logfailed(context, "test-url");
}
/**
@@ -82,7 +94,6 @@ public class OpenUrlServiceImplTest {
verify(openUrlService, times(1)).logfailed(context, "test-url");
}
/**
@@ -131,4 +142,19 @@ public class OpenUrlServiceImplTest {
assertThat(tracker1.getUrl(), is(failedUrl));
}
@Test()
public void testTimeout() throws SQLException {
Context context = mock(Context.class);
String URL = "http://bla.com";
RequestConfig.Builder requestConfig = mock(RequestConfig.Builder.class);
doReturn(requestConfig).when(openUrlService).getRequestConfigBuilder();
doReturn(requestConfig).when(requestConfig).setConnectTimeout(10*1000);
doReturn(RequestConfig.custom().build()).when(requestConfig).build();
openUrlService.processUrl(context, URL);
Mockito.verify(requestConfig).setConnectTimeout(10*1000);
}
}