From 7794ebaf619ff2dda5a050e879d40486e07bb8ad Mon Sep 17 00:00:00 2001 From: Roger Floriano <31597636+petruki@users.noreply.github.com> Date: Mon, 13 Oct 2025 14:42:28 -0700 Subject: [PATCH 1/4] feat: improved async performance by 2x (#377) --- .../client/model/SwitcherRequest.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/switcherapi/client/model/SwitcherRequest.java b/src/main/java/com/switcherapi/client/model/SwitcherRequest.java index cb5a61a..8025488 100644 --- a/src/main/java/com/switcherapi/client/model/SwitcherRequest.java +++ b/src/main/java/com/switcherapi/client/model/SwitcherRequest.java @@ -24,7 +24,7 @@ public final class SwitcherRequest extends SwitcherBuilder { private final String switcherKey; - private final Set historyExecution; + private final Map, SwitcherResult> historyExecution; private AsyncSwitcher asyncSwitcher; @@ -41,7 +41,7 @@ public SwitcherRequest(final String switcherKey, super(switcherProperties); this.switcherExecutor = switcherExecutor; this.switcherKey = switcherKey; - this.historyExecution = new HashSet<>(); + this.historyExecution = new HashMap<>(); } @Override @@ -105,10 +105,7 @@ public SwitcherResult executeCriteria() { @Override public void updateHistoryExecution(final SwitcherResult response) { - this.historyExecution.removeIf(item -> - this.switcherKey.equals(item.getSwitcherKey()) && this.entry.equals(item.getEntry())); - - this.historyExecution.add(response); + historyExecution.put(entry, response); } @Override @@ -135,12 +132,7 @@ private boolean canUseAsync() { } private Optional getFromHistory() { - for (SwitcherResult switcherResult : historyExecution) { - if (switcherResult.getEntry().equals(entry)) { - return Optional.of(switcherResult); - } - } - return Optional.empty(); + return Optional.ofNullable(historyExecution.get(entry)); } @Override From e347a68444485b95b85404c962da14d73e297b30 Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:06:30 -0700 Subject: [PATCH 2/4] fix-test: SwitcherThrottleTest --- src/test/java/com/switcherapi/client/SwitcherThrottleTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java index 0001125..672b604 100644 --- a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java +++ b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java @@ -23,7 +23,6 @@ static void setup() throws IOException { MockWebServerHelper.setupMockServer(); Switchers.loadProperties(); - Switchers.configure(ContextBuilder.builder().url(String.format("http://localhost:%s", mockBackEnd.getPort()))); } @AfterAll @@ -36,6 +35,7 @@ void resetSwitcherContextState() { ((QueueDispatcher) mockBackEnd.getDispatcher()).clear(); Switchers.configure(ContextBuilder.builder() + .url(String.format("http://localhost:%s", mockBackEnd.getPort())) .local(false) .snapshotLocation(null) .snapshotSkipValidation(false) From 6878240b9e2d3be0f5eb3f5bccdabfb76b1130bd Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:09:54 -0700 Subject: [PATCH 3/4] Revert "fix-test: SwitcherThrottleTest" This reverts commit e347a68444485b95b85404c962da14d73e297b30. --- src/test/java/com/switcherapi/client/SwitcherThrottleTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java index 672b604..0001125 100644 --- a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java +++ b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java @@ -23,6 +23,7 @@ static void setup() throws IOException { MockWebServerHelper.setupMockServer(); Switchers.loadProperties(); + Switchers.configure(ContextBuilder.builder().url(String.format("http://localhost:%s", mockBackEnd.getPort()))); } @AfterAll @@ -35,7 +36,6 @@ void resetSwitcherContextState() { ((QueueDispatcher) mockBackEnd.getDispatcher()).clear(); Switchers.configure(ContextBuilder.builder() - .url(String.format("http://localhost:%s", mockBackEnd.getPort())) .local(false) .snapshotLocation(null) .snapshotSkipValidation(false) From 4ab7fbaaf6ed5d344faa53c8fdff32590d79acbd Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:53:16 -0700 Subject: [PATCH 4/4] fix-test: set order for SwitcherThrottleTest --- .../java/com/switcherapi/client/SwitcherThrottleTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java index 0001125..f10ce77 100644 --- a/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java +++ b/src/test/java/com/switcherapi/client/SwitcherThrottleTest.java @@ -6,16 +6,14 @@ import com.switcherapi.fixture.CountDownHelper; import com.switcherapi.fixture.MockWebServerHelper; import mockwebserver3.QueueDispatcher; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.*; import java.io.IOException; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) class SwitcherThrottleTest extends MockWebServerHelper { @BeforeAll @@ -46,6 +44,7 @@ void resetSwitcherContextState() { } @Test + @Order(1) void shouldReturnTrue_withThrottle() { Switchers.initializeClient(); @@ -72,6 +71,7 @@ void shouldReturnTrue_withThrottle() { } @Test + @Order(2) void shouldRetrieveNewResponse_whenStrategyInputChanged() { Switchers.initializeClient();