Skip to content

Commit 7245963

Browse files
committed
fixup: flakey tests
Signed-off-by: Todd Baert <[email protected]>
1 parent 56e66a5 commit 7245963

File tree

4 files changed

+33
-34
lines changed

4 files changed

+33
-34
lines changed

src/test/java/dev/openfeature/sdk/AlwaysBrokenProvider.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
public class AlwaysBrokenProvider implements FeatureProvider {
66

7+
private final String name = "always broken";
8+
79
@Override
810
public Metadata getMetadata() {
9-
return () -> {
10-
throw new FlagNotFoundError(TestConstants.BROKEN_MESSAGE);
11-
};
11+
return () -> name;
1212
}
1313

1414
@Override

src/test/java/dev/openfeature/sdk/EventsTest.java

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class EventsTest {
2525

2626
@AfterAll
2727
public static void resetDefaultProvider() {
28-
OpenFeatureAPI.getInstance().setProvider(new NoOpProvider());
28+
OpenFeatureAPI.getInstance().setProviderAndWait(new NoOpProvider());
2929
}
3030

3131
@Nested
@@ -49,7 +49,7 @@ void apiInitReady() {
4949

5050
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
5151
OpenFeatureAPI.getInstance().onProviderReady(handler);
52-
OpenFeatureAPI.getInstance().setProvider(name, provider);
52+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
5353
verify(handler, timeout(TIMEOUT).atLeastOnce())
5454
.accept(any());
5555
}
@@ -86,7 +86,7 @@ void apiShouldPropagateEvents() {
8686
final String name = "apiShouldPropagateEvents";
8787

8888
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
89-
OpenFeatureAPI.getInstance().setProvider(name, provider);
89+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
9090
OpenFeatureAPI.getInstance().onProviderConfigurationChanged(handler);
9191

9292
provider.mockEvent(ProviderEvent.PROVIDER_CONFIGURATION_CHANGED, EventDetails.builder().build());
@@ -109,7 +109,7 @@ void apiShouldSupportAllEventTypes() {
109109
final Consumer<EventDetails> handler4 = mockHandler();
110110

111111
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
112-
OpenFeatureAPI.getInstance().setProvider(name, provider);
112+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
113113

114114
OpenFeatureAPI.getInstance().onProviderReady(handler1);
115115
OpenFeatureAPI.getInstance().onProviderConfigurationChanged(handler2);
@@ -149,7 +149,7 @@ void shouldPropagateDefaultAndAnon() {
149149

150150
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
151151
// set provider before getting a client
152-
OpenFeatureAPI.getInstance().setProvider(provider);
152+
OpenFeatureAPI.getInstance().setProviderAndWait(provider);
153153
Client client = OpenFeatureAPI.getInstance().getClient();
154154
client.onProviderStale(handler);
155155

@@ -166,7 +166,7 @@ void shouldPropagateDefaultAndNamed() {
166166

167167
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
168168
// set provider before getting a client
169-
OpenFeatureAPI.getInstance().setProvider(provider);
169+
OpenFeatureAPI.getInstance().setProviderAndWait(provider);
170170
Client client = OpenFeatureAPI.getInstance().getClient(name);
171171
client.onProviderStale(handler);
172172

@@ -195,7 +195,7 @@ void initReadyProviderBefore() {
195195
Client client = OpenFeatureAPI.getInstance().getClient(name);
196196
client.onProviderReady(handler);
197197
// set provider after getting a client
198-
OpenFeatureAPI.getInstance().setProvider(name, provider);
198+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
199199
verify(handler, timeout(TIMEOUT).atLeastOnce())
200200
.accept(argThat(details -> details.getDomain().equals(name)));
201201
}
@@ -209,7 +209,7 @@ void initReadyProviderAfter() {
209209

210210
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
211211
// set provider before getting a client
212-
OpenFeatureAPI.getInstance().setProvider(name, provider);
212+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
213213
Client client = OpenFeatureAPI.getInstance().getClient(name);
214214
client.onProviderReady(handler);
215215
verify(handler, timeout(TIMEOUT).atLeastOnce())
@@ -268,7 +268,7 @@ void shouldPropagateBefore() {
268268

269269
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
270270
// set provider before getting a client
271-
OpenFeatureAPI.getInstance().setProvider(name, provider);
271+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
272272
Client client = OpenFeatureAPI.getInstance().getClient(name);
273273
client.onProviderConfigurationChanged(handler);
274274

@@ -288,7 +288,7 @@ void shouldPropagateAfter() {
288288
Client client = OpenFeatureAPI.getInstance().getClient(name);
289289
client.onProviderConfigurationChanged(handler);
290290
// set provider after getting a client
291-
OpenFeatureAPI.getInstance().setProvider(name, provider);
291+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
292292

293293
provider.mockEvent(ProviderEvent.PROVIDER_CONFIGURATION_CHANGED, EventDetails.builder().build());
294294
verify(handler, timeout(TIMEOUT)).accept(argThat(details -> details.getDomain().equals(name)));
@@ -310,7 +310,7 @@ void shouldSupportAllEventTypes() {
310310
final Consumer<EventDetails> handler4 = mockHandler();
311311

312312
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
313-
OpenFeatureAPI.getInstance().setProvider(name, provider);
313+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
314314
Client client = OpenFeatureAPI.getInstance().getClient(name);
315315

316316
client.onProviderReady(handler1);
@@ -340,14 +340,14 @@ void shouldNotRunHandlers() {
340340

341341
TestEventsProvider provider1 = new TestEventsProvider(INIT_DELAY);
342342
TestEventsProvider provider2 = new TestEventsProvider(INIT_DELAY);
343-
OpenFeatureAPI.getInstance().setProvider(name, provider1);
343+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider1);
344344
Client client = OpenFeatureAPI.getInstance().getClient(name);
345345

346346
// attached handlers
347347
OpenFeatureAPI.getInstance().onProviderConfigurationChanged(handler1);
348348
client.onProviderConfigurationChanged(handler2);
349349

350-
OpenFeatureAPI.getInstance().setProvider(name, provider2);
350+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider2);
351351

352352
// wait for the new provider to be ready and make sure things are cleaned up.
353353
await().until(() -> provider1.isShutDown());
@@ -373,8 +373,8 @@ void otherClientHandlersShouldNotRun() {
373373

374374
TestEventsProvider provider1 = new TestEventsProvider(INIT_DELAY);
375375
TestEventsProvider provider2 = new TestEventsProvider(INIT_DELAY);
376-
OpenFeatureAPI.getInstance().setProvider(name1, provider1);
377-
OpenFeatureAPI.getInstance().setProvider(name2, provider2);
376+
OpenFeatureAPI.getInstance().setProviderAndWait(name1, provider1);
377+
OpenFeatureAPI.getInstance().setProviderAndWait(name2, provider2);
378378

379379
Client client1 = OpenFeatureAPI.getInstance().getClient(name1);
380380
Client client2 = OpenFeatureAPI.getInstance().getClient(name2);
@@ -398,11 +398,11 @@ void boundShouldNotRunWithDefault() {
398398

399399
TestEventsProvider namedProvider = new TestEventsProvider(INIT_DELAY);
400400
TestEventsProvider defaultProvider = new TestEventsProvider(INIT_DELAY);
401-
OpenFeatureAPI.getInstance().setProvider(defaultProvider);
401+
OpenFeatureAPI.getInstance().setProviderAndWait(defaultProvider);
402402

403403
Client client = OpenFeatureAPI.getInstance().getClient(name);
404404
client.onProviderConfigurationChanged(handlerNotToRun);
405-
OpenFeatureAPI.getInstance().setProvider(name, namedProvider);
405+
OpenFeatureAPI.getInstance().setProviderAndWait(name, namedProvider);
406406

407407
// await the new provider to make sure the old one is shut down
408408
await().until(() -> namedProvider.getState().equals(ProviderState.READY));
@@ -411,7 +411,7 @@ void boundShouldNotRunWithDefault() {
411411
defaultProvider.mockEvent(ProviderEvent.PROVIDER_CONFIGURATION_CHANGED, ProviderEventDetails.builder().build());
412412

413413
verify(handlerNotToRun, after(TIMEOUT).never()).accept(any());
414-
OpenFeatureAPI.getInstance().setProvider(new NoOpProvider());
414+
OpenFeatureAPI.getInstance().setProviderAndWait(new NoOpProvider());
415415
}
416416

417417
@Test
@@ -423,7 +423,7 @@ void unboundShouldRunWithDefault() {
423423
final Consumer<EventDetails> handlerToRun = mockHandler();
424424

425425
TestEventsProvider defaultProvider = new TestEventsProvider(INIT_DELAY);
426-
OpenFeatureAPI.getInstance().setProvider(defaultProvider);
426+
OpenFeatureAPI.getInstance().setProviderAndWait(defaultProvider);
427427

428428
Client client = OpenFeatureAPI.getInstance().getClient(name);
429429
client.onProviderConfigurationChanged(handlerToRun);
@@ -435,7 +435,7 @@ void unboundShouldRunWithDefault() {
435435
defaultProvider.mockEvent(ProviderEvent.PROVIDER_CONFIGURATION_CHANGED, ProviderEventDetails.builder().build());
436436

437437
verify(handlerToRun, timeout(TIMEOUT)).accept(any());
438-
OpenFeatureAPI.getInstance().setProvider(new NoOpProvider());
438+
OpenFeatureAPI.getInstance().setProviderAndWait(new NoOpProvider());
439439
}
440440

441441
@Test
@@ -449,7 +449,7 @@ void handlersRunIfOneThrows() {
449449
final Consumer<EventDetails> lastHandler = mockHandler();
450450

451451
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
452-
OpenFeatureAPI.getInstance().setProvider(name, provider);
452+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
453453

454454
Client client1 = OpenFeatureAPI.getInstance().getClient(name);
455455

@@ -473,7 +473,7 @@ void shouldHaveAllProperties() {
473473
final String name = "shouldHaveAllProperties";
474474

475475
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
476-
OpenFeatureAPI.getInstance().setProvider(name, provider);
476+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
477477
Client client = OpenFeatureAPI.getInstance().getClient(name);
478478

479479
// attached handlers
@@ -555,7 +555,7 @@ void matchingErrorEventsMustRunImmediately() {
555555

556556
// provider which is already in error
557557
TestEventsProvider provider = new TestEventsProvider();
558-
api.setProvider(name, provider);
558+
api.setProviderAndWait(name, provider);
559559
provider.emitProviderError(ProviderEventDetails.builder().build());
560560
assertThat(api.getProviderState(name)).isEqualTo(ProviderState.ERROR);
561561

@@ -576,7 +576,7 @@ void mustPersistAcrossChanges() {
576576
TestEventsProvider provider1 = new TestEventsProvider(INIT_DELAY);
577577
TestEventsProvider provider2 = new TestEventsProvider(INIT_DELAY);
578578

579-
OpenFeatureAPI.getInstance().setProvider(name, provider1);
579+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider1);
580580
Client client = OpenFeatureAPI.getInstance().getClient(name);
581581
client.onProviderConfigurationChanged(handler);
582582

@@ -586,8 +586,7 @@ void mustPersistAcrossChanges() {
586586
verify(handler, timeout(TIMEOUT).times(1)).accept(argThat(nameMatches));
587587

588588
// wait for the new provider to be ready.
589-
OpenFeatureAPI.getInstance().setProvider(name, provider2);
590-
await().until(() -> provider2.getState().equals(ProviderState.READY));
589+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider2);
591590

592591
// verify that with the new provider under the same name, the handler is called
593592
// again.
@@ -608,7 +607,7 @@ void removedEventsShouldNotRun() {
608607

609608
TestEventsProvider provider = new TestEventsProvider(INIT_DELAY);
610609
provider.initialize(null);
611-
OpenFeatureAPI.getInstance().setProvider(name, provider);
610+
OpenFeatureAPI.getInstance().setProviderAndWait(name, provider);
612611
Client client = OpenFeatureAPI.getInstance().getClient(name);
613612

614613
// attached handlers

src/test/java/dev/openfeature/sdk/FlagEvaluationSpecTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ void getApiInstance() {
9999

100100
@Specification(number="2.4.5", text="The provider SHOULD indicate an error if flag resolution is attempted before the provider is ready.")
101101
@Test void shouldReturnNotReadyIfNotInitialized() {
102-
FeatureProvider provider = new InMemoryProvider(new HashMap<>()) ;
102+
FeatureProvider provider = new TestEventsProvider(100);
103103
String providerName = "shouldReturnNotReadyIfNotInitialized";
104104
OpenFeatureAPI.getInstance().setProvider(providerName, provider);
105105
assertThat(api.getProviderState(providerName)).isEqualTo(ProviderState.NOT_READY);

src/test/java/dev/openfeature/sdk/HookSpecTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,15 +337,15 @@ void error_stops_before() {
337337
Hook<Boolean> h2 = mockBooleanHook();
338338

339339
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
340-
api.setProvider(new AlwaysBrokenProvider());
340+
api.setProviderAndWait(new AlwaysBrokenProvider());
341341
Client c = api.getClient();
342342

343343
c.getBooleanDetails("key", false, null, FlagEvaluationOptions.builder()
344344
.hook(h2)
345345
.hook(h)
346346
.build());
347-
verify(h, times(1)).before(any(), any());
348-
verify(h2, times(0)).before(any(), any());
347+
verify(h, times(1)).before(any(), any());
348+
verify(h2, times(0)).before(any(), any());
349349
}
350350

351351
@Specification(number = "4.4.6", text = "If an error occurs during the evaluation of before or after hooks, any remaining hooks in the before or after stages MUST NOT be invoked.")

0 commit comments

Comments
 (0)