Skip to content

Commit dbb4ae1

Browse files
committed
flaky tests attempt, changing it to stop flagd all the time, without stopping the container
Signed-off-by: Simon Schrottner <[email protected]>
1 parent 7fb193e commit dbb4ae1

File tree

12 files changed

+48
-43
lines changed

12 files changed

+48
-43
lines changed

providers/flagd/spec

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/FlagdProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ EvaluationContext getEnrichedContext() {
209209
private void onProviderEvent(FlagdProviderEvent flagdProviderEvent) {
210210

211211
synchronized (eventsLock) {
212-
log.info("FlagdProviderEvent: {}", flagdProviderEvent);
212+
log.info("FlagdProviderEvent: {}", flagdProviderEvent.getEvent());
213213
eventsLock.syncMetadata = flagdProviderEvent.getSyncMetadata();
214214
if (flagdProviderEvent.getSyncMetadata() != null) {
215215
eventsLock.enrichedContext = contextEnricher.apply(flagdProviderEvent.getSyncMetadata());

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/common/ChannelMonitor.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,11 @@ public static void monitorChannelState(
4747
log.debug("onConnectionLost is null");
4848
}
4949
}
50-
// Re-register the state monitor to watch for the next state transition.
51-
monitorChannelState(currentState, channel, onConnectionReady, onConnectionLost);
50+
if (currentState != ConnectivityState.SHUTDOWN) {
51+
log.debug("shutting down grpc channel");
52+
// Re-register the state monitor to watch for the next state transition.
53+
monitorChannelState(currentState, channel, onConnectionReady, onConnectionLost);
54+
}
5255
});
5356
}
5457

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/grpc/EventStreamObserver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public void onCompleted() {}
6464
* @param value the event stream response containing configuration change data
6565
*/
6666
private void handleConfigurationChangeEvent(EventStreamResponse value) {
67+
log.debug("Received provider change event");
6768
List<String> changedFlags = new ArrayList<>();
6869

6970
Map<String, Value> data = value.getData().getFieldsMap();
@@ -80,7 +81,7 @@ private void handleConfigurationChangeEvent(EventStreamResponse value) {
8081
* Handles provider readiness events by clearing the cache (if enabled) and notifying listeners of readiness.
8182
*/
8283
private void handleProviderReadyEvent() {
83-
log.info("Received provider ready event");
84+
log.debug("Received provider ready event");
8485
onReady.accept(new FlagdProviderEvent(ProviderEvent.PROVIDER_READY));
8586
}
8687
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
org.org.slf4j.simpleLogger.defaultLogLevel=debug
2+
3+
io.grpc.level=trace

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/FlagdProviderTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@
6060
import java.util.concurrent.TimeUnit;
6161
import java.util.function.Consumer;
6262
import java.util.function.Function;
63+
import org.junit.jupiter.api.AfterEach;
6364
import org.junit.jupiter.api.BeforeAll;
65+
import org.junit.jupiter.api.BeforeEach;
6466
import org.junit.jupiter.api.Test;
6567
import org.mockito.MockedConstruction;
6668

@@ -90,15 +92,15 @@ class FlagdProviderTest {
9092
.build();
9193
private static final String STRING_VALUE = "hi!";
9294

93-
private static OpenFeatureAPI api;
95+
private OpenFeatureAPI api;
9496

95-
@BeforeAll
96-
public static void init() {
97+
@BeforeEach
98+
public void init() {
9799
api = OpenFeatureAPI.getInstance();
98100
}
99101

100-
@AfterAll
101-
public static void cleanUp() {
102+
@AfterEach
103+
public void cleanUp() {
102104
api.shutdown();
103105
}
104106

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunInProcessTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
import dev.openfeature.contrib.providers.flagd.Config;
88
import org.apache.logging.log4j.core.config.Order;
9+
import org.junit.jupiter.api.parallel.Execution;
10+
import org.junit.jupiter.api.parallel.ExecutionMode;
11+
import org.junit.jupiter.api.parallel.Isolated;
912
import org.junit.platform.suite.api.BeforeSuite;
1013
import org.junit.platform.suite.api.ConfigurationParameter;
1114
import org.junit.platform.suite.api.ExcludeTags;
@@ -30,6 +33,7 @@
3033
@IncludeTags("in-process")
3134
@ExcludeTags({"unixsocket", "targetURI"})
3235
@Testcontainers
36+
@Isolated
3337
public class RunInProcessTest {
3438

3539
@BeforeSuite

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/RunRpcTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
import dev.openfeature.contrib.providers.flagd.Config;
88
import org.apache.logging.log4j.core.config.Order;
9+
import org.junit.jupiter.api.parallel.Execution;
10+
import org.junit.jupiter.api.parallel.ExecutionMode;
11+
import org.junit.jupiter.api.parallel.Isolated;
912
import org.junit.platform.suite.api.BeforeSuite;
1013
import org.junit.platform.suite.api.ConfigurationParameter;
1114
import org.junit.platform.suite.api.ExcludeTags;

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/State.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import dev.openfeature.contrib.providers.flagd.e2e.steps.FlagSteps;
77
import dev.openfeature.contrib.providers.flagd.e2e.steps.ProviderType;
88
import dev.openfeature.sdk.Client;
9+
import dev.openfeature.sdk.FeatureProvider;
910
import dev.openfeature.sdk.FlagEvaluationDetails;
1011
import dev.openfeature.sdk.MutableContext;
1112
import java.util.LinkedList;
@@ -15,6 +16,7 @@
1516
public class State {
1617
public ProviderType providerType;
1718
public Client client;
19+
public FeatureProvider provider;
1820
public List<Event> events = new LinkedList<>();
1921
public Optional<Event> lastEvent;
2022
public FlagSteps.Flag flag;

providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/e2e/steps/EventSteps.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public EventSteps(State state) {
2525
@Given("a {} event handler")
2626
public void a_stale_event_handler(String eventType) {
2727
state.client.on(mapEventType(eventType), eventDetails -> {
28-
log.info("event tracked for {} at {} ms ", eventType, System.currentTimeMillis()%100_000);
28+
log.info("event tracked for {} at {} ms ", eventType, System.currentTimeMillis() % 100_000);
2929
state.events.add(new Event(eventType, eventDetails));
3030
});
3131
}
@@ -58,12 +58,11 @@ public void eventHandlerShouldBeExecuted(String eventType) {
5858
@Then("the {} event handler should have been executed within {int}ms")
5959
public void eventHandlerShouldBeExecutedWithin(String eventType, int ms) {
6060
log.info("waiting for eventtype: {}", eventType);
61-
await().atMost(ms, MILLISECONDS)
62-
.pollInterval(10, MILLISECONDS)
63-
.until(() -> state.events.stream().anyMatch(event -> event.type.equals(eventType)));
61+
await().alias("waiting for eventtype "+eventType).atMost(ms, MILLISECONDS).pollInterval(10, MILLISECONDS).until(() -> state.events.stream()
62+
.anyMatch(event -> event.type.equals(eventType)));
6463
state.lastEvent = state.events.stream()
6564
.filter(event -> event.type.equals(eventType))
6665
.findFirst();
67-
state.events.removeIf(event -> event.type.equals(eventType));
66+
state.events.clear();
6867
}
6968
}

0 commit comments

Comments
 (0)