Skip to content

Commit a829ca9

Browse files
traskheyams
andauthored
Relative to agent jar (#2105)
* Relative to agent jar * fix * Add test * Better * Fix tests * Add a test Co-authored-by: Helen Yang <[email protected]>
1 parent fed6e81 commit a829ca9

File tree

5 files changed

+70
-54
lines changed

5 files changed

+70
-54
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/configuration/ConfigurationBuilder.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public static Configuration create(Path agentJarPath, RpConfiguration rpConfigur
159159
+ " so no need to enable it under preview configuration");
160160
}
161161

162-
overlayFromEnv(config);
162+
overlayFromEnv(config, agentJarPath.getParent());
163163
config.sampling.percentage = roundToNearest(config.sampling.percentage, true);
164164
for (SamplingOverride override : config.preview.sampling.overrides) {
165165
override.percentage = roundToNearest(override.percentage, true);
@@ -355,11 +355,11 @@ public static void logConfigurationWarnMessages() {
355355
}
356356

357357
// visible for testing
358-
static void overlayFromEnv(Configuration config) throws IOException {
358+
static void overlayFromEnv(Configuration config, Path baseDir) throws IOException {
359359
// load connection string from a file if connection string is in the format of
360360
// "${file:mounted_connection_string_file.txt}"
361361
Map<String, StringLookup> stringLookupMap =
362-
Collections.singletonMap(StringLookupFactory.KEY_FILE, FileStringLookup.INSTANCE);
362+
Collections.singletonMap(StringLookupFactory.KEY_FILE, new FileStringLookup(baseDir));
363363
StringLookup stringLookup =
364364
StringLookupFactory.INSTANCE.interpolatorStringLookup(stringLookupMap, null, false);
365365
StringSubstitutor stringSubstitutor = new StringSubstitutor(stringLookup);

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/configuration/FileStringLookup.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,21 @@
2525
import java.nio.charset.StandardCharsets;
2626
import java.nio.file.Files;
2727
import java.nio.file.InvalidPathException;
28-
import java.nio.file.Paths;
29-
import javax.annotation.Nullable;
28+
import java.nio.file.Path;
3029
import org.apache.commons.text.lookup.StringLookup;
3130

3231
final class FileStringLookup implements StringLookup {
3332

34-
static final FileStringLookup INSTANCE = new FileStringLookup();
33+
private final Path baseDir;
34+
35+
FileStringLookup(Path baseDir) {
36+
this.baseDir = baseDir;
37+
}
3538

3639
@Override
37-
@Nullable
3840
public String lookup(String key) {
3941
try {
40-
return new String(Files.readAllBytes(Paths.get(key)), StandardCharsets.UTF_8);
42+
return new String(Files.readAllBytes(baseDir.resolve(key)), StandardCharsets.UTF_8);
4143
} catch (IOException | InvalidPathException e) {
4244
throw new IllegalArgumentException(
4345
"Error occurs when reading connection string from the file '"
@@ -46,6 +48,4 @@ public String lookup(String key) {
4648
e);
4749
}
4850
}
49-
50-
private FileStringLookup() {}
5151
}

agent/agent-tooling/src/test/java/com/microsoft/applicationinsights/agent/internal/configuration/ConfigurationBuilderTest.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.io.Writer;
3333
import java.nio.file.Files;
3434
import java.nio.file.Path;
35+
import java.nio.file.Paths;
3536
import org.junit.jupiter.api.AfterEach;
3637
import org.junit.jupiter.api.BeforeEach;
3738
import org.junit.jupiter.api.Test;
@@ -168,31 +169,31 @@ void testRpConfigurationOverlayWithEnvVarAndSysPropPopulated() throws Exception
168169
void testOverlayWithEnvVarWithGoodFileStringLookupFormat() throws Exception {
169170
Configuration configuration = new Configuration();
170171
configuration.connectionString = "${file:" + connectionStringFile.getAbsolutePath() + "}";
171-
ConfigurationBuilder.overlayFromEnv(configuration);
172+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
172173
assertThat(configuration.connectionString).isEqualTo(CONNECTION_STRING);
173174
}
174175

175176
@Test
176177
void testOverlayWithEnvVarWithBadFileStringLookupFormat() throws Exception {
177178
Configuration configuration = new Configuration();
178179
configuration.connectionString = "${file:" + connectionStringFile.getAbsolutePath();
179-
ConfigurationBuilder.overlayFromEnv(configuration);
180+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
180181
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
181182

182183
configuration.connectionString = "${xyz:" + connectionStringFile.getAbsolutePath() + "}";
183-
ConfigurationBuilder.overlayFromEnv(configuration);
184+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
184185
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
185186

186187
configuration.connectionString = "file:" + connectionStringFile.getAbsolutePath() + "}";
187-
ConfigurationBuilder.overlayFromEnv(configuration);
188+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
188189
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
189190

190191
configuration.connectionString = "file:" + connectionStringFile.getAbsolutePath();
191-
ConfigurationBuilder.overlayFromEnv(configuration);
192+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
192193
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
193194

194195
configuration.connectionString = CONNECTION_STRING;
195-
ConfigurationBuilder.overlayFromEnv(configuration);
196+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
196197
assertThat(configuration.connectionString).isEqualTo(configuration.connectionString);
197198
}
198199

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

207208
configuration.connectionString =
208209
"${file:" + connectionStringFile.getAbsolutePath() + "}";
209-
ConfigurationBuilder.overlayFromEnv(configuration);
210+
ConfigurationBuilder.overlayFromEnv(configuration, Paths.get("."));
210211

211212
assertThat(configuration.connectionString).isEqualTo(testConnectionString);
212213
});

0 commit comments

Comments
 (0)