From 2e83278190ef8d4d53f791660a3b10b5de1f25f7 Mon Sep 17 00:00:00 2001 From: Ryan Cox Date: Mon, 4 Mar 2024 12:49:37 -0700 Subject: [PATCH] "Encourage" usage of the client builder to get an instance of the smarty client. This will ensure the maxtimeout is passed through to the OKHTTP client. --- .../com/smartystreets/api/SmartySender.java | 23 +++++++------- .../com/smartystreets/api/SmartyApiIT.java | 2 +- .../smartystreets/api/SmartySenderTest.java | 30 +++++-------------- 3 files changed, 20 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/smartystreets/api/SmartySender.java b/src/main/java/com/smartystreets/api/SmartySender.java index ce39706..1acc127 100644 --- a/src/main/java/com/smartystreets/api/SmartySender.java +++ b/src/main/java/com/smartystreets/api/SmartySender.java @@ -15,17 +15,16 @@ import java.util.logging.Logger; public class SmartySender implements Sender { - private int maxTimeOut; - private OkHttpClient client; + private final int maxTimeOut; + private final OkHttpClient client; - public SmartySender() { - this.maxTimeOut = 10000; - this.client = new OkHttpClient(); - } - - public SmartySender(int maxTimeout) { - this(); - this.maxTimeOut = maxTimeout; + SmartySender(int maxTimeOut) { + this.maxTimeOut = maxTimeOut; + this.client = new OkHttpClient.Builder() + .writeTimeout(this.maxTimeOut, TimeUnit.MILLISECONDS) + .readTimeout(this.maxTimeOut, TimeUnit.MILLISECONDS) + .connectTimeout(this.maxTimeOut, TimeUnit.MILLISECONDS) + .build(); } SmartySender(int maxTimeOut, Proxy proxy) { @@ -38,8 +37,8 @@ public SmartySender(int maxTimeout) { .build(); } - SmartySender(OkHttpClient client) { - this(); + SmartySender(int maxTimeOut, OkHttpClient client) { + this.maxTimeOut = maxTimeOut; this.client = client; } diff --git a/src/test/java/com/smartystreets/api/SmartyApiIT.java b/src/test/java/com/smartystreets/api/SmartyApiIT.java index 4f5a16c..9d85ed3 100644 --- a/src/test/java/com/smartystreets/api/SmartyApiIT.java +++ b/src/test/java/com/smartystreets/api/SmartyApiIT.java @@ -25,7 +25,7 @@ public static void setupCredentials() throws Exception { @Test public void testInternationalAutocomplete() throws Exception { ArrayList licenses = new ArrayList<>(); - licenses.add("international-autocomplete-cloud"); + licenses.add("international-autocomplete-v2-cloud"); com.smartystreets.api.international_autocomplete.Client client = new ClientBuilder(credentials).withLicenses(licenses).buildInternationalAutcompleteApiClient(); com.smartystreets.api.international_autocomplete.Lookup lookup = new com.smartystreets.api.international_autocomplete.Lookup("Louis"); diff --git a/src/test/java/com/smartystreets/api/SmartySenderTest.java b/src/test/java/com/smartystreets/api/SmartySenderTest.java index 000f960..632e49d 100644 --- a/src/test/java/com/smartystreets/api/SmartySenderTest.java +++ b/src/test/java/com/smartystreets/api/SmartySenderTest.java @@ -14,9 +14,11 @@ public class SmartySenderTest { + final static int MAX_TIMEOUT = 1; + @Test public void testHttpRequestContainsCorrectHeaders() throws Exception { - SmartySender sender = new SmartySender(mockHttpClient("{\"key\": \"value\"}", 200)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient("{\"key\": \"value\"}", 200)); Request request = new Request(); request.setUrlPrefix("http://localhost"); request.putHeader("X-name1", "value1"); @@ -32,7 +34,7 @@ public void testHttpRequestContainsCorrectHeaders() throws Exception { @Test public void testHttpRequestContainsGetWhenAppropriate() throws Exception { String responseString = "This is a GET response."; - SmartySender sender = new SmartySender(mockHttpClient(responseString, 200)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient(responseString, 200)); Request request = new Request(); request.setUrlPrefix("http://localhost"); @@ -44,7 +46,7 @@ public void testHttpRequestContainsGetWhenAppropriate() throws Exception { @Test public void testHttpRequestContainsPostWhenAppropriate() throws Exception { String responseString = "This is a POST response."; - SmartySender sender = new SmartySender(mockHttpClient(responseString, 200)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient(responseString, 200)); Request request = new Request(); request.setUrlPrefix("http://localhost"); @@ -54,26 +56,10 @@ public void testHttpRequestContainsPostWhenAppropriate() throws Exception { assertArrayEquals(responseString.getBytes(), response.getPayload()); } -// @Test -// public void testHttpRequestContainsCorrectContent() throws Exception { -// SmartySender sender = new SmartySender(this.getMockClient(200)); -// Request request = new Request(); -// request.setUrlPrefix("http://localhost"); -// -// request.setPayload("This is the test content.".getBytes()); -// sender.send(request); -// -// assertEquals("This is the test content.", this.httpRequest.bodyPublisher().toString()); -// } - - //endregion - - //region [ Response Packaging ] - @Test public void testResponseContainsCorrectPayload() throws Exception { String responseBody = "{\"key\": \"value\"}"; - SmartySender sender = new SmartySender(mockHttpClient(responseBody, 200)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient(responseBody, 200)); Request request = new Request(); request.setUrlPrefix("http://localhost"); @@ -85,7 +71,7 @@ public void testResponseContainsCorrectPayload() throws Exception { @Test public void testResponseContainsStatusCode200OnSuccess() throws Exception { String responseBody = "{\"key\": \"value\"}"; - SmartySender sender = new SmartySender(mockHttpClient(responseBody, 200)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient(responseBody, 200)); Request request = new Request(); request.setUrlPrefix("http://localhost"); @@ -97,7 +83,7 @@ public void testResponseContainsStatusCode200OnSuccess() throws Exception { @Test public void testResponseContainsStatusCode400WhenA400IsThrown() throws Exception { String responseBody = "{\"key\": \"value\"}"; - SmartySender sender = new SmartySender(mockHttpClient(responseBody, 400)); + SmartySender sender = new SmartySender(MAX_TIMEOUT, mockHttpClient(responseBody, 400)); Request request = new Request(); request.setUrlPrefix("http://localhost");