Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public static Configuration create(Path agentJarPath, RpConfiguration rpConfigur
+ " so no need to enable it under preview configuration");
}

overlayFromEnv(config);
overlayFromEnv(config, agentJarPath.getParent());
config.sampling.percentage = roundToNearest(config.sampling.percentage, true);
for (SamplingOverride override : config.preview.sampling.overrides) {
override.percentage = roundToNearest(override.percentage, true);
Expand Down Expand Up @@ -355,11 +355,11 @@ public static void logConfigurationWarnMessages() {
}

// visible for testing
static void overlayFromEnv(Configuration config) throws IOException {
static void overlayFromEnv(Configuration config, Path baseDir) throws IOException {
// load connection string from a file if connection string is in the format of
// "${file:mounted_connection_string_file.txt}"
Map<String, StringLookup> stringLookupMap =
Collections.singletonMap(StringLookupFactory.KEY_FILE, FileStringLookup.INSTANCE);
Collections.singletonMap(StringLookupFactory.KEY_FILE, new FileStringLookup(baseDir));
StringLookup stringLookup =
StringLookupFactory.INSTANCE.interpolatorStringLookup(stringLookupMap, null, false);
StringSubstitutor stringSubstitutor = new StringSubstitutor(stringLookup);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,21 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Paths;
import javax.annotation.Nullable;
import java.nio.file.Path;
import org.apache.commons.text.lookup.StringLookup;

final class FileStringLookup implements StringLookup {

static final FileStringLookup INSTANCE = new FileStringLookup();
private final Path baseDir;

FileStringLookup(Path baseDir) {
this.baseDir = baseDir;
}

@Override
@Nullable
public String lookup(String key) {
try {
return new String(Files.readAllBytes(Paths.get(key)), StandardCharsets.UTF_8);
return new String(Files.readAllBytes(baseDir.resolve(key)), StandardCharsets.UTF_8);
} catch (IOException | InvalidPathException e) {
throw new IllegalArgumentException(
"Error occurs when reading connection string from the file '"
Expand All @@ -46,6 +48,4 @@ public String lookup(String key) {
e);
}
}

private FileStringLookup() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -168,31 +169,31 @@ void testRpConfigurationOverlayWithEnvVarAndSysPropPopulated() throws Exception
void testOverlayWithEnvVarWithGoodFileStringLookupFormat() throws Exception {
Configuration configuration = new Configuration();
configuration.connectionString = "${file:" + connectionStringFile.getAbsolutePath() + "}";
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(CONNECTION_STRING);
}

@Test
void testOverlayWithEnvVarWithBadFileStringLookupFormat() throws Exception {
Configuration configuration = new Configuration();
configuration.connectionString = "${file:" + connectionStringFile.getAbsolutePath();
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);

configuration.connectionString = "${xyz:" + connectionStringFile.getAbsolutePath() + "}";
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);

configuration.connectionString = "file:" + connectionStringFile.getAbsolutePath() + "}";
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);

configuration.connectionString = "file:" + connectionStringFile.getAbsolutePath();
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);

configuration.connectionString = CONNECTION_STRING;
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
}

Expand All @@ -206,7 +207,7 @@ void testConnectionStringEnvVarHasHigherPrecedenceOverFileLookup() throws Except

configuration.connectionString =
"${file:" + connectionStringFile.getAbsolutePath() + "}";
ConfigurationBuilder.overlayFromEnv(configuration);
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));

assertThat(configuration.connectionString).isEqualTo(testConnectionString);
});
Expand Down
Loading