Skip to content

Commit 4ed951a

Browse files
author
Paul Schellenberg
committed
read WRITE_TO_STDOUT env var to the Configuration object
1 parent d2efe2c commit 4ed951a

File tree

6 files changed

+24
-12
lines changed

6 files changed

+24
-12
lines changed

src/main/java/software/amazon/cloudwatchlogs/emf/config/Configuration.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ public class Configuration {
5959
/** Queue length for asynchronous sinks. */
6060
@Setter @Getter int asyncBufferSize = Constants.DEFAULT_ASYNC_BUFFER_SIZE;
6161

62+
@Setter private boolean shouldWriteToStdout;
63+
6264
public Optional<String> getServiceName() {
6365
return getStringOptional(serviceName);
6466
}
@@ -92,4 +94,8 @@ private Optional<String> getStringOptional(String value) {
9294
}
9395
return Optional.of(value);
9496
}
97+
98+
public boolean shouldWriteToStdout() {
99+
return shouldWriteToStdout;
100+
}
95101
}

src/main/java/software/amazon/cloudwatchlogs/emf/config/ConfigurationKeys.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ public class ConfigurationKeys {
2828
public static final String AGENT_ENDPOINT = "AGENT_ENDPOINT";
2929
public static final String ENVIRONMENT_OVERRIDE = "ENVIRONMENT";
3030
public static final String ASYNC_BUFFER_SIZE = "ASYNC_BUFFER_SIZE";
31+
public static final String WRITE_TO_STDOUT = "WRITE_TO_STDOUT";
3132
}

src/main/java/software/amazon/cloudwatchlogs/emf/config/EnvironmentConfigurationProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ static Configuration createConfig() {
4242
getEnvVar(ConfigurationKeys.AGENT_ENDPOINT),
4343
getEnvironmentOverride(),
4444
getIntOrDefault(
45-
ConfigurationKeys.ASYNC_BUFFER_SIZE, Constants.DEFAULT_ASYNC_BUFFER_SIZE));
45+
ConfigurationKeys.ASYNC_BUFFER_SIZE, Constants.DEFAULT_ASYNC_BUFFER_SIZE),
46+
Boolean.parseBoolean(getEnvVar(ConfigurationKeys.WRITE_TO_STDOUT)));
4647
}
4748

4849
private static Environments getEnvironmentOverride() {

src/main/java/software/amazon/cloudwatchlogs/emf/environment/AgentBasedEnvironment.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,11 @@
3030

3131
@Slf4j
3232
public abstract class AgentBasedEnvironment implements Environment {
33-
private static final String WRITE_TO_STDOUT = "WRITE_TO_STDOUT";
34-
private final boolean shouldWriteToStdout;
3533
private final Configuration config;
3634
private ISink sink;
3735

3836
protected AgentBasedEnvironment(Configuration config) {
3937
this.config = config;
40-
shouldWriteToStdout = Optional.ofNullable(SystemWrapper.getenv(WRITE_TO_STDOUT))
41-
.map(Boolean::parseBoolean)
42-
.orElse(false);
4338
}
4439

4540
@Override
@@ -74,7 +69,7 @@ public String getLogStreamName() {
7469
@Override
7570
public ISink getSink() {
7671
if (sink == null) {
77-
if (shouldWriteToStdout) {
72+
if (config.shouldWriteToStdout()) {
7873
sink = new ConsoleSink();
7974
} else {
8075
Endpoint endpoint;

src/test/java/software/amazon/cloudwatchlogs/emf/config/EnvironmentConfigurationProviderTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public void getGetConfig() {
4040
putEnv("AWS_EMF_AGENT_ENDPOINT", "Endpoint");
4141
putEnv("AWS_EMF_ENVIRONMENT", "Agent");
4242
putEnv("AWS_EMF_ASYNC_BUFFER_SIZE", "9999");
43+
putEnv("AWS_EMF_WRITE_TO_STDOUT", "true");
4344

4445
Configuration config = EnvironmentConfigurationProvider.createConfig();
4546

@@ -50,6 +51,7 @@ public void getGetConfig() {
5051
assertEquals("Endpoint", config.getAgentEndpoint().get());
5152
assertEquals(Environments.Agent, config.getEnvironmentOverride());
5253
assertEquals(9999, config.getAsyncBufferSize());
54+
assertTrue(config.shouldWriteToStdout());
5355
}
5456

5557
@Test
@@ -59,10 +61,20 @@ public void invalidEnvironmentValuesFallbackToExpectedDefaults() {
5961

6062
// act
6163
putEnv("AWS_EMF_ASYNC_BUFFER_SIZE", "NaN");
64+
putEnv("AWS_EMF_WRITE_TO_STDOUT", "notABool");
6265

6366
// assert
6467
Configuration config = EnvironmentConfigurationProvider.createConfig();
6568
assertEquals(100, config.getAsyncBufferSize());
69+
assertFalse(config.shouldWriteToStdout());
70+
}
71+
72+
@Test
73+
public void emptyEnvironmentValuesFallbackToExpectedDefaults() {
74+
// assert
75+
Configuration config = EnvironmentConfigurationProvider.createConfig();
76+
assertEquals(100, config.getAsyncBufferSize());
77+
assertFalse(config.shouldWriteToStdout());
6678
}
6779

6880
private void putEnv(String key, String value) {

src/test/java/software/amazon/cloudwatchlogs/emf/environment/AgentBasedEnvironmentTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ public void testGetSinkWithConfiguredEndpoint() throws Exception {
7171

7272
@Test
7373
public void testGetSinkOverrideToStdOut() {
74-
PowerMockito.mockStatic(SystemWrapper.class);
75-
PowerMockito.when(SystemWrapper.getenv("WRITE_TO_STDOUT")).thenReturn("true");
74+
configuration.setShouldWriteToStdout(true);
7675

7776
AgentBasedEnvironment env = new AgentBasedEnvironmentTestImplementation(configuration);
7877
ISink sink = env.getSink();
@@ -82,9 +81,7 @@ public void testGetSinkOverrideToStdOut() {
8281

8382
@Test
8483
public void testGetSinkOverrideToStdOutFailFastOnImproperOverride() throws Exception {
85-
PowerMockito.mockStatic(SystemWrapper.class);
86-
// Will only override if this env is explicitly "true"
87-
PowerMockito.when(SystemWrapper.getenv("WRITE_TO_STDOUT")).thenReturn("notABool");
84+
configuration.setShouldWriteToStdout(false);
8885

8986
testGetSinkWithDefaultEndpoint();
9087
}

0 commit comments

Comments
 (0)