Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public final class Config {
static final String RESOLVER_ENV_VAR = "FLAGD_RESOLVER";
static final String HOST_ENV_VAR_NAME = "FLAGD_HOST";
static final String PORT_ENV_VAR_NAME = "FLAGD_PORT";
static final String SYNC_PORT_ENV_VAR_NAME = "FLAGD_SYNC_PORT";
static final String TLS_ENV_VAR_NAME = "FLAGD_TLS";
static final String DEFAULT_AUTHORITY_ENV_VAR_NAME = "FLAGD_DEFAULT_AUTHORITY";
static final String SOCKET_PATH_ENV_VAR_NAME = "FLAGD_SOCKET_PATH";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,8 +254,18 @@ void prebuild() {
}

if (port == 0 && resolverType != Config.Resolver.FILE) {
port = Integer.parseInt(
fallBackToEnvOrDefault(Config.PORT_ENV_VAR_NAME, determineDefaultPortForResolver()));
if (resolverType == Config.Resolver.IN_PROCESS) {
port = Integer.parseInt(
fallBackToEnvOrDefault(
Config.SYNC_PORT_ENV_VAR_NAME,
fallBackToEnvOrDefault(Config.PORT_ENV_VAR_NAME, determineDefaultPortForResolver())
)
);
} else {
port = Integer.parseInt(
fallBackToEnvOrDefault(Config.PORT_ENV_VAR_NAME, determineDefaultPortForResolver())
);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,27 @@ void testInProcessProviderFromEnv_portConfigured_usesConfiguredPort() {
assertThat(flagdOptions.getPort()).isEqualTo(1000);
}

@Test
@SetEnvironmentVariable(key = RESOLVER_ENV_VAR, value = RESOLVER_IN_PROCESS)
@SetEnvironmentVariable(key = "FLAGD_SYNC_PORT", value = "1005")
void testInProcessProvider_usesSyncPortEnvVarWhenSet() {
FlagdOptions flagdOptions = FlagdOptions.builder().build();

assertThat(flagdOptions.getResolverType()).isEqualTo(Resolver.IN_PROCESS);
assertThat(flagdOptions.getPort()).isEqualTo(1005);
}

@Test
@SetEnvironmentVariable(key = RESOLVER_ENV_VAR, value = RESOLVER_IN_PROCESS)
@SetEnvironmentVariable(key = "FLAGD_PORT", value = "5000")
void testInProcessProvider_fallsBackToFlagdPortWhenSyncPortNotSet(){
FlagdOptions flagdOptions = FlagdOptions.builder().build();

assertThat(flagdOptions.getResolverType()).isEqualTo(Resolver.IN_PROCESS);
assertThat(flagdOptions.getPort()).isEqualTo(5000);
}


@Test
@SetEnvironmentVariable(key = RESOLVER_ENV_VAR, value = RESOLVER_RPC)
void testRpcProviderFromEnv_noPortConfigured_defaultsToCorrectPort() {
Expand Down
Loading