Skip to content

Commit e6d4057

Browse files
committed
fix e2e tests
Signed-off-by: Konvalinka <lea.konvalinka@dynatrace.com>
1 parent ccf5120 commit e6d4057

File tree

6 files changed

+30
-17
lines changed

6 files changed

+30
-17
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package dev.openfeature.contrib.providers.flagd;
22

33
import dev.openfeature.contrib.providers.flagd.resolver.rpc.cache.CacheType;
4+
import java.util.Arrays;
5+
import java.util.List;
46
import java.util.function.Function;
7+
import java.util.stream.Collectors;
58
import lombok.extern.slf4j.Slf4j;
69

710
/** Helper class to hold configuration default values. */
@@ -36,6 +39,7 @@ public final class Config {
3639
static final String FLAGD_RETRY_BACKOFF_MAX_MS_VAR_NAME = "FLAGD_RETRY_BACKOFF_MAX_MS";
3740
static final String STREAM_DEADLINE_MS_ENV_VAR_NAME = "FLAGD_STREAM_DEADLINE_MS";
3841
static final String SOURCE_SELECTOR_ENV_VAR_NAME = "FLAGD_SOURCE_SELECTOR";
42+
static final String FATAL_STATUS_CODES_ENV_VAR_NAME = "FLAGD_FATAL_STATUS_CODES";
3943
/**
4044
* Environment variable to fetch Provider id.
4145
*
@@ -91,6 +95,16 @@ static long fallBackToEnvOrDefault(String key, long defaultValue) {
9195
}
9296
}
9397

98+
static List<String> fallBackToEnvOrDefaultList(String key, List<String> defaultValue) {
99+
try {
100+
return System.getenv(key) != null ? Arrays.stream(System.getenv(key).split(","))
101+
.map(String::trim)
102+
.collect(Collectors.toList()) : defaultValue;
103+
} catch (Exception e) {
104+
return defaultValue;
105+
}
106+
}
107+
94108
static Resolver fromValueProvider(Function<String, String> provider) {
95109
final String resolverVar = provider.apply(RESOLVER_ENV_VAR);
96110
if (resolverVar == null) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.openfeature.contrib.providers.flagd;
22

33
import static dev.openfeature.contrib.providers.flagd.Config.fallBackToEnvOrDefault;
4+
import static dev.openfeature.contrib.providers.flagd.Config.fallBackToEnvOrDefaultList;
45
import static dev.openfeature.contrib.providers.flagd.Config.fromValueProvider;
56

67
import dev.openfeature.contrib.providers.flagd.resolver.process.storage.connector.QueueSource;
@@ -10,7 +11,6 @@
1011
import io.grpc.ClientInterceptor;
1112
import io.opentelemetry.api.GlobalOpenTelemetry;
1213
import io.opentelemetry.api.OpenTelemetry;
13-
import java.util.ArrayList;
1414
import java.util.List;
1515
import java.util.function.Function;
1616
import lombok.Builder;
@@ -129,7 +129,7 @@ public class FlagdOptions {
129129
* Defaults to empty list
130130
*/
131131
@Builder.Default
132-
private List<String> fatalStatusCodes = new ArrayList<>();
132+
private List<String> fatalStatusCodes = fallBackToEnvOrDefaultList(Config.FATAL_STATUS_CODES_ENV_VAR_NAME, List.of());
133133

134134
/**
135135
* Selector to be used with flag sync gRPC contract.

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/StorageState.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package dev.openfeature.contrib.providers.flagd.resolver.process.storage;
22

3-
/** Satus of the storage. */
3+
/** Status of the storage. */
44
public enum StorageState {
55
/** Storage is upto date and working as expected. */
66
OK,

providers/flagd/src/main/java/dev/openfeature/contrib/providers/flagd/resolver/process/storage/connector/sync/SyncStreamQueueSource.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,13 +141,13 @@ private void observeSyncStream() {
141141
observer.metadata = getMetadata();
142142
} catch (StatusRuntimeException metaEx) {
143143
if (fatalStatusCodes.contains(metaEx.getStatus().getCode().name())) {
144-
//throw new FatalError("Failed to connect for metadata request, not retrying for error " + metaEx.getStatus());
145-
enqueueFatal("Fatal: Failed to connect for metadata request, not retrying for error " + metaEx.getStatus().getCode());
144+
enqueueFatal(String.format("Fatal: Failed to connect for metadata request, not retrying for error %s", metaEx.getStatus().getCode()));
145+
} else {
146+
// retry for other status codes
147+
String message = metaEx.getMessage();
148+
log.debug("Metadata request error: {}, will restart", message, metaEx);
149+
enqueueError(String.format("Error in getMetadata request: %s", message));
146150
}
147-
// retry for other status codes
148-
String message = metaEx.getMessage();
149-
log.debug("Metadata request error: {}, will restart", message, metaEx);
150-
enqueueError(String.format("Error in getMetadata request: %s", message));
151151
shouldThrottle.set(true);
152152
continue;
153153
}
@@ -156,13 +156,12 @@ private void observeSyncStream() {
156156
syncFlags(observer);
157157
} catch (StatusRuntimeException ex) {
158158
if (fatalStatusCodes.contains(ex.getStatus().getCode().toString())) {
159-
//throw new FatalError("Failed to connect for metadata request, not retrying for error " + ex.getStatus().getCode());
160-
enqueueFatal("Fatal: Failed to connect for metadata request, not retrying for error " + ex.getStatus().getCode());
161-
return;
159+
enqueueFatal(String.format("Fatal: Failed to connect for metadata request, not retrying for error %s", ex.getStatus().getCode()));
160+
} else {
161+
// retry for other status codes
162+
log.error("Unexpected sync stream exception, will restart.", ex);
163+
enqueueError(String.format("Error in syncStream: %s", ex.getMessage()));
162164
}
163-
// retry for other status codes
164-
log.error("Unexpected sync stream exception, will restart.", ex);
165-
enqueueError(String.format("Error in syncStream: %s", ex.getMessage()));
166165
shouldThrottle.set(true);
167166
}
168167
} catch (InterruptedException ie) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
@ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "dev.openfeature.contrib.providers.flagd.e2e.steps")
2929
@ConfigurationParameter(key = OBJECT_FACTORY_PROPERTY_NAME, value = "io.cucumber.picocontainer.PicoFactory")
3030
@IncludeTags("in-process")
31-
@ExcludeTags({"unixsocket"})
31+
@ExcludeTags({"unixsocket","sync-port"})
3232
@Testcontainers
3333
public class RunInProcessTest {
3434

providers/flagd/test-harness

0 commit comments

Comments
 (0)