Skip to content

Commit 6c5de89

Browse files
committed
Optimized RestClient Tests using customized Retry Handler
Signed-off-by: eatulban <eatulban@amazon.com>
1 parent 45b0e86 commit 6c5de89

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

  • data-prepper-plugins/saas-source-plugins/microsoft-office365-source/src/test/java/org/opensearch/dataprepper/plugins/source/microsoft_office365

data-prepper-plugins/saas-source-plugins/microsoft-office365-source/src/test/java/org/opensearch/dataprepper/plugins/source/microsoft_office365/Office365RestClientTest.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
import org.opensearch.dataprepper.plugins.source.microsoft_office365.models.AuditLogsResponse;
2323
import org.opensearch.dataprepper.plugins.source.source_crawler.exception.SaaSCrawlerException;
2424
import org.opensearch.dataprepper.plugins.source.source_crawler.metrics.VendorAPIMetricsRecorder;
25+
import org.opensearch.dataprepper.plugins.source.source_crawler.utils.retry.DefaultRetryStrategy;
26+
import org.opensearch.dataprepper.plugins.source.source_crawler.utils.retry.DefaultStatusCodeHandler;
27+
import org.opensearch.dataprepper.plugins.source.source_crawler.utils.retry.RetryHandler;
2528
import org.opensearch.dataprepper.test.helper.ReflectivelySetField;
2629
import org.springframework.core.ParameterizedTypeReference;
2730
import org.springframework.http.HttpEntity;
@@ -79,6 +82,8 @@ class Office365RestClientTest {
7982

8083
private Office365RestClient office365RestClient;
8184

85+
private static final int CUSTOM_MAX_RETRIES = 1;
86+
8287
@BeforeEach
8388
void setUp() throws NoSuchFieldException, IllegalAccessException {
8489
// Setup VendorAPIMetricsRecorder method mocks - use lenient to avoid unnecessary stubbing errors
@@ -112,6 +117,12 @@ void setUp() throws NoSuchFieldException, IllegalAccessException {
112117

113118
office365RestClient = new Office365RestClient(authConfig, pluginMetrics, metricsRecorder);
114119
ReflectivelySetField.setField(Office365RestClient.class, office365RestClient, "restTemplate", restTemplate);
120+
121+
// Optionally replace RetryHandler with custom one (1 retry) for faster test execution
122+
RetryHandler customRetryHandler = new RetryHandler(
123+
new DefaultRetryStrategy(CUSTOM_MAX_RETRIES),
124+
new DefaultStatusCodeHandler());
125+
ReflectivelySetField.setField(Office365RestClient.class, office365RestClient, "retryHandler", customRetryHandler);
115126
}
116127

117128
/**
@@ -365,11 +376,18 @@ void testGetAuditLogFailure() {
365376
* Verifies that failed authentication triggers credential renewal and retry succeeds.
366377
*/
367378
@Test
368-
void testTokenRenewal() {
379+
void testTokenRenewal() throws NoSuchFieldException, IllegalAccessException {
369380
// Setup
370381
Instant startTime = Instant.now().minus(1, ChronoUnit.HOURS);
371382
Instant endTime = Instant.now();
372383

384+
// Override retry handler to allow at least 2 attempts for token renewal test
385+
RetryHandler tokenRenewalRetryHandler = new RetryHandler(
386+
new DefaultRetryStrategy(2), // Need at least 2 attempts for token renewal scenario
387+
new DefaultStatusCodeHandler());
388+
ReflectivelySetField.setField(Office365RestClient.class, office365RestClient, "retryHandler",
389+
tokenRenewalRetryHandler);
390+
373391
List<String> tokensUsed = new ArrayList<>();
374392
List<String> requestTokens = new ArrayList<>();
375393

0 commit comments

Comments
 (0)