Skip to content

Commit 1d57a58

Browse files
committed
Tests for functionality: Config fallback to properties files
1 parent 6fc69ba commit 1d57a58

3 files changed

Lines changed: 56 additions & 3 deletions

File tree

dd-trace-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,15 @@ public enum PropagationStyle {
191191
@Getter private final List<String> traceExecutors;
192192

193193
@Getter private final boolean traceAnalyticsEnabled;
194-
private static final Properties propertiesFromConfigFile = loadConfigurationFile();
194+
195+
// Values from an optionally provided properties file
196+
private static Properties propertiesFromConfigFile;
195197

196198
// Read order: System Properties -> Env Variables, [-> default value]
197199
// Visible for testing
198200
Config() {
201+
propertiesFromConfigFile = loadConfigurationFile();
202+
199203
runtimeId = UUID.randomUUID().toString();
200204

201205
serviceName = getSettingFromEnvironment(SERVICE_NAME, DEFAULT_SERVICE_NAME);
@@ -868,7 +872,7 @@ private static <V extends Enum<V>> Set<V> convertStringSetToEnumSet(
868872
* @return The {@link Properties} object. the returned instance might be empty of file does not
869873
* exist or if it is in a wrong format.
870874
*/
871-
private static Properties loadConfigurationFile() {
875+
private static synchronized Properties loadConfigurationFile() {
872876
Properties properties = new Properties();
873877

874878
String configurationFilePath =
@@ -892,7 +896,7 @@ private static Properties loadConfigurationFile() {
892896
properties.load(fileReader);
893897
} catch (FileNotFoundException fnf) {
894898
log.error("Configuration file '{}' not found.", configurationFilePath);
895-
} catch (IOException e) {
899+
} catch (IOException ioe) {
896900
log.error(
897901
"Configuration file '{}' cannot be accessed or correctly parsed.", configurationFilePath);
898902
}

dd-trace-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import spock.lang.Specification
88
import static datadog.trace.api.Config.AGENT_HOST
99
import static datadog.trace.api.Config.AGENT_PORT_LEGACY
1010
import static datadog.trace.api.Config.AGENT_UNIX_DOMAIN_SOCKET
11+
import static datadog.trace.api.Config.CONFIGURATION_FILE
1112
import static datadog.trace.api.Config.DEFAULT_JMX_FETCH_STATSD_PORT
13+
import static datadog.trace.api.Config.DEFAULT_SERVICE_NAME
1214
import static datadog.trace.api.Config.GLOBAL_TAGS
1315
import static datadog.trace.api.Config.HEADER_TAGS
1416
import static datadog.trace.api.Config.HTTP_CLIENT_ERROR_STATUSES
@@ -715,4 +717,50 @@ class ConfigTest extends Specification {
715717
then:
716718
config.localRootSpanTags.get('_dd.hostname') == InetAddress.localHost.hostName
717719
}
720+
721+
def "verify fallback to properties file"() {
722+
setup:
723+
System.setProperty(PREFIX + CONFIGURATION_FILE, "src/test/resources/dd-java-tracer.properties")
724+
725+
when:
726+
def config = new Config()
727+
728+
then:
729+
config.serviceName == "set-in-properties"
730+
}
731+
732+
def "verify fallback to properties file has lower priority then system property"() {
733+
setup:
734+
System.setProperty(PREFIX + CONFIGURATION_FILE, "src/test/resources/dd-java-tracer.properties")
735+
System.setProperty(PREFIX + SERVICE_NAME, "set-in-system")
736+
737+
when:
738+
def config = new Config()
739+
740+
then:
741+
config.serviceName == "set-in-system"
742+
}
743+
744+
def "verify fallback to properties file has lower priority then env var"() {
745+
setup:
746+
System.setProperty(PREFIX + CONFIGURATION_FILE, "src/test/resources/dd-java-tracer.properties")
747+
environmentVariables.set("DD_SERVICE_NAME", "set-in-env")
748+
749+
when:
750+
def config = new Config()
751+
752+
then:
753+
config.serviceName == "set-in-env"
754+
}
755+
756+
def "verify fallback to properties file that does not exist does not crash app"() {
757+
setup:
758+
System.setProperty(PREFIX + CONFIGURATION_FILE, "src/test/resources/do-not-exist.properties")
759+
760+
when:
761+
def config = new Config()
762+
763+
then:
764+
config.serviceName == 'unnamed-java-app'
765+
}
718766
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dd.service.name=set-in-properties

0 commit comments

Comments
 (0)