-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathTestEventsProvider.java
107 lines (90 loc) · 3.41 KB
/
TestEventsProvider.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package dev.openfeature.sdk.testutils;
import dev.openfeature.sdk.EvaluationContext;
import dev.openfeature.sdk.EventProvider;
import dev.openfeature.sdk.Metadata;
import dev.openfeature.sdk.ProviderEvaluation;
import dev.openfeature.sdk.ProviderEvent;
import dev.openfeature.sdk.ProviderEventDetails;
import dev.openfeature.sdk.ProviderState;
import dev.openfeature.sdk.Value;
import dev.openfeature.sdk.exceptions.GeneralError;
public class TestEventsProvider extends EventProvider {
private boolean initError = false;
private String initErrorMessage;
private ProviderState state = ProviderState.NOT_READY;
private boolean shutDown = false;
private int initTimeoutMs = 0;
private String name = "test";
private Metadata metadata = new Metadata() {
@Override
public String getName() {
return name;
}
};
@Override
public ProviderState getState() {
return this.state;
}
public TestEventsProvider(int initTimeoutMs) {
this.initTimeoutMs = initTimeoutMs;
}
public TestEventsProvider(int initTimeoutMs, boolean initError, String initErrorMessage) {
this.initTimeoutMs = initTimeoutMs;
this.initError = initError;
this.initErrorMessage = initErrorMessage;
}
public TestEventsProvider(ProviderState initialState) {
this.state = initialState;
}
public void mockEvent(ProviderEvent event, ProviderEventDetails details) {
emit(event, details);
}
public boolean isShutDown() {
return this.shutDown;
}
@Override
public void shutdown() {
this.shutDown = true;
}
@Override
public void initialize(EvaluationContext evaluationContext) throws Exception {
if (ProviderState.NOT_READY.equals(state)) {
// wait half the TIMEOUT, otherwise some init/errors can be fired before we add handlers
Thread.sleep(initTimeoutMs);
if (this.initError) {
this.state = ProviderState.ERROR;
throw new GeneralError(initErrorMessage);
}
this.state = ProviderState.READY;
}
}
@Override
public Metadata getMetadata() {
return this.metadata;
}
@Override
public ProviderEvaluation<Boolean> getBooleanEvaluation(String key, Boolean defaultValue,
EvaluationContext ctx) {
throw new UnsupportedOperationException("Unimplemented method 'getBooleanEvaluation'");
}
@Override
public ProviderEvaluation<String> getStringEvaluation(String key, String defaultValue,
EvaluationContext ctx) {
throw new UnsupportedOperationException("Unimplemented method 'getStringEvaluation'");
}
@Override
public ProviderEvaluation<Integer> getIntegerEvaluation(String key, Integer defaultValue,
EvaluationContext ctx) {
throw new UnsupportedOperationException("Unimplemented method 'getIntegerEvaluation'");
}
@Override
public ProviderEvaluation<Double> getDoubleEvaluation(String key, Double defaultValue,
EvaluationContext ctx) {
throw new UnsupportedOperationException("Unimplemented method 'getDoubleEvaluation'");
}
@Override
public ProviderEvaluation<Value> getObjectEvaluation(String key, Value defaultValue,
EvaluationContext ctx) {
throw new UnsupportedOperationException("Unimplemented method 'getObjectEvaluation'");
}
};