From b691ec4b1d18bf7fb8d7061d3db4d7ae6513c6aa Mon Sep 17 00:00:00 2001 From: Peter Bagrij Date: Wed, 5 Jul 2023 16:12:07 +0200 Subject: [PATCH] FINERACT-1724 read timeout for fineract client is added. --- .../fineract/client/util/FineractClient.java | 6 ++++++ .../integrationtests/client/IntegrationTest.java | 16 ++++++++++++++-- .../client/ReportExportTest.java | 7 +++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java b/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java index 9a14a4343..9df4eced1 100644 --- a/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java +++ b/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java @@ -23,6 +23,7 @@ import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.time.Duration; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; @@ -471,6 +472,11 @@ public final class FineractClient { return this; } + public Builder readTimeout(Duration timeout) { + okBuilder.readTimeout(timeout); + return this; + } + /** * Skip Fineract API host SSL certificate verification. DO NOT USE THIS when invoking a production server's API! * This is intended for https://localhost:8443/ testing of development servers with self-signed certificates, diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java index a60c30dc5..f3bee6ac4 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java @@ -64,12 +64,24 @@ public abstract class IntegrationTest { if (fineract == null) { String url = System.getProperty("fineract.it.url", "https://localhost:8443/fineract-provider/api/"); // insecure(true) should *ONLY* ever be used for https://localhost:8443, NOT in real clients!! - fineract = FineractClient.builder().insecure(true).baseURL(url).tenant("default").basicAuth("mifos", "password") - .logging(Level.NONE).build(); + FineractClient.Builder builder = FineractClient.builder().insecure(true).baseURL(url).tenant("default") + .basicAuth("mifos", "password").logging(Level.NONE); + customizeFineractClient(builder); + fineract = builder.build(); } return fineract; } + /** + * Callback to customize FineractClient + * + * @param builder + * FineractClient.Builder. + */ + protected void customizeFineractClient(FineractClient.Builder builder) { + + } + /** * See {@link FineractClient#DATE_FORMAT}. */ diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ReportExportTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ReportExportTest.java index 3de4ddbc3..f01ce7868 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ReportExportTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ReportExportTest.java @@ -19,9 +19,11 @@ package org.apache.fineract.integrationtests.client; import java.io.IOException; +import java.time.Duration; import java.util.Map; import okhttp3.MediaType; import okhttp3.ResponseBody; +import org.apache.fineract.client.util.FineractClient; import org.apache.fineract.integrationtests.CIOnly; import org.apache.fineract.integrationtests.common.Utils; import org.junit.jupiter.api.BeforeEach; @@ -35,6 +37,11 @@ import retrofit2.Response; */ public class ReportExportTest extends IntegrationTest { + @Override + protected void customizeFineractClient(FineractClient.Builder builder) { + builder.readTimeout(Duration.ofSeconds(30)); + } + @BeforeEach public void setup() { Utils.initializeRESTAssured();